Projet

Général

Profil

Paste
Télécharger au format
Statistiques
| Branche: | Révision:

root / plugins / haproxy / haproxy_queue_backend @ 4f29ff59

Historique | Voir | Annoter | Télécharger (3,86 ko)

1
#!/bin/bash
2
# -*- bash -*-
3

    
4
: << =cut
5

    
6
=head1 NAME
7

    
8
haproxy_queue_backend -Haproxy Queued Requests Backend
9

    
10
=head1 CONFIGURATION
11

    
12
[haproxy*]
13
  user root
14
  env.backend backend_name_1 backend_name_2 backend_name_3
15
  env.frontend frontend_name_1 frontend_name_2 frontend_name_3
16
  # You can use url o socket option, use one of them, not both!
17
    env.url  http://user:passwd@IP:port/admin?stats;csv
18
  #  or
19
    env.socket /var/lib/haproxy/stats.socket
20

    
21
=head1 AUTHOR
22

    
23
Ricardo Fraile <rfrail3@yahoo.es>
24

    
25
=head1 LICENSE
26

    
27
GPLv2
28

    
29
=head1 MAGICK MARKERS
30

    
31
 #%# family=auto
32
 #%# capabilities=autoconf
33

    
34
=cut
35

    
36
. $MUNIN_LIBDIR/plugins/plugin.sh
37

    
38
function parse_url {
39
        # Modify ifs variable
40
        OIFS=$IFS;
41
        IFS=",";
42
        PXNAME="$1"
43
        SVNAME="$2"
44
        VALUE="$3"
45
        
46
        if [ ! -z "$url" ]; then
47
                LINE1=`curl -s "$url" | head -1 | sed 's/# //'`
48
                LINE2=`curl -s "$url" | grep "$PXNAME,$SVNAME"`
49
        fi
50

    
51
        if [ ! -z "$socket" ]; then
52
                LINE1=`echo 'show stat' | socat unix-connect:"$socket" stdio | head -1 | sed 's/# //'`
53
                LINE2=`echo 'show stat' | socat unix-connect:"$socket" stdio | grep "$PXNAME,$SVNAME"`
54
        fi
55
        
56
        ARRAY1=($LINE1);
57

    
58
        # Find values
59
        for ((i=0; i<${#ARRAY1[@]}; ++i));
60
        do
61
                # Get data
62
                if [[ "${ARRAY1[$i]}" == "${VALUE}" ]]; then
63
                        o=$i;
64
                        o=`expr $o + 1`
65
                        echo ${LINE2} | cut -d" " -f $o
66
                fi
67
        done
68

    
69
        # Reset ifs
70
        IFS=$OIFS;
71
}
72

    
73

    
74
SVNAME='BACKEND'
75
LIST=$backend
76
WARN_PERCENT="80"
77

    
78

    
79

    
80
if [ "$1" = "autoconf" ]; then
81
	echo yes 
82
	exit 0
83
fi
84

    
85
if [ "$1" = "config" ]; then
86

    
87
	echo "graph_title Queued Request ${SVNAME}"
88
	echo 'graph_args --base 1000 -l 0 '
89
	echo 'graph_vlabel Queued'
90
	echo 'graph_scale no'
91
	echo 'graph_category haproxy'
92
	echo "graph_info Queue Requests ${SVNAME}"
93

    
94

    
95
	for i in ${LIST}; do
96
	        echo "qcur`echo $i | md5sum | cut -d - -f1 | sed 's/ //g'`.label Current queued request $i"
97
        	echo "qcur`echo $i | md5sum | cut -d - -f1 | sed 's/ //g'`.type GAUGE"
98
	        echo "qcur`echo $i | md5sum | cut -d - -f1 | sed 's/ //g'`.min 0"
99
        	echo "qcur`echo $i | md5sum | cut -d - -f1 | sed 's/ //g'`.info Current queued request $i"
100

    
101
	        #echo "qmax`echo $i | md5sum | cut -d - -f1 | sed 's/ //g'`.label Max $i"
102
        	#echo "qmax`echo $i | md5sum | cut -d - -f1 | sed 's/ //g'`.type GAUGE"
103
	        #echo "qmax`echo $i | md5sum | cut -d - -f1 | sed 's/ //g'`.min 0"
104
        	#echo "qmax`echo $i | md5sum | cut -d - -f1 | sed 's/ //g'`.info Max queued request $i"
105
		
106
		echo "qlim`echo $i | md5sum | cut -d - -f1 | sed 's/ //g'`.label Limit request `echo $i | awk -F. '{print $NF}'`"
107
                echo "qlim`echo $i | md5sum | cut -d - -f1 | sed 's/ //g'`.type GAUGE"
108
                echo "qlim`echo $i | md5sum | cut -d - -f1 | sed 's/ //g'`.min 0"
109
                echo "qlim`echo $i | md5sum | cut -d - -f1 | sed 's/ //g'`.info Limit request `echo $i | awk -F. '{print $NF}'`"
110

    
111
		QLIM=`parse_url ${i} ${SVNAME} qlimit`
112
                if [[ "$QLIM" =~ ^[0-9]+$ ]] && [[ "$QLIM" != 0 ]]; then
113
                        echo "qcur`echo $i | md5sum | cut -d - -f1 | sed 's/ //g'`.critical $QLIM"
114
                fi
115

    
116
                if [[ "$QLIM" =~ ^[0-9]+$ ]] && [[ "$QLIM" != 0 ]]; then
117
                        echo "qcur`echo $i | md5sum | cut -d - -f1 | sed 's/ //g'`.warning $((${QLIM}*${WARN_PERCENT}/100))"
118
                fi
119
	done
120

    
121
	exit 0
122
fi
123
	for i in ${LIST}; do
124
		QCUR=`parse_url ${i} ${SVNAME} qcur`
125
		#QMAX=`parse_url ${i} ${SVNAME} qmax`
126
		QLIM=`parse_url ${i} ${SVNAME} qlimit`
127

    
128
	        echo "qcur`echo $i | md5sum | cut -d - -f1 | sed 's/ //g'`.value $QCUR"
129
		echo "qlim`echo $i | md5sum | cut -d - -f1 | sed 's/ //g'`.value $QLIM"
130
        	#echo "qmax`echo $i | md5sum | cut -d - -f1 | sed 's/ //g'`.value $QMAX"
131
	done
132
	
133