Another bash script to monitor if there were any failed connections to the backend’s.
It is a simple aproach using the command:
varnishstat -1 -f backend_fail
Then it puts the output on a tmp file and next time it runs it checks if it is still having erros on the backend.
when configuring on nagios do not check more then once, every 5min.

Here is the code:

#!/bin/bash
# bash simple script to get the varnish 3 hit_ratio
# by Felipe Ferreira Mar/2014
if [ $# -ne 2 ]; then
# set default hit_ratio thresholds
CRIT=5
WARN=1
else
CRIT=$1
WARN=$2
fi
L="/tmp/backend_fail.log"  #log de antes
LN="/tmp/backend_fail_now.log" #log de agora
function sai(){
	echo $MSG
	/bin/cp -f $LN $L
	exit $E
}
if [ ! -f  $L ];then
	echo "0" > $L
	echo "0" > $LN
	echo "FILE $L NOT FOUND"
fi
varnishstat -1  -f backend_fail |awk '{ print $2}'>$LN
B=`tail -1 $L`
N=`tail -1 $LN`
if [ "$N" -eq "$B" ]; then
	MSG="OK - No erros found on backend|erros=0"
	E=0
	D=0
	sai
else
	#count diff
	D=`echo $N - $B |bc`
fi
MSG="$D erros on backend|erros=${D}"
if [ "$D" -ge "$CRIT" ]; then
	MSG="CRITICAL - $MSG"
	E=2
	sai
fi
if [ "$D" -ge "$WARN" ]; then
	MSG="WARNING - $MSG"
	E=1
	sai
else
	MSG="OK - $MSG"
	E=0
	sai
fi

Another way to do the same thing, is to have varnishlog running and analise the output

Here is the code:

#!/bin/bash
# Verifica se acounteceu algum erro com o backend do tipo 500 (Service Unavailable)
# A cada cheque zera a contagem
# ARGUMENTOS: WARNING CRITICAL TRUE for debuging
TMP="/tmp/logiis.tmp"
STATE_OK=0
STATE_WARNING=1
STATE_CRITICAL=2
STATE_UNKOWN=3
PID=0
WARN=50
CRIT=100
PID=`ps -ef |grep  "Unavailable -w" |grep -v grep |awk '{ print $2 }' |head -n 1`
if [ $# -gt 1 ]; then
        WARN=$1
        CRIT=$2
fi
if [ "$3" == "true" ]; then
  set -x
fi
#Verifica se o Varnishlog esta executando
if [ -n "$PID"  ]; then
	cnterros=`strings /tmp/logiis.tmp | wc -l`
        #Zero o arquivo mas continua rodando o varnishlog
        `> $TMP`
else
        printf  "UNKOWN - Varnishlog"$PID" nao encontrado.Executando varnishlog command"
       `nohup varnishlog -I Unavailable -w "$TMP" >& /dev/null &`
        exit $STATE_UNKOWN
fi
if [ "$cnterros" -ge "$CRIT" ] ; then
        printf  "CRTICAL - Existem $cnterros erros no IIS|IIS_Erros=$cnterros,$WARN,$CRIT"
        exit $STATE_CRITICAL
elif [ "$cnterros" -ge "$WARN" ] ; then
        printf "WARNING - Existem $cnterros erros no IIS|IIS_Erros=$cnterros,$WARN,$CRIT"
        exit $STATE_WARNING
elif [ "$cnterros" -le "$WARN" ]; then
        printf "OK - Existem $cnterros erros no backend de IIS|IIS_Erros=$cnterros,$WARN,$CRIT"
        exit $STATE_OK
fi
Tags: , , , ,

Leave a Reply

Your email address will not be published. Required fields are marked *