Select Page

check_influxdb ist jetzt öffentlich verfügbar!

by | Sep 21, 2023 | NETWAYS

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!

Markus Opolka
Markus Opolka
Consultant

Markus war nach seiner Ausbildung als Fachinformatiker mehrere Jahre als Systemadministrator tätig und hat währenddessen ein Master-Studium Linguistik an der FAU absolviert. Seit 2022 ist er bei NETWAYS als Consultant tätig. Hier kümmert er sich um die Themen Container, Kubernetes, Puppet und Ansible. Privat findet man ihn auf dem Fahrrad, dem Sofa oder auf GitHub.

0 Comments

Submit a Comment

Your email address will not be published. Required fields are marked *

More posts on the topic NETWAYS

Monthly Snap November 2023

Hallo zusammen! Was hat uns wohl im November so beschäftigt? Richtig: OSMC, OSMC OSMC! Wer davon etwas verpasst hat, kann hier darüber lesen: Katja hat den ersten Tag der Konferenz zusammengefasst, Dirk den zweiten und Lorenz den dritten Tag, und Irene berichtete von...

Unser Azubi Wochenende 2023

Eine unvergessliche Reise des Team-Buildings Die Reise zu unserem Team-Wochenende begann, und als wir den Adventure Campus in Treuchtlingen erreichten, wurden wir herzlich willkommen geheißen. Nach allen regulären Check-in-Prozeduren war es Zeit für eine kurze...

Mein PHP-Trainingsprojekt

PHP Schulung Vor kurzem haben wir begonnen, eine neue Programmiersprache zu lernen – PHP. In der ersten Woche haben wir mit den Grundlagen wie Variablen, Arrays, Schleifen begonnen und uns schrittweise zu komplizierterer Syntax wie Funktionen, Objekten und Klassen...