Projet

Général

Profil

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

root / plugins / haproxy / haproxy_responses_backend @ 09b88141

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

1 706e7e91 ricardo
#!/bin/bash
2
# -*- bash -*-
3
4
: << =cut
5
6
=head1 NAME
7
8
haproxy_responses_backend -Haproxy responses backend
9
10
=head1 CONFIGURATION
11
12 09b88141 Lars Kruse
  [haproxy*]
13 706e7e91 ricardo
  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 4f29ff59 rfrail3
  # 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 706e7e91 ricardo
21
=head1 AUTHOR
22
23 0541fdd1 ricardo
Ricardo Fraile <rikr_@hotmail.com>
24 706e7e91 ricardo
25
=head1 LICENSE
26
27 a717a913 rfrail3
GPLv2
28 706e7e91 ricardo
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 0541fdd1 ricardo
	# Modificamos la variable if, al final se vuelve a dejar igual
40 706e7e91 ricardo
	OIFS=$IFS;
41
	IFS=",";
42
	PXNAME="$1"
43
	SVNAME="$2"
44
	VALUE="$3"
45 4f29ff59 rfrail3
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 706e7e91 ricardo
56
	ARRAY1=($LINE1);
57
58 0541fdd1 ricardo
	# Recorremos el array buscando los valores esperados
59 706e7e91 ricardo
	for ((i=0; i<${#ARRAY1[@]}; ++i));
60
	do
61 0541fdd1 ricardo
        	# Si coincide con el valor, sacar el dato
62 706e7e91 ricardo
	        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 0541fdd1 ricardo
	# se deja la variable igual
70 706e7e91 ricardo
	IFS=$OIFS;
71
}
72
73
74
SVNAME='BACKEND'
75
LIST=$backend
76
77
if [ "$1" = "autoconf" ]; then
78 17f78427 Lars Kruse
	echo yes
79 706e7e91 ricardo
	exit 0
80
fi
81
82
if [ "$1" = "config" ]; then
83
84
	echo "graph_title HTTP Responses ${SVNAME}"
85
	echo 'graph_args --base 1000 -l 0 '
86
	echo 'graph_vlabel Responses'
87
	echo 'graph_scale no'
88 a3c2338b dipohl
	echo 'graph_category loadbalancer'
89 706e7e91 ricardo
	echo "graph_info HTTP Responses ${SVNAME}"
90
91
	for i in ${LIST}; do
92
	        echo "hrsp_1xx`echo $i | md5sum | cut -d - -f1 | sed 's/ //g'`.label HTTP 1xx $i"
93
        	echo "hrsp_1xx`echo $i | md5sum | cut -d - -f1 | sed 's/ //g'`.type DERIVE"
94
	        echo "hrsp_1xx`echo $i | md5sum | cut -d - -f1 | sed 's/ //g'`.min 0"
95
        	echo "hrsp_1xx`echo $i | md5sum | cut -d - -f1 | sed 's/ //g'`.info HTTP responses with 1xx code $i"
96
97
	        echo "hrsp_2xx`echo $i | md5sum | cut -d - -f1 | sed 's/ //g'`.label HTTP 2xx $i"
98
        	echo "hrsp_2xx`echo $i | md5sum | cut -d - -f1 | sed 's/ //g'`.type DERIVE"
99
	        echo "hrsp_2xx`echo $i | md5sum | cut -d - -f1 | sed 's/ //g'`.min 0"
100
        	echo "hrsp_2xx`echo $i | md5sum | cut -d - -f1 | sed 's/ //g'`.info HTTP responses with 2xx code $i"
101
102
	        echo "hrsp_3xx`echo $i | md5sum | cut -d - -f1 | sed 's/ //g'`.label HTTP 3xx $i"
103
        	echo "hrsp_3xx`echo $i | md5sum | cut -d - -f1 | sed 's/ //g'`.type DERIVE"
104
	        echo "hrsp_3xx`echo $i | md5sum | cut -d - -f1 | sed 's/ //g'`.min 0"
105
        	echo "hrsp_3xx`echo $i | md5sum | cut -d - -f1 | sed 's/ //g'`.info HTTP responses with 3xx code $i"
106
107
	        echo "hrsp_4xx`echo $i | md5sum | cut -d - -f1 | sed 's/ //g'`.label HTTP 4xx $i"
108
        	echo "hrsp_4xx`echo $i | md5sum | cut -d - -f1 | sed 's/ //g'`.type DERIVE"
109
	        echo "hrsp_4xx`echo $i | md5sum | cut -d - -f1 | sed 's/ //g'`.min 0"
110
        	echo "hrsp_4xx`echo $i | md5sum | cut -d - -f1 | sed 's/ //g'`.info HTTP responses with 4xx code $i"
111
112
	        echo "hrsp_5xx`echo $i | md5sum | cut -d - -f1 | sed 's/ //g'`.label HTTP 5xx $i"
113
        	echo "hrsp_5xx`echo $i | md5sum | cut -d - -f1 | sed 's/ //g'`.type DERIVE"
114
	        echo "hrsp_5xx`echo $i | md5sum | cut -d - -f1 | sed 's/ //g'`.min 0"
115
        	echo "hrsp_5xx`echo $i | md5sum | cut -d - -f1 | sed 's/ //g'`.info HTTP responses with 5xx code $i"
116
117
	        echo "hrsp_other`echo $i | md5sum | cut -d - -f1 | sed 's/ //g'`.label HTTP other $i"
118
        	echo "hrsp_other`echo $i | md5sum | cut -d - -f1 | sed 's/ //g'`.type DERIVE"
119
	        echo "hrsp_other`echo $i | md5sum | cut -d - -f1 | sed 's/ //g'`.min 0"
120
        	echo "hrsp_other`echo $i | md5sum | cut -d - -f1 | sed 's/ //g'`.info HTTP responses with other codes $i"
121
122
123
	done
124
125
	exit 0
126
fi
127
	for i in ${LIST}; do
128
		H1xx=`parse_url ${i} ${SVNAME} hrsp_1xx`
129
		H2xx=`parse_url ${i} ${SVNAME} hrsp_2xx`
130
		H3xx=`parse_url ${i} ${SVNAME} hrsp_3xx`
131
		H4xx=`parse_url ${i} ${SVNAME} hrsp_4xx`
132
		H5xx=`parse_url ${i} ${SVNAME} hrsp_5xx`
133
		Hoxx=`parse_url ${i} ${SVNAME} hrsp_other`
134
	        echo "hrsp_1xx`echo $i | md5sum | cut -d - -f1 | sed 's/ //g'`.value $H1xx"
135
	        echo "hrsp_2xx`echo $i | md5sum | cut -d - -f1 | sed 's/ //g'`.value $H2xx"
136
	        echo "hrsp_3xx`echo $i | md5sum | cut -d - -f1 | sed 's/ //g'`.value $H3xx"
137
	        echo "hrsp_4xx`echo $i | md5sum | cut -d - -f1 | sed 's/ //g'`.value $H4xx"
138
	        echo "hrsp_5xx`echo $i | md5sum | cut -d - -f1 | sed 's/ //g'`.value $H5xx"
139 0541fdd1 ricardo
	        echo "hrsp_other`echo $i | md5sum | cut -d - -f1 | sed 's/ //g'`.value $Hoxx"
140 706e7e91 ricardo
	done