#!/bin/bash
# Author G. Georgiev hipo@pc-freak.net (C) 11.01.2022
# script gets last 10 minutes from haproxy.log to /var/tmp/temp and processes and shows CC / CD / CC Flags Interrupted connections
# for a set of predefined IP addresses assigned to different customers in partners_list.conf
# useful to set on userparameter and send to zabbix-server for graphs on interrupted connections to haproxy

# https://www.pc-freak.net

logfile=/var/log/haproxy.log;
# make sure /var/tmp/temp is user:grouped with zabbix:zabbix
tempfile=/var/tmp/temp
# load customers config config
source ./partners_list.conf

# nullify previous temp file
>$tempfile
# dump last 10 minutes to $tempfile
awk -vDate=`date -d'now-10 minutes' +[%d/%b/%Y:%H:%M:%S` '$4 > Date {print Date, $0}' $logfile >> /var/tmp/temp
##exit 0;
##function returnValue(){
#                sum=0
#                count=0
#
#                for i in `cat /var/tmp/temp`; do sum="$sum+$i"; count=`expr $count + 1`; done
#                sum=$(echo $sum | bc)  > /var/tmp/temp
#                #echo "Sum=$sum"
##
#                       > /var/tmp/temp
#                echo $sum
#}
#returnValue;

#exit 0;

while read line; do

for i in $line; do
newline=$(echo $i | sed "s/,/ /g" | sed "s#=# #g";);
var_name=$(echo $newline |awk '{ print $1 }';);
var_name_ips=$(echo $newline |sed -e 's#$var_name##g');
##echo $var_name;
for f in  $var_name_ips; do
#echo $var_name;
var_name_ip=$(echo  $f | sed -e "s#$var_name##g" -e 's#"##g' -e 's#;##g');
#echo $var_name_ip
if [ ! -z $var_name_ip ];  then
#echo beep
###echo $var_name grep $var_name_ip $tempfile CC/CD/CR
###echo '$var_name CC';

# check for CC status msgs
if [ $(grep "$var_name_ip" $tempfile | grep "CC" |wc -l) != 0 ]; then
echo "$var_name $var_name_ip CC $(grep "$var_name_ip" $tempfile | grep "CC" |wc -l)";
else
echo "$var_name $var_name_ip No CC interrupted connections found last 10 minutes";
fi

# check for CD status msgs
if [ $(grep "$var_name_ip" $tempfile | grep "CD" |wc -l) != 0 ]; then
echo "$var_name $var_name_ip CD $(grep "$var_name_ip" $tempfile | grep "CD" |wc -l)";
else
echo "$var_name $var_name_ip No CD interrupted connections found last 10 minutes";

fi

# check for CR status msgs
if [ $(grep "$var_name_ip" $tempfile | grep "CR" |wc -l) != 0 ]; then
echo "$var_name $var_name_ip CR $(grep "$var_name_ip" $tempfile | grep "CR" |wc -l)";
else
echo "$var_name $var_name_ip No CR interrupted connections found last 10 minutes";
fi


fi

#echo grep -eI 'CC|CD|CR' $var_name /var/log/haproxy.log

done

done

done < /usr/local/bin/partners_list.conf

cat /dev/null> $tempfile

