forked from evolix/ansible-roles
Added a new nagios-nrpe plugin: check_vrrpd
This commit is contained in:
parent
cd9e17e8f6
commit
08a98e0bd5
94
nagios-nrpe/files/plugins/check_vrrpd
Executable file
94
nagios-nrpe/files/plugins/check_vrrpd
Executable 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
|
Loading…
Reference in a new issue