Dienstag, 25. September 2012

Recheck eines Nagioschecks

So, meine 2 Wochen Urlaub sind rum. Also vielleicht auch mal wieder Zeit was zu schreiben. Heute morgen bin ich über ein altes Skript gestolpert welches für einen kleinen Post genau das Richtige zu sein scheint.

Wir checken zB den Debian Paketstatus einmal am Tag. Kommen jetzt über Nacht ganz viele dieser Updates, so haben wir für 24 Stunden ein schönes rotes Nagios. Also macht man Updates und rechecked den Service, alleine schon wegen der Übersicht. Aber muss man das von Hand machen? Nö!

#!/bin/bash
# kickrecheck.sh 
# by j AT xadmin DOT info

if [ -z "$1" ];
then
echo "Please tell me which check to kick by usage: sh kickrecheck.sh <service>"
else
for host in `grep 'host_name=' /var/nagios/rw/status.dat | cut -f 2 -d "=" | sort | uniq`
do
/usr/bin/printf "[%lu] SCHEDULE_SVC_CHECK;${host};$1;1110741500\n" `date +%s` > /var/nagios/rw/nagios.cmd
done
fi

Der einfache Aufruf sh kickrecheck.sh apt sorgt nun dafür das alle apt services auf jedem Server neu gechecked werden.

Geht natürlich auch mit anderen :-)
UPDATE!:

Was Squeeze da anscheinend ein wenig anders macht
nagiosserver ~ # locate status.dat
/var/cache/nagios3/status.dat
nagiosserver ~ # locate nagios.cmd
/var/lib/nagios3/rw/nagios.cmd
Also
#!/bin/bash
# by j AT xadmin DOT info

if [ -z "$1" ];
then
echo "Please tell me which check to kick by usage: sh kickrecheck.sh <service>"
else
for host in `grep 'host_name=' /var/cache/nagios3/status.dat | cut -f 2 -d "=" | sort | uniq`
do
/usr/bin/printf "[%lu] SCHEDULE_SVC_CHECK;${host};$1;1110741500\n" `date +%s` > /var/lib/nagios3/rw/nagios.cmd
done
fi