Konfiguration und Beispiel für remote-Zugriff auf icinga-Instanzen
Wir haben einige Systeme mit icinga aufgesetzt und eine einfache Möglichkeit verwendet, remote auf Daten eines icinga-Systems zuzugreifen.
Mit icinga und Livestatus können z.B. remote Checkergebnisse ausgelesen oder auch Kommandos abgesetzt werden. Livestatus war auch schon für Icinga 1 und Nagios verfügbar, mit icinga ist es aber deutlich einfacher aufzusetzen und zu konfigurieren.
Dank des Debian-Backports-Projektes ist icinga unter Debian 7 (wheezy) verwendbar, wenn in der sources.list backports aktiviert wird:
deb http://http.debian.net/debian wheezy-backports main
Nach der Installation und Konfiguration von icinga kann livestatus aktiviert werden:
icinga-enable-feature livestatus
Die Konfiguration von livestatus wird in /etc/icinga/features-available/livestatus.conf erweitert, um Zugriff nicht nur per Unix-Socket, sonder auch per TCP zu erlauben:
object LivestatusListener "livestatus-tcp" { socket_type = "tcp" bind_host = "0.0.0.0" bind_port = "6666" }
Neustart und Test:
service icinga restart echo -e 'GET services\n' | netcat 0 6666
Ein Auszug aus einem kleinen Python-Skript, um remote zu prüfen, ob alle Services OK sind:
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM) s.connect((HOST, PORT)) s.sendall("GET services\nColumns: host_alias description plugin_output last_check state\n\n") services = s.makefile() for service in services: (host_alias, description, output, last_check, state) = service.rstrip("\n").split(";")
Die Ausgabe sieht z.B. so aus, wenn ein Service nicht OK ist:
mailserver ping6 CRITICAL - Network Unreachable (2001:1234:1234:1234::1) (checked 28 seconds ago) 1 services not OK.