Skip to content

Nagios - Aktiv oder passive Checks?

Nachdem ich jetzt endlich weiss welche Hosts ich monitoren will und welche Dienste ist die Frage auf welchem Wege das stattfinden soll.

Generell gibt es drei "generische" Möglichkeiten:

  • Der Nagios-Server selbst führt selbst Tests aus
  • Der Nagios-Server "bittet" den entfernten Rechner einen Test auszuführen
  • Ein Test wird ausgeführt und Nagios "nur" das Ergebnis mitgeteilt


Die ersten beiden Methoden sind sogenannte Aktive Checks - Nagios selbst führt die Checks aus oder stößt einen Task an der den Check ausführt.

Der letzte Test ist ein sogenannter Passiver Check; Nagios selbst ist nicht für den Test verantwortlich sondern verarbeitet nur das Ergebnis.

Gerade in Netzwerken wo es Firewalls gibt oder Sicherheitsbestimmungen ist die Wahl der Checks durchaus interessant. Nicht alle Checks kann der Nagios-Server selbst machen; ob auf entfernten Rechnern die Festplatte überläuft zum Beispiel kann er nicht einfach sehen.
Daher gibt es diese zweite Kategorie - für Router oder andere Systeme kann man snmp einsetzen, aber auch den Befehl via ssh auf dem entfernten Rechner auszuführen ist eine Option. Für Windows-Rechner gibt es auch ein entsprechendes Programm welches auch als Service installiert werden kann.

In allen Fällen bekommt Nagios vier wichtige Angaben gesagt:

  • einen Zeitstempel (Epoch)
  • einen Nagios-internen Befehl
  • Den Host von dem der Check kommt
  • Der Status des Dienstes (0 = OK, 1 = Warning, 2= Critical, 3 = Unknown)
  • Ein freier Text den der Check ausgeben kann


Mit Hilfe des Status hat Nagios seine Aktionen definiert - bei Critical-Meldungen im Melde-Zeitrahmen gibt es zum Beispiel eine Mail an die Beteiligten; wenn der Dienst wieder OK ist, ebenfalls. Es gibt auch die Möglichkeit dass Dienste eine Zeitlang nicht überprüft werden - wenn sie für längere Zeit ausgefallen sind zum Beispiel.

Zu wissen, welche Daten Nagios dringend braucht ist wichtig wenn man eigene Plugins schreibt (weil die Standard-Plugins nicht helfen oder weil man alles für sich anpassen möchte); aber auch wenn man passive Checks nutzen will. Bei passiven Checks werden Der Host, der Service, die Statusnummer und der Freitext üblicherweise mit Hilfe des progranns NSCA an den Nagios-Server geleitet. Die Checks müssen natürlich definiert sein für den Host, damit die Nachrichten korrekt zugeordnet werden können.

Passive Checks haben aber auch einen weiteren Vorteil: Man kann nagios anweisen zu überprüfen wann der letzte passive Check eines Dienstes passiert ist - und wenn diese Zeit zuende ist wird ein aktiver Check durchgeführt. Diesen aktiven Check kann man dann so konfigurieren dass der Dienst sofort auf Critical gesetzt wird. Ich nutze diese Methode gerade um einen Monitor zu überwachen - wenn nach 125 Sekunden keine neuen Daten kamen meldet sich nagios und sagt mir dass der Monitor nicht mehr tut. Sehr sinnvoll, besonders abends wenn keiner mehr vor Ort sein möchte.

Passive Checks haben aber auch noch einen anderen Vorteil; gerade bei uns. Unsere Netze sind sehr sauber voneinander getrennt - Produktions, Test, Entwicklungsumgebungen, Internet usw. Und unsere Monitoring-Station muss von allen Netzen auch die Daten ja bekommen. Das könnte durchaus zu Problemen mit Firewalls führen.

Was aber unkritisch ist ist wenn die Rechner zum Monitoring hin eine Verbindung aufbauen und nicht andersrum. Daher sind die passiven Checks sehr angenehm - mit Hilfe von nsca macht der zu überprüfende Rechner auf und nicht der Nagios-Server.

Trackbacks

No Trackbacks

Comments

Display comments as Linear | Threaded

Marc 'Zugschlus' Haber on :

Als ich mich zuletzt mit passiven Checks beschäftigt hatte, fehlte an der Stelle der Code, der den Output eines Nagios-Plugins an send_nsca verfüttert - send_nsca braucht zum Beispiel den Status auf der Kommandozeile, während das Plugin ihn als exit code zurückliefert.

Muss man sich an dieser Stelle immer noch selbst was scripten, oder wird da inzwischen was mitgeliefert was Konfigurationen wie

send_nsca --command="plugin parameters"

ermöglicht?

Rince on :

Es hat sich daran nichts geändert. Allerdings ist das Ziel von passiven Checks ja auch eigentlich nicht, aktive Checks auf anderen Rechnern auszuführen (dafür gibts check_ssh oder check_nrpe); sondern eigene Scripte oder Tests zu haben und das Egebnis dann an send_nsca zu schicken. Ich habe dafür die vorhandenen Test-Scripte einfach erweitert indem ich dort die Exitcodes der Checks abfrage und eine Datei erstelle; pro Test (also Schnittstelle) eine Zeile. Und am Ende rufe ich einmal send_nsca auf um alles auf einmal zu schicken - gerade für die Performance ist dies deutlich besser.

Marc 'Zugschlus' Haber on :

Naja, aber für die eigenen Tests Nagios-Plugins verwenden zu können würde ich durchaus für ein Feature halten. Zum Beispiel für Hosts, die hinter NAT stehen und die deswegen ihre Ergebnisse nur zum Nagios pushen können; dafür hätte ich gerne eine Möglichkeit, das nur mit "offiziellem" Nagios-Code hinzubekommen.

Es fehlt wirklich nur der Glue zwischen dem Nagios-Plugin und send_nsca

Add Comment

E-Mail addresses will not be displayed and will only be used for E-Mail notifications.
To leave a comment you must approve it via e-mail, which will be sent to your address after submission.

To prevent automated Bots from commentspamming, please enter the string you see in the image below in the appropriate input box. Your comment will only be submitted if the strings match. Please ensure that your browser supports and accepts cookies, or your comment cannot be verified correctly.
CAPTCHA

Enclosing asterisks marks text as bold (*word*), underscore are made via _word_.
Standard emoticons like :-) and ;-) are converted to images.
Form options