#!/bin/sh TMP=`mktemp` EPOCH_HOUR_AGO=$(( $(date +%s) - 3600 )) exit_unknown() { msg="$1" echo "${msg}" exit 3 } find_nagios_log() { # Try to locate the nagios log, fallback to messages log for log in /var/log/nagios/nagios.log /var/log/nagios3/nagios.log /var/spool/nagios/nagios.log \ /usr/local/nagios/var/nagios.log do if [ -e "${log}" ]; then echo ${log} return 0 fi done return 3 } LOG=$(find_nagios_log) || exit_unknown "Unable to locate logfile for parsing" tail -n 1 ${LOG} &> ${TMP} || exit_unknown "Unable to parse logfile: $(cat ${TMP})" tail -n 2000 ${LOG} | \ awk "BEGIN { FS=\"[\\\\[\\\\]]\" } \$2 > ${EPOCH_HOUR_AGO} {print \$0}" | \ grep "Passive check result was received" | \ grep -i "could not be found" | \ sed 's/.*Passive check result was received for service //' | \ sed 's/, but the host could not be found.*//' | \ sort | uniq > $TMP LINES=`cat $TMP | wc -l` PERFDATA="'ghost_services'=$LINES" if [ $LINES -gt 0 ]; then echo "$LINES ghost services found in Nagios log files | $PERFDATA" echo "" cat $TMP rm -f $TMP exit 1 fi echo "No ghost services found in Nagios log files | $PERFDATA" rm -f $TMP exit 0