Check_MK Agent – JSON Daten auslesen

Mit diesem lokalen Check kann man zwei Messwerte (Temperatur und Luftfeuchtigkeit) von einer Messstation per JSON auslesen und an den Check_MK Agent übergeben. Die Daten werden von Check_MK ausgelesen und als Statistik angezeigt.

Für die Verarbeitung von JSON brauchen wir ein kleines Tool mit dem Namen JSON Query, kurz JQ.

sudo apt-get install jq

Die Messwerte haben folgendes JSON Format.

{"sensor":{"temperature":24,"humidity":33},"timestamp":1464340616}

Jetzt erstellen wir ein Shell Script im Verzeichnis /usr/lib/check_mk_agent/local/.

#!/bin/sh
NAME="Sensor"
URL="http://hostname/sensor.json"
 
RESULT=$(curl -s $URL)
TEMP=$(echo $RESULT | jq '.sensor.temperature')
HUMI=$(echo $RESULT | jq '.sensor.humidity')
TIME=$(echo $RESULT | jq '.timestamp')
DATE=$(date -d @$TIME)
 
#TEMP-WARNING=30
#TEMP-CRITICAL=40
#HUMI-WARNING=(Min=20/Max=40)
#HUMI-CRITICAL=(Min=10/Max=60)
 
echo "P ${NAME} Temperature=${TEMP};30;40|Humidity=${HUMI};20:40;10:60;0;100; ${DATE}"

Will man die Daten für 120 Sekunden vom Check_MK Agent zwischen speichern, so erstellt man das Script im Verzeichnis /usr/lib/check_mk_agent/local/120/. Die Daten werden dann im Verzeichnis /etc/check_mk/cache/ für 120 Sekunden gespeichert und erst nach Ablauf der Zeit von einem Hintergrundprozess aktualisiert.

Nach der Inventarisierung in Check_MK, wird ein neue Service „Sensor“ mit zwei Statistiken erzeugt.