
Ich habe mir vor Kurzem ein schönes 7×11 LED-Display zugelegt und möchte (unter anderem) meinen Nagios-Status darauf anzeigen. Dazu muss ich den Status meiner Nagios-Installation abfragen.
Was ist die geeignete Methode, um eine Statuszusammenfassung (z. B. die Anzahl nicht funktionierender Dienste) von einem Remote-Nagios-Server beispielsweise über ein Perl-Skript abzurufen?
Antwort1
Ich betreue eine extrem große Nagios-Installation und kann sagen, dass die absolut beste Methode hierfür die Verwendung des "Livestatus" Ereignisbroker:
http://mathias-kettner.de/checkmk_livestatus.html
Livestatus bietet sofortigen Zugriff auf den Nagios-Status über einen lokalen oder TCP-Socket und verursacht fast keine zusätzliche CPU-Last auf Ihrem Überwachungsserver (benötigt aber natürlich Speicher). Durch die einfache Integration mit xinetd/unixcat kann es über das Netzwerk abgefragt werden. Die Ausgabe erfolgt in einem von drei Formaten: CSV, JSON und Python. Es stehen zahlreiche Konfigurationsoptionen zur Verfügung und es ist stabil genug für den Einsatz in der Produktion. Die Dokumentation ist sehr gut.
Darüber hinaus aktiviert Livestatus andere Nagios-Add-Ons, wie zum Beispiel "MK Multisite", das die Ergebnisse mehrerer Nagios-Installationen in einer einzigen GUI zusammenfasst, ohne die Ergebnisse von NSCA oder passiven Service-Checks zu verwenden, die eine Pflege der Nagios-Konfigurationen sowohl auf den Worker- als auch auf den Master-Servern erfordern.
Antwort2
Soweit ich weiß, gibt es keine von nagios.com unterstützte API zum Abfragen des Nagios-Status. Es gibt eine ganze Reihe verschiedener Add-Ons, die dies ermöglichen. Einige werden in dieser Frage besprochen.
Sie können die CGI direkt abfragen und das zurückgegebene HTML „screen scrapen“, aber das ist keine sehr robuste Lösung. Ich habe ein bisschen mit dieser Version eines API-Servers herumgespielt, sie aber nicht in die Produktion gebracht.