mirror of
https://github.com/munin-monitoring/contrib.git
synced 2025-07-30 12:54:50 +00:00
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)
111 lines
2.7 KiB
Bash
Executable file
111 lines
2.7 KiB
Bash
Executable file
#!/bin/bash
|
|
# 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`
|
|
title=`echo ${name} | awk -F_ '{print $NF}'`
|
|
SVNAME='BACKEND'
|
|
LIST=$backend
|
|
|
|
|
|
|
|
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
|
|
}
|
|
|
|
|
|
|
|
##
|
|
## Main
|
|
##
|
|
|
|
graph_title="${title} sessions by servers"
|
|
graph_vlabel=${title}
|
|
|
|
if [ "$1" = "autoconf" ]; then
|
|
echo yes
|
|
exit 0
|
|
fi
|
|
|
|
|
|
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
|
|
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
|