Eventhandler

restart_by_eventhandler
restart_by_eventhandler
restart_by_eventhandler.sh
Version: 0.0.1
7.6 KiB
47 Downloads
Details

Monitoring ohne einen passenden Eventhandler ist kein Vollständiges Monitoring. Selbstverständliche soll ein Monitoringsystem auch versuchen, mögliche Fehler zu beheben in dem es ein oder mehrmals versucht, das Problem durch einen Neustart eines betroffenen Services zu beheben. Erst wenn dies nicht gelingt wird ein verantwortlicher kontaktiert.

Aus diesem Grund benötigen wir, um das Monitoring abzurunden, einen passendes Eventhandler Script.

Das hier angebotene, verfügt über eine erweiterte Funktionalität. Es ist in der Lage, sagen wir mal zwichen 0300 und 0530 seine Dienste zu unterbrechen. 0300-0530 sind im Script voreingestellt.

#############################################################
## DISABLE EVENTHANDLER BETWEEN TIME_DISABLE AND TIME_ENABLE
## BETWEEN THIS TIMEPERIOD SEND OK PASSIVE CHECKS INTO
## NAGIOS CMD
#############################################################
TIME_DISABLE="03:00"
TIME_ENABLE="05:30"

## ------------------------------

 Hintergrund:
Es gibt Zeiten, in denn man ein System in einen geplanten “Maintanace” Modus versetzen muss um automatisierte Arbeiten zb. durch UC4 durchführen zu lassen. Während dieser Zeit darf ein Prozess nicht neu gestartet werden, da die Automatisierung dadurch in einen undefinierten Zustand gelangen kann. Um dies zu verhindern, bietet Nagios selbst keinen adäquaten Lösungsansatz. Deshalb ist diese Funktionalität in den Eventhandler integriert. Dieser macht aber noch mehr, denn auch wenn er den Service nicht neu starten kann würde der Status nach dem Automatisierungsprozess evtl. ebenso undefiniert sein. Deshalb schickt der Eventhandler anstelle eines restarts nun einen Passivecheck in die nagios CMD und suggeriert so die einwandfreie Funktionalität des Prozesses. Dies macht er bis zum Ablauf der inaktiven Zeitperiode um 0530. Jetzt arbeitet er wieder ganz normal und könnte nun als SOFT 1 ein Problem erkennen und dieses versuchen zu beheben.

## SENDING OK FOR SERVICE TO NAGIOS CMD
printf "[%lu] PROCESS_SERVICE_CHECK_RESULT;${HOST};${SERVICE_DESC};${RETURN_CODE};RESETTED BY EVENTHANDLER\n" $( date +%s ) | tee -a $NAGIOS_CMD_SOCKET

Der Eventhandler kann sowohl für nrpe als auch für ssh Aktionen verwendet werden. Dafür muss im Script USE_BINARY entsprechend gesetzt sein. Dies geschieht über die eventhandler_commands.cfg.

## POSSIBLE :: ssh|nrpe"
## WIRD ÜBER DIE commands.cfg FESTGELEGT
USE_BINARY="$1"

Um Mails erhalten zu können muss ebenfalls eine passende Mailadresse hinterlegt sein.

CONTACTEMAIL=""


In jedem Fall jedoch, protokolliert der Eventhandler jede seiner Aktionen in den Syslog mit dem TAG :: EVENTHANDLER

eventhandler_commands.cfg

define command{
        command_name                    restart_by_nrpe
        command_line                    $USER2$/restart_by_eventhandler.sh nrpe $SERVICESTATE$ $SERVICESTATETYPE$ $SERVICEATTEMPT$ $HOSTADDRESS$ "$ARG1$" "$ARG2$"  "$ARG3$" "$SERVICEDESC$"
##                                                          1        2                  3               4              5           6        7           8          9
}
define command{
        command_name                    restart_by_ssh
        command_line                    $USER2$/restart_by_eventhandler.sh ssh $SERVICESTATE$ $SERVICESTATETYPE$ $SERVICEATTEMPT$ $HOSTADDRESS$ "$ARG1$" "$ARG2$"  "$ARG3$" "$SERVICEDESC$"
##                                                          1        2                  3               4              5           6        7           8          9
}

USAGE:

USAGE :: restart_by_eventhandler.sh <nrpe|ssh> <CRITICAL> <SOFT|HARD> <2|3> <SERVER> <SERVICE>

Vor dem ersten Einsatz
sind noch folgende paramter im Script auf die eingene Umgebung anzupassen

SSH_BINARY="/usr/bin/ssh"
SSH_KEY="/var/lib/nagios/.ssh/id_rsa"
SSH_COMMAND="/usr/bin/timeout 10 /usr/bin/sudo /opt/scripts/nagios/plugins/eventhandler/restart.sh"

NRPE_BINARY="/usr/lib/nagios/plugins/check_nrpe"
NRPE_PORT="5666"

NAGIOS_CMD_SOCKET='/var/spool/nagios/nagios.cmd'

 

Remote Restart Script ( restart.sh )

#!/bin/bash

PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin

SERVICE="$1"
if [ ! ${SERVICE} ]; then
        echo "NOTHING TO DO. NO SERVICE GIVEN"
        exit 1
elif [ "${SERVICE}" = "reboot" ]; then
        sudo /sbin/reboot &
else
        service ${SERVICE} stop
        sleep 3

        ps -ef | grep ${SERVICE} | grep -v grep 2>/dev/null 1>/dev/null
        if [ $? -eq 0 ]; then
                /usr/bin/killall -9 ${SERVICE}
        fi

        service ${SERVICE} start
fi

##########################################
## SPECIAL VALUES
##########################################
NAGIOS_TRIGGER="/var/tmp/._event.result"
[[ -f ${NAGIOS_TRIGGER} ]] && rm -f ${NAGIOS_TRIGGER}