Überprüfung der "Ergebniss-Frische"


Einleitung

Nagios beinhaltet ein Feature, dass die "Frische" der Ergebnisse der Dienst-Überprüfungen überwacht. Dieses Feature ist nützlich, wenn Sie sicherstellen wollen, dass passive Überprüfungen auch genau so regelmässig erhalten, wie Sie wollen. Obwohl die Frische-Überwachung in vielen Situationen eingesetzt werden kann, ist sie hauptsächlich für eine verteilte Überwachungs-Umgebung nützlich.

Der Sinn der Frische-Überprüfung ist es, sicherzustellen, dass Nagios regelmässig die Ergebnisse von passiven Dienst-Überprüfungen übermittelt bekommt. Falls die Ergebnisse einer bestimmten Dienst-Überprüfung (für die die Frische-Überprüfung aktiviert wurde) als "schal" erkannt werden, wird Nagios eine aktive Überprüfung des Dienstes erzwingen.

Frische-Überprüfung konfigurieren

Bevor man den Frische-Schwellwert für jeden einzelnen Dienst konfigurieren kann, muss man die Frische-Überprüfung aktivieren, indem man die check_service_freshness- und freshness_check_interval-Direktiven in der Haupt-Konfigurationsdatei benutzt.

Aber wie aktiviert man die Frische-Überprüfung für einen bestimmten Dienst? Man kann grundsätzlich nur die Frische-Überprüfung für Dienste aktivieren, wenn man die Template-basierten Objekt-Konfigurationsdateien benutzt.

Wenn Sie die Template-basierten Objekt-Konfigurationsdateien benutzt, müssen Sie die Dienste wie folgt definieren:

Wie der Frische-Schwellwert arbeitet

Nagios überprüft periodisch die "Frische" der Ergebnisse für alle Dienste, für die die Frische-Überprüfung aktiviert wurde. Die freshness_threshold-Option in jeder Dienst-Definition wird genutzt, um für jeden Dienst zu erkennen, wie frisch das Ergebnis des Dienstes ist.
Wir nehmen beispielsweise an, die freshness_threshold-Option ist für einen der Dienste auf "5" und die interval_length-Directive ist auf 60 Sekunden gesetzt. Nagios wird dann jedes Ergebnis für diesen Dienst als "schal" kennzeichnen, wenn dieses älter als 5 Minuten ist. Falls man für die freshness_threshold-Option keinen Wert angibt (oder sie auf null setzt), wird Nagios automatisch einen Schwellwert für die Ergebniss-Frische errechnen, indem es auf die normal_check_interval- oder retry_check_interval-Option schaut (abhängig davon, in welcher Art von Status sich der Dienst momentan befindet).

Was passiert, wenn Ergebnisse eines Dienstes als "schal" erkannt werden

Falls das Ergebnis einer Dienst-Überprüfung, wie zuvor beschrieben, als "schal" befunden wird, wird Nagios, wie durch die check_command-Option in der Dienst-Definition angegeben, eine aktive Überprüfung des Dienstes erzwingen. Es ist wichtig zu beachten, dass eine aktive Dienst-Überprüfung, die aufgrund eines "schales" Ergebnisses erzwungen wurde, sogar dann ausgeführt wird, wenn aktive Dienst-Überprüfungen programmweit oder Dienst-spezifisch deaktiviert wurden.

Mit ausschliesslich passiven Überprüfungen

Wie zuvor erwähnt, wird die Frische-Überprüfung hauptsächlich benutzt, wenn man es mit Diensten zu tun hat, die ihre Ergebnisse von passiven Überprüfungen erhalten. "Ausschliesslich passive Überprüfungen" werden z.B. in verteilten Überwachungs-Umgebungen) benutzt, da die hier konfigurierten alle ihre Ergebnisse von passiven Überprüfungen beziehen und keine aktiven Überprüfungen ausgeführt werden.

Ein Beispiel eines ausschliesslich passiv überprüften Dienstes könnte z.B. über den Status des nächtlichen Backup-Jobs berichten. In diesem Fall hätte man ein externes Skript, das die Ergebnisse des Backup-Jobs an Nagios übermittelt nachdem das Backup fertiggestellt wurde. In diesem Fall werden alle Ergebnisse der Überprüfungen von einer externen Applikation durch passive Dienst-Überprüfungen zur Verfügung gestellt. Um sicherzustellen, dass der Status des Backup-Jobs jeden Tag berichtet wird, sollte man die Frische-Überprüfung für diesen Dienst aktivieren. Wenn das externe Skript einmal nicht den Status des Backup-Jobs berichtet, kann man Nagios so konfigurieren, dass es einen CRITICAL-Status ausgibt:

Dies ist die Definition des Dienstes der den Backup-Job beschreibt ()... Here's what the definition for the service might look like.

define service{
	host_name		backup-server
	service_description	ArcServe Backup Job
	active_checks_enabled	0			; aktive Überprüfungen sind NICHT aktiviert
	passive_checks_enabled	1			; passive Überprüfungen sind aktiviert (so werden die Ergebnisse übermittelt)
	check_freshness		1
	freshness_threshold	93600			; 26 Stunden Schwellwert, da Backups nicht immer zum gleichen Zeitpunkt fertig werden
	check_command		no-backup-report	; dieser Befehl wird nur ausgeführt, wenn das Ergebnis des Dienstes als "schal" erkannt wird
	...andere Optionen...
	}

Man beachte das aktive Überprüfungen für diesen Dienst deaktiviert sind. Dies ist nötig, da die Ergebnisse für diesen Dienst nur durch eine externe Applikation geliefert werden. Die Frische-Überprüfung ist aktiviert und der Schwellwert für die Frische ist auf 26 Stunden gesetzt. Dies ist etwas länger als 24 Stunden, da Backup-Jobs manchmal spät von einem in den nächsten Tag hinein laufen (abhängig davon, wieviel Daten der Server backupen muss oder welche Backup-Geschwindigkeiten über das Netzwerk möglich sind). Der no-backup-report-Befehl wird nur dann ausgeführt, wenn die Ergebnisse des Dienstes als "schal" erkannt werden. Die Definition des no-backup-report-Befehl könnte wie folgt aussehen...

define command{
	command_name	no-backup-report
	command_line	/usr/local/nagios/libexec/nobackupreport.sh
	}

Das nobackupreport.sh-Skript in dem /usr/local/nagios/libexec-Verzeichnis könnte wie folgt aussehen:

#!/bin/sh

/bin/echo "CRITICAL: Keine Ergebnisse vom Backup-Job übertragen!"

exit 2

Wenn Nagios erkennt, dass das Ergebnis der Dienst-Überprüfung veraltet ist, wird es den no-backup-report-Befehl als eine aktive Dienst-Überprüfung ausführen (auch wenn aktive Überprüfungen für diesen spezifischen Dienst deaktiviert wurden). Wird das /usr/local/nagios/libexec/nobackupreport.sh-Skript ausgeführt, gibt es einen CRITICAL-Status zurück. Der Dienst wechselt in einen kritischen Status (falls der Dienst sich noch nicht in diesem Status befindet), wodurch evtl. eine Kontaktperson über das Problem benachrichtigt wird.