Projet

Général

Profil

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

root / plugins / haproxy / haproxy-sessions-by-servers @ 17f78427

Historique | Voir | Annoter | Télécharger (2,7 ko)

1
#!/bin/bash
2
# Allan Parsons (allan.parsons@gmail.com)
3
# This was a rewrite by Allan Parsons
4
#
5
# Original Author: Pasha "p01nt" Klets <pasha@klets.name>
6
#
7

    
8
##DEBUGDEBUG
9
#MUNIN_LIBDIR=/usr/share/munin
10
#. $MUNIN_LIBDIR/plugins/plugin.sh
11
#socket="/var/run/haproxy.sock"
12

    
13

    
14

    
15
name=`basename $0`
16
title=`echo ${name} | awk -F_ '{print $NF}'`
17
SVNAME='BACKEND'
18
LIST=$backend
19

    
20

    
21

    
22
function parse_url {
23
	# Modify ifs variable
24
	OIFS=$IFS;
25
	IFS=",";
26
	PXNAME="$1"
27
	SVNAME="$2"
28
	VALUE="$3"
29
	if [ ! -z "$4" ]; then
30
	   SERVERNAME="$4"
31
	fi
32

    
33
        if [ ! -z "$url" ]; then
34
                LINE1=`curl -s "$url" | head -1 | sed 's/# //'`
35
                LINE2=`curl -s "$url" | grep "$PXNAME" | grep -v "$PXNAME,$SVNAME" | tr ',' ' '`
36
        fi
37

    
38
        if [ ! -z "$socket" ]; then
39
                LINE1=`echo "show stat" | socat unix-connect:"$socket" stdio | head -1 | sed 's/# //'`
40
                LINE2=`echo "show stat" | socat unix-connect:"$socket" stdio | grep "$PXNAME" | grep -v "$PXNAME,$SVNAME" | tr ',' ' '`
41

    
42
		#echo $CMD
43
		#exit
44
        fi
45

    
46

    
47
	ARRAY1=($LINE1);
48
	if [ ! -z $SERVERNAME ]; then
49
		# Find values
50
		for ((i=0; i<${#ARRAY1[@]}; ++i));
51
		do
52
	        	# Get data
53
		        if [[ "${ARRAY1[$i]}" == "${VALUE}" ]]; then
54
		                o=$i;
55
	        	        o=`expr $o + 1`
56
				RVAL=`echo ${LINE2} | grep ${SERVERNAME} | cut -d" " -f $o`
57
		        fi
58
		done
59
	else
60
		RVAL=`echo 'show stat' | socat unix-connect:"$socket" stdio | grep "$PXNAME" | grep -v "$PXNAME,$SVNAME" | tr ',' ' ' | awk '{print $2}'`
61
	fi
62
	# Reset ifs
63
	IFS=$OIFS;
64

    
65
	## return val
66
	echo $RVAL
67
}
68

    
69

    
70

    
71
##
72
## Main
73
##
74

    
75
graph_title="${title} sessions by servers"
76
graph_vlabel=${title}
77

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

    
83

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

    
86
	echo "graph_category loadbalancer"
87
	echo "graph_title  ${graph_title}"
88
	echo "graph_vlabel ${graph_vlabel}"
89
	#echo "graph_printf %.0f"
90

    
91
	for i in ${LIST}; do
92
		SERVERLIST=$(parse_url ${i} ${SVNAME} svname)
93
		for s in $SERVERLIST; do
94
	        echo "hsessionsbyservers_$s_`echo $i_$s | md5sum | cut -d - -f1 | sed 's/ //g'`.label $s"
95
        	echo "hsessionsbyservers_$s_`echo $i_$s | md5sum | cut -d - -f1 | sed 's/ //g'`.type DERIVE"
96
			echo "hsessionsbyservers_$s_`echo $i_$s | md5sum | cut -d - -f1 | sed 's/ //g'`.info Active Sessions for $s"
97
			echo "hsessionsbyservers_$s_`echo $i_$s | md5sum | cut -d - -f1 | sed 's/ //g'`.min 0"
98
			#echo "hsessionsbyservers_$s_`echo $i_$s | md5sum | cut -d - -f1 | sed 's/ //g'`.draw AREASTACK"
99
        done
100
    done
101

    
102
    exit 0
103
fi
104

    
105

    
106
for i in ${LIST}; do
107

    
108
	SERVERLIST=$(parse_url ${i} ${SVNAME} svname)
109

    
110
	for s in $SERVERLIST; do
111
		val=$(parse_url ${i} ${SVNAME} scur ${s})
112
        echo "hsessionsbyservers_$s_`echo $i_$s | md5sum| cut -d - -f1 | sed 's/ //g'`.value ${val}"
113
    done
114
done