mirror of
https://github.com/munin-monitoring/contrib.git
synced 2025-07-22 14:16:00 +00:00
Update haproxy-sessions-by-servers
Updated haproxy-sessions-by-servers to look at the current sessions by individual servers. I believe this was the original intent of the script (it was broken by default when symlinking it in /etc/munin/plugins/ (/etc/munin/plugins/haproxy-sessions-by-servers). NOW SUPPORTS: - URL + Socket Stats - Dynamic list of individual backend member servers - tested / works with munin-node NUANCES: - may be annoying with an absurd number of backend member nodes (I have 10 on this particular haproxy instance)
This commit is contained in:
parent
538cdc9359
commit
825cb21450
1 changed files with 96 additions and 30 deletions
|
@ -1,45 +1,111 @@
|
||||||
#!/bin/sh
|
#!/bin/bash
|
||||||
# Pasha "p01nt" Klets <pasha@klets.name>
|
# Allan Parsons (allan.parsons@gmail.com)
|
||||||
|
|
||||||
|
##DEBUGDEBUG
|
||||||
|
#MUNIN_LIBDIR=/usr/share/munin
|
||||||
|
#. $MUNIN_LIBDIR/plugins/plugin.sh
|
||||||
|
#socket="/var/run/haproxy.sock"
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
name=`basename $0`
|
name=`basename $0`
|
||||||
title=`echo ${name} | awk -F_ '{print $NF}'`
|
title=`echo ${name} | awk -F_ '{print $NF}'`
|
||||||
|
SVNAME='BACKEND'
|
||||||
|
LIST=$backend
|
||||||
|
|
||||||
hp_stat() {
|
|
||||||
echo "show stat" | socat unix-connect:/tmp/haproxy stdio
|
|
||||||
|
function parse_url {
|
||||||
|
# Modify ifs variable
|
||||||
|
OIFS=$IFS;
|
||||||
|
IFS=",";
|
||||||
|
PXNAME="$1"
|
||||||
|
SVNAME="$2"
|
||||||
|
VALUE="$3"
|
||||||
|
if [ ! -z "$4" ]; then
|
||||||
|
SERVERNAME="$4"
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [ ! -z "$url" ]; then
|
||||||
|
LINE1=`curl -s "$url" | head -1 | sed 's/# //'`
|
||||||
|
LINE2=`curl -s "$url" | grep "$PXNAME,$SVNAME"`
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [ ! -z "$socket" ]; then
|
||||||
|
LINE1=`echo "show stat" | socat unix-connect:"$socket" stdio | head -1 | sed 's/# //'`
|
||||||
|
LINE2=`echo "show stat" | socat unix-connect:"$socket" stdio | grep "$PXNAME" | grep -v "$PXNAME,$SVNAME" | tr ',' ' '`
|
||||||
|
|
||||||
|
CMD="echo show stat | socat unix-connect:$socket stdio | grep $PXNAME | grep -v PXNAME,$SVNAME"
|
||||||
|
#echo $CMD
|
||||||
|
#exit
|
||||||
|
fi
|
||||||
|
|
||||||
|
|
||||||
|
ARRAY1=($LINE1);
|
||||||
|
if [ ! -z $SERVERNAME ]; then
|
||||||
|
# Find values
|
||||||
|
for ((i=0; i<${#ARRAY1[@]}; ++i));
|
||||||
|
do
|
||||||
|
# Get data
|
||||||
|
if [[ "${ARRAY1[$i]}" == "${VALUE}" ]]; then
|
||||||
|
o=$i;
|
||||||
|
o=`expr $o + 1`
|
||||||
|
RVAL=`echo ${LINE2} | grep ${SERVERNAME} | cut -d" " -f $o`
|
||||||
|
fi
|
||||||
|
done
|
||||||
|
else
|
||||||
|
RVAL=`echo 'show stat' | socat unix-connect:"$socket" stdio | grep "$PXNAME" | grep -v "$PXNAME,$SVNAME" | tr ',' ' ' | awk '{print $2}'`
|
||||||
|
fi
|
||||||
|
# Reset ifs
|
||||||
|
IFS=$OIFS;
|
||||||
|
|
||||||
|
## return val
|
||||||
|
echo $RVAL
|
||||||
}
|
}
|
||||||
|
|
||||||
servers_section() {
|
|
||||||
hp_stat | grep '^'${title}',' | egrep -v '^'${title}',(FRONTEND|BACKEND)'
|
|
||||||
}
|
|
||||||
|
|
||||||
servers() {
|
|
||||||
servers_section | awk -F, '{print $2}'
|
|
||||||
}
|
|
||||||
|
|
||||||
labels() {
|
##
|
||||||
servers_section | awk -F, '{print $2".label "$2"\n"$2".type GAUGE\n"$2".draw AREASTACK"}'
|
## Main
|
||||||
}
|
##
|
||||||
|
|
||||||
values() {
|
|
||||||
servers_section | awk -F, '{print $2".value "$5}'
|
|
||||||
}
|
|
||||||
|
|
||||||
graph_title="${title} sessions by servers"
|
graph_title="${title} sessions by servers"
|
||||||
graph_vlabel=${title}
|
graph_vlabel=${title}
|
||||||
|
|
||||||
case $1 in
|
if [ "$1" = "autoconf" ]; then
|
||||||
config)
|
echo yes
|
||||||
cat <<EOF
|
|
||||||
graph_category haproxy
|
|
||||||
graph_title ${graph_title}
|
|
||||||
graph_vlabel ${graph_vlabel}
|
|
||||||
|
|
||||||
`labels`
|
|
||||||
EOF
|
|
||||||
exit 0
|
exit 0
|
||||||
;;
|
fi
|
||||||
esac
|
|
||||||
|
|
||||||
values
|
|
||||||
|
if [ "$1" = "config" ]; then
|
||||||
|
|
||||||
|
echo "graph_category haproxy"
|
||||||
|
echo "graph_title ${graph_title}"
|
||||||
|
echo "graph_vlabel ${graph_vlabel}"
|
||||||
|
echo "graph_printf %.0f"
|
||||||
|
|
||||||
|
for i in ${LIST}; do
|
||||||
|
SERVERLIST=$(parse_url ${i} ${SVNAME} svname)
|
||||||
|
for s in $SERVERLIST; do
|
||||||
|
echo "hsessionsbyservers_$s_`echo $i_$s | md5sum | cut -d - -f1 | sed 's/ //g'`.label $s"
|
||||||
|
echo "hsessionsbyservers_$s_`echo $i_$s | md5sum | cut -d - -f1 | sed 's/ //g'`.type DERIVE"
|
||||||
|
echo "hsessionsbyservers_$s_`echo $i_$s | md5sum | cut -d - -f1 | sed 's/ //g'`.info Active Sessions for $s"
|
||||||
|
echo "hsessionsbyservers_$s_`echo $i_$s | md5sum | cut -d - -f1 | sed 's/ //g'`.min 0"
|
||||||
|
#echo "hsessionsbyservers_$s_`echo $i_$s | md5sum | cut -d - -f1 | sed 's/ //g'`.draw AREASTACK"
|
||||||
|
done
|
||||||
|
done
|
||||||
|
|
||||||
exit 0
|
exit 0
|
||||||
|
fi
|
||||||
|
|
||||||
|
|
||||||
|
for i in ${LIST}; do
|
||||||
|
|
||||||
|
SERVERLIST=$(parse_url ${i} ${SVNAME} svname)
|
||||||
|
|
||||||
|
for s in $SERVERLIST; do
|
||||||
|
val=$(parse_url ${i} ${SVNAME} scur ${s})
|
||||||
|
echo "hsessionsbyservers_$s_`echo $i_$s | md5sum| cut -d - -f1 | sed 's/ //g'`.value ${val}"
|
||||||
|
done
|
||||||
|
done
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue