Benutzer-Werkzeuge

Webseiten-Werkzeuge


nagios_mit_dynamischem_check-intervall

Dies ist eine alte Version des Dokuments!


Nagios mit dynamischem Check-Intervall

Nagios checkt normalerweise die Services und Hosts in festen Intervallen. Dabei können Services und Hosts zwei Status annehmen, „SOFT state“ und „HARD state“. Sobald Nagios eine Status-Änderung feststellt, wird der Check in einen „SOFT state“ gesetzt. In der Nagios-Config ist dann festgelegt, nach wie vielen Wiederholungen aus diesem „SOFT state“ dann ein „HARD state“ wird. Beispiel:

define service{
host_name               A Host
service_description     A Service
normal_check_interval   5
retry_check_interval    1
max_check_attempts      5
}

Zur Verdeutlichung:

Schematische Darstellung Der Service ist also zunächst im „HARD state“, bis Nagios eine Änderung feststellt und diesen in den „SOFT state“ setzt. Nun kommen die Parameter max_check_attempts und retry_check_interval zum Tragen um den neuen Status zu bestätigen. Im o.g. Beispiel ändert Nagios nun den Check-Interval vom 5-Minuten-Rhythmus (normal_check_interval) auf einen minütlichen Rhythmus (retry_check_interval). Sobald der neue Status oft genug bestätigt wurde (max_check_attempts), also in unserem Beispiel nach beim 5ten Mal, wird aus dem „SOFT state“ ein sogenannter „HARD state“. Ab jetzt gilt dann wieder der normal_check_interval, also hier 5 Minuten.

Problemstellung

Der oben beschriebene Weg bis zur Feststellung eines Problems funktioniert wie gewünscht und kann über die Konfiguration gut den Gegebenheiten im Unternehmen (z.B. SLAs) angepasst werden. Gerade wenn man aber Nagios auch für ein SLA-Reporting benutzen will, hat man ein Problem beim Weg „heraus“ aus der Fehlersituation. Hat Nagios nun wie oben beschrieben die Fehlersituation festgestellt und als „HARD state“ bestätigt, wird ja üblicherweise alarmiert und das Problem hoffentlich schnell beseitigt. Bis Nagios das Ende dieser „Downtime“ nun feststellt, läuft jetzt aber der normal_check_interval und so werden in unserem Beispiel möglicherweise 4 Minuten zusätzlicher „Downtime“ protokolliert, wenn z.B. eine Minute nach dem letzten Nagios-Check das Problem beseitigt wurde. Noch gravierender für die Statistik wird's, wenn der normal_check_interval z.B. auf 15 Minuten hochgesetzt wird.

Lösung

Nagios wird quasi „zur Laufzeit“ durch ein EventHandler Skript umkonfiguriert, so dass bei einem Service-Fehler der normal_check_interval auf 1 Minute herabgesetzt wird. Kehrt dieser Service wieder zu OK zurück, wird auch der Interval wieder auf 5 Minuten „hochgedreht“.

Hierzu werden folgende Schritte notwendig:

1. Anlegen des EventHandler Skript:

#!/bin/bash
 
now=`date +%s`
commandfile='/var/nagios/rw/nagios.cmd'
 
case "$1" in
OK)
/usr/bin/printf "[%lu] CHANGE_NORMAL_SVC_CHECK_INTERVAL;$2;$3;5\n" $now
> $commandfile
;;
WARNING)
/usr/bin/printf "[%lu] CHANGE_NORMAL_SVC_CHECK_INTERVAL;$2;$3;1\n" $now
> $commandfile
;;
UNKNOWN)
;;
CRITICAL)
/usr/bin/printf "[%lu] CHANGE_NORMAL_SVC_CHECK_INTERVAL;$2;$3;1\n" $now
> $commandfile
;;
esac
 
exit 0

2. Definieren eines Commands

define command {
command_name    change_check_interval
command_line    $USER1$/eventhandlers/change_check_interval.sh $SERVIC
ESTATE$ $HOSTNAME$ $SERVICEDESC$
}

3. Definieren des Eventhandlers am Service

define service{
use                     generic-service
host_name               nagiostest
service_description     HTTP
check_command           check_http!-H 127.0.0.1 -s "Welcome"
event_handler           change_check_interval   # <--
}

Quellen

nagios_mit_dynamischem_check-intervall.1433095578.txt.gz · Zuletzt geändert: 2015/05/31 20:06 von admin