Added a new nagios-nrpe plugin: check_vrrpd
All checks were successful
continuous-integration/drone/push Build is passing

This commit is contained in:
Jérémy Dubois 2019-10-29 14:40:21 +01:00
parent cd9e17e8f6
commit 08a98e0bd5

View file

@ -0,0 +1,94 @@
#!/bin/bash
# README
#
# Variable to adjust : is_master and vrrpd_processes.
# vrrpd_processes is the number of vrrpd processes that should run on the server.
# is_master defines whether the vrrpd group should be master (1) or backup (0).
#
# If some instances have to be master and some other have to be backup,
# then the value of is_master is 2 and the states has to be precised in arguments.
# e.g. : ./check_vrrpd master backup master
# The order is defined by the output order of `ps auwx | grep vrrp`
RC=0
IFS='
'
is_master=2 # 1 if master ; 0 if backup ; 2 if mixed master and backup, in this case, it has to be precised in arguments
vrrpd_processes=3 # number of vrrpd processes that should be running
is_vrrpd_running=$(sudo /usr/lib/nagios//plugins/check_procs -C vrrpd -c $vrrpd_processes:$vrrpd_processes)
rc_is_vrrpd_running=$?
IP_vrrpd=($(for i in $(ps auwx | grep vrrpd | grep -v grep | grep -v check); do echo $i | awk '{print $--NF}'; done))
INT_vrrpd=($(for i in $(ps auwx | grep vrrpd | grep -v grep | grep -v check); do echo $i | awk '{print $13}'; done))
ID_vrrpd=($(for i in $(ps auwx | grep vrrpd | grep -v grep | grep -v check); do echo $i | awk '{print $19}'; done))
if [[ $rc_is_vrrpd_running -ne 0 ]]; then
echo $is_vrrpd_running instead of $vrrpd_processes
exit 2
fi
for i in $(seq 0 $((${#ID_vrrpd[*]}-1))); do
ifconfig vrrp_${ID_vrrpd[$i]}_${INT_vrrpd[$i]} >/dev/null 2>&1
# If has interface
if [[ $? -eq 0 ]]; then
# If has to be master : OK
if [[ $is_master -eq 1 ]]; then
echo OK - ${IP_vrrpd[$i]} exists and is master
# If has to be backup : KO
elif [[ $is_master -eq 0 ]]; then
echo CRITICAL - ${IP_vrrpd[$i]} exists whereas it should be backup
RC=2
# We retrieve the state it should be from args
elif [[ $is_master -eq 2 ]]; then
arg=$(($i+1))
state=${!arg}
# If has to be master : OK
if [[ $state = master ]]; then
echo OK - ${IP_vrrpd[$i]} exists and is master
# If has to be backup : KO
elif [[ $state = backup ]]; then
echo CRITICAL - ${IP_vrrpd[$i]} exists whereas it should be backup
RC=2
else
echo "CRITICAL - The arguments have to be master or backup. Exiting"
exit 2
fi
# Unknown
else
RC=3
fi
# If hasn't interface
elif [[ $? -ne 0 ]]; then
# If has to be master : KO
if [[ $is_master -eq 1 ]]; then
echo CRITICAL - ${IP_vrrpd[$i]} does not exist whereas it should be master
RC=2
# If has to be backup : OK
elif [[ $is_master -eq 0 ]]; then
echo OK - ${IP_vrrpd[$i]} is backup
# We retrieve the state it should be from args
elif [[ $is_master -eq 2 ]]; then
arg=$(($i+1))
state=${!arg}
# If has to be master : KO
if [[ $state = master ]]; then
echo CRITICAL - ${IP_vrrpd[$i]} does not exist whereas it should be master
RC=2
# If has to be backup : OK
elif [[ $state = backup ]]; then
echo OK - ${IP_vrrpd[$i]} is backup
else
echo "CRITICAL - The arguments have to be master or backup. Exiting"
exit 2
fi
# Unknown
else
RC=3
fi
# Unknown
else
RC=3
fi
done
exit $RC