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.192IP-Adresse des Querx
-c10:20Zustand ist kritisch, wenn der Messwert unter 10 oder über 20 liegt
-s0Abgefragt 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:

qwth1Konfigurierter Querx Systemname
TemperatureNames des ersten Sensors
24.10 °CTemperatur 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:

nagios_aussenfuhler