Tutorial: Querx und Nagios 4
Dieses Tutorial erklärt an einem Beispiel, wie man Querx Sensoren nutzen kann, um die Außentemperatur mit Nagios zu überwachen. Dabei wurde Nagios 4.2 unter Ubuntu 16.04 LTS verwendet.
Querx Plugin installieren
Nagios kann über sog. Plugins erweitert werden. Für Querx Sensoren wurde das Plugin check_querx in der Programmiersprache Go geschrieben. Der Quellcode ist auf Github verfügbar https://github.com/egnite/querxnagios.
Die ausführbare Version für 32- und 64-Linux kann von der egnite Webseite heruntergeladen
wget https://www.egnite.de/wp-content/uploads/2020/11/egnite-querx_nagios_plugin-1.3.tar.gz
und mit
tar -xzf egnite-querx_nagios_plugin-1.3.tar.gz
entpackt werden.
Das Plugin sollte nun in das Plugin-Verzeichnis von Nagios kopiert werden. Den genauen Pfad für die Nagios-Plugins findet man in der Datei
/usr/local/nagios/etc/resource.cfg
unter dem Eintrag $USER1$, z.B.
$USER1$=/usr/local/nagios/libexec
Der Befehl zum Kopieren der 64-Bit-Version lautet dann
sudo cp linux-64-bit/check_querx /usr/local/nagios/libexec/
Querx Plugin testen
Das Plugin kann auf der Kommandozeile getestet werden. Beim Aufruf ohne Parameter
/usr/local/nagios/libexec/check_querx
werden die möglichen Parameter aufgelistet:
Usage: check_querx [-hvV] [-c value] [-H value] [-P value] [-s value] [-w value] [parameters ...] -c, --critical=value -h, --help Print help screen -H, --hostname=value Hostname -P, --port=value HTTP Port -s, --sensor=value Sensor ID -v, --verbose 1 -V, --version Print version -w, --warning=value
Nehmen wir an, ein Querx ist im Netzwerk unter der IP-Adresse 192.168.192.192 erreichbar, dann kann dessen Sensor mit
/usr/local/nagios/libexec/check_querx -H192.168.192.192 -c10:20 -s0
abgefragt werden, wobei die Parameter die folgenden Informationen angeben:
-H192.168.192.192 | IP-Adresse des Querx |
-c10:20 | Zustand ist kritisch, wenn der Messwert unter 10 oder über 20 liegt |
-s0 | Abgefragt wird der erste Sensor |
In der Ausgabe erscheint dann etwas Ähnliches wie
CRITICAL: [qwth1:Temperature] 24.10 °C | Temperature=24.1;;;;
wobei die Parameter die folgenden Daten angeben:
qwth1 | Konfigurierter Querx Systemname |
Temperature | Names des ersten Sensors |
24.10 °C | Temperatur und Einheit des aktuellen Messwertes des ersten Sensors |
Querx Plugin in Nagios integrieren
Nagios verwendet eine Vielzahl von Konfigurationsdateien, in denen Rechner oder Geräte (Hosts), Dienste (Services) und Kommandos (Commands) definiert werden. Im Grunde spielt es dabei keine Rolle, welche Parameter in welcher Datei definiert sind. Natürlich sollte man sich frühzeitig Gedanken über eine sinnvolle Aufteilung machen.
Die Hauptkonfigurationsdatei heißt nagios.cfg und befindet sich üblicherweise im Verzeichnis /usr/local/nagios/etc/. Diese enthält u.a. Verweise auf weitere Dateien, z.B.
cfg_file=/usr/local/nagios/etc/objects/commands.cfg
cfg_file=/usr/local/nagios/etc/objects/templates.cfg
resource_file=/usr/local/nagios/etc/resource.cfg
Wir könnten nun mehrere dieser Dateien für Querx erweitern, um z.B. die Außentemperatur zu überwachen.
Eine andere Möglichkeit ist es, alle Querx relevanten Konfigurationen in einer einzigen Konfigurationsdatei zu definieren. Dazu legen wir im Verzeichnis /usr/local/nagios/etc/objects/ eine neue Datei querx.cfg mit folgendem Inhalt an:
############################################################################### ############################################################################### # # COMMAND DEFINITIONS # ############################################################################### ############################################################################### define command { command_name check_temperature command_line $USER1$/check_querx -H $HOSTADDRESS$ -s0 -w$ARG1$ -c$ARG2$ } define command { command_name check_humidity command_line $USER1$/check_querx -H $HOSTADDRESS$ -s1 -w$ARG1$ -c$ARG2$ } define command { command_name check_dewpoint command_line $USER1$/check_querx -H $HOSTADDRESS$ -s2 -w$ARG1$ -c$ARG2$ } define command { command_name check_pressure command_line $USER1$/check_querx -H $HOSTADDRESS$ -s3 -w$ARG1$ -c$ARG2$ }
############################################################################### ############################################################################### # # TEMPLATES # ############################################################################### ############################################################################### define host { name querx-device use generic-host check_period 24x7 check_interval 5 retry_interval 1 max_check_attempts 10 check_command check-host-alive notification_period workhours notification_interval 120 notification_options d,u,r contact_groups admins register 0 }
Diese Datei wird dann in nagios.cfg eingetragen, indem wir folgende Zeile hinzufügen:
cfg_file=/usr/local/nagios/etc/objects/querx.cfg
Querx Geräte definieren
Die Datei querx.cfg enthält bisher nur allgemeine Definitionen, einen konkreten Sensor haben wir noch nicht definiert. Nun könnten wir zu dieser Datei weitere Einträge hinzufügen, um z.B. genau den Querx zu überwachen, der die Außentemperatur misst. Eine andere Möglichkeit besteht aber darin, jedem Querx eine eigene Datei zuzuordnen.
In der Hauptdatei der Nagios-Konfiguration befindet sich folgender Eintrag:
cfg_dir=/usr/local/nagios/etc/servers
Das Schlüsselwort cfg_dir bedeutet, dass alle Konfigurationsdateien in diesem Verzeichnis berücksichtigt werden. Das hat den Vorteil, dass wir hier für jeden Querx einfach eine neue Datei erstellen können, ohne dafür Änderungen in einer der übrigen Dateien vornehmen zu müssen.
Für einen Querx, der die Außentemperatur überwacht und unter der IP-Adresse 192.168.192.227 erreichbar ist, legen wir im o.g. Verzeichnis eine neue Datei aussenfuhler.cfg mit folgendem Inhalt an:
############################################################################### ############################################################################### # # HOST DEFINITION # ############################################################################### ############################################################################### define host { use querx-device host_name aussenfuhler alias aussenfuhler address 192.168.192.227 }
############################################################################### ############################################################################### # # SERVICE DEFINITIONS # ############################################################################### ############################################################################### # Check outdoor temperature define service { use generic-service service_description Outdoor Temperature host aussenfuhler check_command check_temperature!5\:25!0\:30 }
Diese Datei definiert das Gerät selbst, den Host mit Namen und IP-Adresse, und zusätzlich den Service für die Überwachung der Temperatur.
Man beachte die zusätzlichen, umgekehrten Schrägstriche (Backslash) beim Aufruf der Kommandos check_temperature. Diese sind notwendig, weil das Querx Plugin die Bereichsgrenzen mit Doppelpunkt getrennt erwartet, Nagios dagegen einen Doppelpunkt speziell interpretiert. Durch den Schrägstrich wird Nagios angewiesen, das folgende Zeichen, also den Doppelpunkt, unverändert als Teil des Arguments zu behandeln.
Überwachung aktivieren
Mit dem Aufruf
sudo /usr/local/nagios/bin/nagios -v /usr/local/nagios/etc/nagios.cfg
lässt sich überprüfen, ob unsere Konfiguration von Nagios akzeptiert wird. Werden keine Fehler gemeldet, kann man Nagios mit der geänderten Konfiguration neu starten:
sudo systemctl restart nagios
Rufen wir nun das Webinterface von Nagios auf, sollte der Querx Außenfühler unter dem Menüpunkt Services auftauchen: