Einleitung
Es gab viele Fragen, wie genau die Benachrichtigungen von Nagios funktionieren. Dieser Abschnitt versucht genau zu erklären, wie Host- und Dienst-Benachrichtigungen ausgesendet werden, und wer benachrichtigt wird.
Index
Wann treten Benachrichtigungen auf?
Wer wird benachrichtigt?
Welche Filter müssen von einer Benachrichtigung durchlaufen werden, um versandt zu werden?
Warum werden die Benachrichtigungs-Techniken nicht direkt in Nagios integriert?
Nützliche Quellen
Wann treten Benachrichtigungen auf?
Die Entscheidung eine Benachrichtigung auszusenden wird in der Dienst- bzw. Host-Überprüfungs-Logik selbst getroffen. Host- und Dienst-Benachrichtigungen treten unter den folgenden Umständen auf...
Jede Dienst-Definition hat eine <contact_groups>-Option, die angibt welche Kontaktgruppe Benachrichtigungen für den entsprechenden Dienst erhält. Jede Kontaktgruppe enthält einen oder mehrere einzelne Kontakte. Wenn Nagios eine Dienst-Benachrichtigung aussendet, wird es jeden Kontakt, der ein Mitglied in den mit der <contactgroups>-Option angegebenen Kontaktgruppen ist, informieren. Nagios realisiert eigenständig, dass ein Kontakt Mitglied in mehreren Kontaktgruppen sein kann und entfernt doppelte Kontakt-Informationen, bevor es die Benachrichtigungen aussendet.
Jeder Host kann zu einer oder auch mehreren Hostgruppen gehören. Jede Hostgruppe wiederum hat eine <contact_groups>-Option, die angibt welche Kontaktgruppen eine Benachrichtigung für Hostprobleme von Hosts der entsprechenden Hostgruppe erhalten. Wenn Nagios eine Host-Benachrichtigung aussendet, wird es jeden Kontakt, der ein Mitglied in den mit der <contactgroups>-Option angegebenen Kontaktgruppen ist, informieren. Nagios entfernt doppelte Kontakt-Informationen, bevor es die Benachrichtigungen aussendet.
Welche Filter müssen von einer Benachrichtigung durchlaufen werden, um versandt zu werden?
Nur das die Notwendigkeit besteht, eine Host- oder Dienst-Benachrichtigung zu versenden heisst nicht, dass Nagios überhaupt irgendjemand benachrichtigt. Es gibt verschiedene Filter, die eine potentielle Benachrichtigung durchlaufen muss, bevor sie wirklich versendet werden. Aber sogar dann werden einige spezifische Kontakte evtl. nicht benachrichtigt, falls ihre spezifischen Benachrichtigungsfilter dies nicht erlauben.
Programmweite Filter:
Der erste Filter den eine Benachrichtigung passieren muss, ist ob Benachrichtigungen generell - also programmweit - aktiviert sind oder nicht. Dies wird in der enable_notifications- Directive in der Haupt-Konfigurationsdatei angegeben, kann aber auch während dem Betrieb über das Web-Interface geändert werden. Falls Benachrichtigungen programmweit abgeschaltet sind, werden keinerlei Host- oder Dienst- Benachrichtigungen versandt - Punkt. Falls diese aktiviert sind, müssen die nächsten Filter durchlaufen werden.
Service and Host Filters:
Der erste Filter für Host- oder Dienst-Benachrichtigungen ist, ob für den entsprechende Host oder Dienst eine "geplante Downtime" vorliegt. Falls eine geplante Downtime vorliegt wird niemand benachrichtigt. Die Benachrichtigung für einen Dienst wird natürlich auch dann unterdrückt, wenn für den Host des Dienstes eine solche geplante Downtime vorliegt. Liegt dies nicht vor, werden die nächsten Filter durchlaufen.
Der zweite Filter für Host- oder Dienst-Benachrichtigungen ist eine Überprüfung, ob der entsprechende Host oder Dienst im Moment "flappt" (falls Flap-Erkennung aktiviert wurde). Falls der Dienst oder Host im Moment flappt, wird niemand benachrichtigt. Anderenfalls muss die Benachrichtigung den nächsten Filter durchlaufen.
Der dritte Dienst- oder Host-Filter der durchlaufen werden muss, ist die Host- oder Dienst-spezifische
Benachrichtigungs-Option. Jede Dienst-Definition enthält Optionen, die angeben, ob Benachrichtigungen für
"warnende Stati", "kritische Stati" oder auch Entwarnungen versendet werden oder nicht. Korrespondierend
hierzu enthält jede Host-Definition Optionen, die angeben, ob Benachrichtigungen für einen Host versendet
werden, wenn dieser "down" oder unerreichbar wird, oder auch eine Entwarnung vorliegt. Falls die Host-
oder Dienst-Benachrichtigung diesen Test nicht passieren kann, wird niemand benachrichtigt. Kann
dieser Filter passiert werden, wird die Benachrichtigung an den nächsten Filter weitergegeben...
Hinweis: Benachrichtigungen über Host- oder Dienst-Entwarnungen werden nur dann verschickt, wenn eine
Benachrichtigung über das korrespondierende Problem versandt worden ist. Es macht keinen Sinn eine Entwarnung
zu verschicken, wenn man nicht weiss, dass ein Problem vorhanden war.
Der vierte Host- oder Dienst-Filter der passiert werden muss ist der "Zeit-Filter". Jede Host- und Dienst-
Definition hat eine <notification_period>-Option, die angibt zu welcher Zeit überhaupt
Benachrichtigungen für den entsprechenden Dienst oder Host verschickt werden.
Falls die Zeit zu der die Benachrichtigung verschickt werden soll nicht in die angegebene Zeitperiode
fällt, wird niemand informiert. Fällt die Benachrichtigungszeit in die angegebene Zeitperiode,
muss der nächste Filter durchlaufen werden...
Hinweis: Falls der Zeit-Filter nicht passiert wird, plant Nagios die nächste Benachrichtigung für den
Host oder Dienst (falls er in einem "nicht-OK"-Status ist) für den nächstgültigen Zeitpunkt der angegebenen
Zeitperiode. Dieses hilft zu abzusichern, dass die Kontakte so bald wie möglich benachrichtigt werden
können.
Der letzte Filter der von Host- oder Dienst-Benachrichtigungen passiert werden muss, wird bedingt durch zwei Sachen: (1) eine Benachrichtigung über ein Problem des entsprechenden Host oder Dienstes wurde bereits zu irgendeinem Punkt in der Vergangenheit versendet und (2) der Host oder Dienst ist in dem gleichen "nicht-OK"-Status verblieben, seitdem die letzte Benachrichtigung verschickt worden ist. Falls diese beide Kriterien erfüllt werden wird Nagios überprüfen und sicherstellen, dass die Zeit seit der letzten Benachrichtigung, die in der <notification_interval>-Option der Host- bzw. Dienst-Definition angegeben wurde, auch verstrichen ist. Ist dieser Zeitraum seit der letzten Benachrichtigung nicht verstrichen, wird niemand benachrichtigt. Falls entweder genügend Zeit verstrichen ist oder die beiden Kritierien nicht erfüllt wurden, wird die Benachrichtigung verschickt. Ob die Benachrichtigung dann aber an die einzelnen Kontakte verschickt wird, wird von weiteren Filtern beeinflusst...
Kontakt-Filter:
Zu diesem Zeitpunkt hat die Benachrichtigung eine Reihe von programmweiten Filtern durchlaufen und
Nagios beginnt all die Personen zu informieren, die es informieren soll.
Heisst dies, dass jeder Kontakt eine Benachrichtigung erhält? Nein! Jeder Kontakt hat individuelle
Filter die eine Benachrichtigung passieren muss, bevor dieser eine solche erhält.
Hinweis: Kontakt-Filter sind spezifisch für jeden einzelnen Kontakt und beeinflussen sich in
keinster Weise gegenseitig.
Der erste Kontakt-Filter den eine Benachrichtigung passieren muss ist die "Benachrichtigungs-Option".
Jede Kontakt-Definition enthält Optionen die angeben, ob Benachrichtigungen für "warnende Stati",
"kritische Stati" oder Entwarnungen verschickt werden oder nicht. Jede Kontakt-Definition enthält
ausserdem Optionen die erkennen ob eine Host-Benachrichtigung verschickt wird, wenn ein Host
"down" geht, nicht mehr erreichbar ist oder es eine Entwarnung gibt. Falls die Benachrichtigung
diesen Filter nicht passiert, wird dieser spezifische Kontakt nicht benachrichtigt. Wird
der Filter positiv durchlaufen, muss der nächste Filter durchlaufen werden.
Hinweis: Benachrichtigungen über Host- oder Dienst-Entwarnungen werden nur versandt, wenn auch
vorher eine Benachrichtigung über das Problem verschickt wurde.
Der letzte Filter der für jeden einzelnen Kontakt durchlaufen werden muss ist der "Zeit-Test". jede Kontakt-Definition hat eine <notification_period>-Option, die angibt, zu welchen Zeitpunkten ein Kontakt Benachrichtigungen erhalten darf und wann nicht. Falls der Zeitpunkt der Benachrichtigung nicht in diesen Zeitraum fällt, wird dieser eine Kontakt nicht benachrichtigt. Fällt der Zeitpunkt der Benachrichtigung in den angegebenen Zeitraum erhält der Kontakt eine Benachrichtigung.
Warum werden die Benachrichtigungs-Techniken nicht direkt in Nagios integriert?
Es gibt viele Fragen, warum die Benachrichtigungs-Methoden (Paging, etc.) nicht direkt in den Nagios-Code integriert werden. Die Antwort ist einfach, es macht keinen Sinn! Der "Kern" von Nagios wurde nicht als "all-in-one"-Applikation designt. Wären z.B. Dienst-Überprüfungen direkt in den Nagios-Kern eingebettet, wäre es um einiges schwerer für User neue Überprüfungs-Methoden einzubauen, bzw. bestehende Überprüfungen zu modifizieren. Bei den Benachrichtigungs-Methoden hält es sich sehr ähnlich. Es gibt tausende von verschiedenen Wegen um Benachrichtigungen zu verschicken und es gibt bereits eine Reihe von Paketen, die diese Arbeit verrichten. Warum sollte man also das Rad neu erfinden und sich selbst an dieser Stelle limitieren? Es ist hier um einiges einfacher eine externe Instanz (z.B. ein einfaches Skript oder ein voll aufgeblasenes Messaging-System) einzubinden. Einige Messaging-Pakete, die die Benachrichtigung für Pager und Handies abwickeln können sind weiter unten im "Quellen"-Teil aufgelistet.
Es gibt viele Wege Nagios für die Versendung von Benachrichtigung zu konfigurieren. Es liegt am Admin sich für eine Methode zu entscheiden. Nach dieser Entscheidung muss dieser Weg erst in den Konfigurationsdateien von Nagios hinterlegt werden, bevor er von der Applikation genutzt werden kann. Hier einige Benachrichtigungs-Methoden:
Jede Benachrichtigung, die von einer Kommandozeile aus gestartet werden kann, kann als Benachrichtigungsbefehl für Nagios genutzt werden.
Falls der Versand von alphanumerischen Benachrichtigungen auf Pager oder Handys via eMail interessant erscheinen, können die folgenden Informationen hilfreich sein. Hier sind einige Links zu verschiedenen Messaging-Service-Provider, die Informationen darüber enthalten, wie alphanumerische Nachrichten auf Pager und Handys verschickt werden können.
Falls nach einer Alternative zur eMail gesucht wird, um Nachrichten auf Handys oder Pager zu schicken, sind die folgenden Pakete sehr interessant. Sie können in zusammen mit Nagios genutzt werden, um Benachrichtigungen via modem zu verschicken, wenn ein Problem auftritt. Mit diesem Weg muss man sich nicht mehr auf ein funktionierendes eMail-System für die Benachrichtigung verlassen (bei einem Netzwerkausfall funktioniert auch oft der eMail-Versand *nicht* mehr).
Ein nicht wirklich herkömmlicher Weg zur Benachrichtigung ist der Audio-Alarm. Soll z.B. der Monitoring-Server Audio-Alarme (mit synthetischer Sprache) auslösen, ist das Festival-Projekt interessant. Falls diese Audio-Nachrichten nicht auf dem Monitoring-Server selbst laufen sollen, sondern auf einer anderen Maschine, können das Network Audio System (NAS) und das rplay-Projekt eine Lösung sein.
Ausserdem gibt es im Download-Bereich der Nagios Homepage einige Benachrichtigungs-Skripte, die von Usern zur Verfügung gestellt wurde.