Anleitung: Philips-Hue-Geräte mit Checkmk überwachen
Dies ist quasi der dritte Teil unserer kleinen Hue-API-Serie: Zuerst habt Ihr Zugriff erlangt, dann gelernt, wie man Hue-Leuchten von der Kommandozeile aus anspricht. Und wie einfach man eigene Checks für Checkmk erstellen kann, haben wir auch schon mal gezeigt. Nun kommt das alles zusammen: Ein Local Check zum prüfen des Status von Hue-Leuchten.
UPDATE 12/2012: Diesen Artikel haben wir jetzt in einer etwas erweiterten neuen Version - das Skript nimmt dann autmatisch alle Hue-Geräte auf und ein Dashboard gibt es auch noch.
Voraussetzung: Ihr benötigt wieder Eure User-ID und den curl-Befehl für die Abfrage der Leuchten (kommt gleich aber auch noch mal).
1. Check-Skript schreiben
Einfacher geht es nicht: Ihr fragt schlicht den Status der Leuchte ab, schaut, ob die Zeichenkette "on":true vorkommt und lasst die Anzahl der ausgegebenen Zeilen zählen. Denn wenn der Status true (also eingeschaltet) ist, gibt es eine Zeile, ist er es nicht (also false/ausgeschaltet), wird keine Zeile ausgegeben. Ihr bekommt als Ausgabe also entweder 1 oder 0 - und das kann dann in Checkmk als OK und CRIT auftauchen.
Zur Erinnerung: Die Ausgabe eines lokalen Checks für Checkmk muss einem bestimmten Format folgen, wie Ihr im Local-Check-Artikel nachlesen könnt. Hier nun das Skript namens hue.sh:
#!/bin/sh
a=$(curl 192.168.178.119/api/123456789ABCDEFG/lights/1 | grep '\"on\":true' | wc -l)
if [ $a = 1 ]
then
echo 0 hue1 - Hue 1 ist aktiv.
elif [ $a = 0 ]
then
echo 1 hue1 - Hue 1 ist aus.
else
then
echo 3 hue1 - Irgendwas ist kaputt.
fi
Zunächst führt Ihr die besagte curl-Abfrage für die Leuchte mit der ID 1 aus, durchsucht dann die Ausgabe mit grep nach der Statusmeldung und zählt die Anzahl der ausgegebenen Zeilen mit wc -l. Die Ausgabe (0 oder 1) wird dann in der Variablen $a gespeichert.
Es folgt eine simple if-Abfrage: Wenn $a den Wert 1 hat, wird 0 hue1 - Hue 1 ist aktiv. ausgegeben - diese 0 wird dann von Checkmk als OK interpretiert und hue1 setzt dann den Namen für den Service in Checkmk. Dann folgt das Spielchen nochmal für $a ist 0, was den Service auf WARN setzt, sowie für $a ist was anderes, was den Service auf CRIT setzt.
Ihr könnt das Skript direkt im Terminal testen - vorher aber mit chmod +x hue.sh ausführbar machen!
2. Skript in Checkmk integrieren
Lokale Checks müssen in fixe Verzeichnisse kopiert werden, unter Linux ist das /usr/lib/check_mk_agent/local. Anschließend ruft Ihr Euer Checkmk auf und fügt das als neuen Service erkannte Skript wie üblich über WATO/Hosts/Host-Name/Services zum Monitoring hinzu.
Das Ganze ist jetzt die wohl einfachste Herangehensweise gewesen. Und wenn Ihr wirklich nur ein paar Lampen im Auge behalten wollt - warum nicht. Ansonsten müsst Ihr naütrlich etwas ausführlicher skripten. Vielleicht interessiert Euch auch das Nagios-Plugin Check Philips Hue devices: Das könnt Ihr einfach in der Art
check_hue_connected.sh 192.168.178.119 123456789ABCDEFG lights 1 | grep "Power On" | wc -l
oder genereller
check_hue_connected.sh 192.168.178.119 User-ID Geräteklasse Geräte-ID
aufrufen könnt. Das Skript bietet auch Zugriff auf Temperatur, Batteriestatus und Verfügbarkeit.
Wir haben noch allerlei weitere Artikel rund um Philips Hue und das Monitoring-System Checkmk.