InfluxDB ist eine Zeitreihendatenbank, die gerne für Performance Monitoring genutzt wird. Zusammen mit dem Telegraf Agenten, kann man so ziemlich alle vorstellbaren Formate einliefern und diese in Metriken oder Logs transformieren. Hat man die Daten einmal in der Datenbank, kann man entweder direkt in InfluxDB mittels „Checks“ gegen Schwellwerte prüfen, oder man hat dafür ein zusätzliches Monitoring Tool im Einsatz, beispielsweise Icinga. Für letzteres braucht man aber ein Check-Plugin.
Mit check_influxdb lässt sich der Zustand von InfluxDB v1 und v2 Instanzen prüfen. Außerdem können flux Abfragen an InfluxDB v2 geschickt werden und ausgewertet werden. Das Check-Plugin haben wir in Golang geschrieben, das heißt, es werden keine weiteren Abhängigkeiten auf der Icinga Instanz benötigt.
https://github.com/NETWAYS/check_influxdb
Hier einige Beispiele für die Nutzung:
Wir können zunächst mal grundlegend prüfen, ob unsere InfluxDB Instanz erreichbar ist. Dafür nutzen wir den health Unterbefehl:
$ check_influxdb health [OK] - InfluxDB Status: pass $ check_influxdb health [CRITICAL] - InfluxDB Status: fail
Mit dem query Unterbefehl können wir direkt flux Abfragen auswerten lassen und gegen Schwellwerte prüfen. Dabei können wir die flux Abfrage entweder direkt in der Kommandozeile übergeben, oder in einer Datei ablegen:
check_influxdb query --token "${INFLUX_TOKEN}" --org myorg --bucket telegraf --warning 1 --critical 2 \ --flux-string 'from(bucket:"monitor")|>range(start:-1h)|>filter(fn:(r)=>r["_measurement"]=="cpu")|>filter(fn:(r)=>r["_field"]=="usage_user")|>aggregateWindow(every:1h,fn:mean)' [CRITICAL] - InfluxDB Query Status | cpu.usage_user=0.04;1;2 exit status 2 check_influxdb query --token "${INFLUX_TOKEN}" --org myorg --bucket telegraf --warning 50 --critical 100 \ --flux-file mem.flux [WARNING] - InfluxDB Query Status | mem.active=68.9;50;100 exit status 1
Natürlich können bei beiden Befehlen Adresse, TLS Konfiguration und Authentifizierung als Parameter angeben. Außerdem lässt sich Unterstützung für InfluxDB v3 einbauen, sobald diese Version öffentlich verfügbar ist.
Das Plugin ist ab sofort verfügbar und wir freuen uns über Feedback. Und hast du einen Bug gefunden, oder brauchst ein neues Feature? Melde dich einfach auf GitHub!

0 Kommentare