Monitoring-Checks

Die Installation und Einrichtung des Monitoring-Checks setzt grundlegende Kenntnisse mit Icinga oder Nagios voraus.

Installation

Seit Version 4.0.287 wird ein separates Monitoring-Paket ausgeliefert, was mit

apt-get install check-easydb

installiert werden kann. Es liefert insgesamt drei Checks aus: check_eas, check_easydb und check_easydb_connector.

check_eas

Überprüft, ob der EAS erreichbar ist und in welcher Zeit der EAS auf Anfragen antwortet. Die Zeit wird als Performance-Datum an das Monitoring weitergegeben. Dieser Check ist dann sinnvoll, wenn es mehrere easydbs zu einem EAS gibt. Dann kann man den EAS in einen separaten Check auslagern, und die easydbs mit check_easydb ohne EAS-Check konfigurieren (siehe --eas=0 bei check_easydb). Standardmäßig überprüft check_easydb auch die Erreichbarkeit des EAS.

check_easydb

Überprüft, dass

  • die easydb erreichbar ist
  • innerhalb einer bestimmten Zeitspanne antwortet (konfigurierbar)
  • nicht im Service-Mode ist
  • das easydb-maintenance in letzter Zeit durchgelaufen ist (konfigurierbar)
  • die Anzahl der Jobs im EAS nicht stagniert (konfigurierbar)

check_easydb_connector

Überprüft, dass der Connector der easydb erreichbar ist, innerhalb einer bestimmten Zeitspanne antwortet und die easydb nicht im Service-Mode ist.

Konfiguration

Einrichtung der easydb-Installation

Die Information der easydb werden über die Status-URL an das Monitoring-Plugin weitergegeben. Die URL wird über HTTP-Authentifizierung gesichert, dazu dient die Config-Variable STATUS_HTTP_AUTH.

STATUS_HTTP_AUTH=<Benutzer>:<Passwort>
# default: <empty>

Ob alles richtig konfiguriert wurde, können Sie überprüfen, in dem Sie die Basis-easydb-URL + "/status" aufrufen und sich mit den eingetragenen Logindaten authentifizieren.

Der Benutzer und das Passwort werden nur für den Monitoring-Check verwendet. Dieser Benutzer sollte nicht in der easydb existieren.

Wenn die Config-Datei nicht gelesen werden kann, ist der Zugriff auf die Status-URL nicht geschützt.

Kommandozeilen-Parameter von check_eas, check_easydb und check_easydb_connector

Alle drei Checks liegen in /usr/lib/nagios/plugins/. Eine Kurzhilfe mit der Auflistung aller Kommandozeilen-Optionen ist verfügbar, wenn man das Skript mit -h ausführt. mit -V lässt sich die Version des Plugins überprüfen.

Die wichtigsten generischen Parameter, mit allen drei Checks anwendbar:

--warning=ZAHL Wenn die Zeit zwischen der HTTP-Anfrage und der Antwort mehr als ZAHL Sekunden überschreitet, wird ein WARNING ausgegeben. Vorgabewert ist 3.
--critical=ZAHL Wenn die Zeit zwischen der HTTP-Anfrage und der Antwort mehr als ZAHL Sekunden überschreitet, wird ein CRITICAL ausgegeben. Vorgabewert ist 10.
--uri=URL Vollständige URL, um die easydb zu erreichen. Der Benutzername und das Passwort müssen in der URL enthalten sein. Falls beispielsweise die easydb unter https://easydb.example erreichbar ist, der in STATUS_HTTP_AUTH vergebene Benutzer "nagios" und das Passwort "geheim" heißt, sähe die URL so aus: https://nagios:geheim@easydb.example/

Falls der Benutzer keinen Zugriff auf die Status-Seite der easydb hat, wird ein CRITICAL ans Monitoring zurückgegeben.

Achten Sie darauf, dass bei HTTPS ein gültiges SSL-Zertifikat beim Webserver hinterlegt ist, andernfalls erscheint eine Fehlermeldung mit dem Level CRITICAL und dem Text "Error retrieving status page! 500 Can't connect to easydb.example.com:443 (certificate verify failed)"

Falls die easydb länger als mit --critical angegebene Sekunden für eine Antwort braucht, wird die HTTP-Verbindung abgebrochen und ein CRITICAL zurückgegeben. Falls auf Zeiten länger als 15 Sekunden getestet werden soll, muss der timeout für Skript im Monitoring hochgesetzt werden ("--timeout" beim Plugin, sowie "service_check_timeout" in /etc/icinga/icinga.cfg).

Die wichtigsten Parameter, die spezifisch für check_easydb sind:

--eas=BOOLEAN Wenn auf 0 gesetzt, wird der EAS-Check deaktiviert. Vorgabewert ist 1.
--maintwarn=ZAHL Wenn mehr als ZAHL Minuten seit dem letzten maintenance-Durchlauf vergangen sind, wird ein WARNING ausgegeben. Vorgabewert ist 360 (= 6 Stunden).
--maintcrit=ZAHL Wenn mehr als ZAHL Minuten seit dem letzten maintenance-Durchlauf vergangen sind, wird ein CRITICAL ausgegeben. Vorgabewert ist 1440 (= 1 Tag).
--times_pending_jobs=ZAHL Wenn ZAHL Male hintereinander festgestellt wird, dass die Menge des bevorstehenden Aufgaben des EAS konstant und ungleich 0 geblieben sind, wird eine Warnung ausgegeben. Vorgabewert ist 5.
--tmpdir Pfad zum temporären Verzeichnis, in dem zwischen den Läufen temporäre Dateien gespeichert werden. Falls das Verzeichnis nicht existiert, wird es vom Plugin erzeugt. Vorgabe ist "/tmp/nagios-easydb". Dieser Wert muss nur in Ausnahmefällen geändert werden.

Einrichtung von Icinga / Nagios

Beispielhaft soll hier die Konfiguration von Icinga beschrieben werden. Sie sollte identisch oder analog dazu für Nagios umsetzbar sein.

In der Datei /etc/nagios-plugins/config/local/easydb.cfg wird folgender Inhalt eingefügt:

define command {
    command_name    check_easydb
    command_line    /usr/lib/nagios/plugins/check_easydb -u '$ARG1$'
}

Die Zeile "command_line" kann beliebig mit den o.g. Parametern angepasst werden. Somit ist in Icinga das Kommando "check_easydb" verfügbar, dass als ersten Parameter die URI erwartet.

Nun wird in /etc/icinga/objects/easydb.cfg folgende Definition eingefügt:

define service {
    use                  generic-service
    host_name            <name_des_easydb_servers>
    service_description  easydb
    check_command        check_easydb!https://<Benutzer>:<Passwort>@easydb.example.com
}

mit einem Neustart von Icinga sollte dieser Check auf "PENDING" stehen und innerhalb weniger Minuten regelmäßig ausgeführt werden.

Falls im Icinga-Frontend etwas unsinniges wie ein Status von "UNKNOWN" mit dem Status-Detail "(null)" angezeigt wird, führen Sie das Plugin mit allen konfigurierten Parametern als Benutzer "nagios" auf der Kommandozeile aus. In der Regel werden dort dann weitere Details angezeigt, um das Problem zu beheben.

Implementierungsdetails

Grundsätzlich geben die Plugins den höchsten Wert zurück, den die die einzelnen Überprüfungen zurückgegeben haben. Wenn beispielsweise die easydb in 0,3 Sekunden reagiert hat ("OK"), der Maintenance-Durchlauf vor 8 Stunden das letzte Mal lief ("WARNING") und der Service-Mode aktiv ist ("CRITICAL"), gibt das Plugin "CRITICAL" an das Monitoring zurück.

check_eas, check_easydb und check_easydb_connector bauen auf das Perlmodul Nagios::Plugin auf, und halten sich daher an die Developer Guidelines von dem Nagios-Projekt. Das bedeutet, dass u.a. Schwellwerte als Bereich angegeben werden können, oder Config-Optionen in eine separate Datei ausgelagert werden können.

Das check_eas und check_easydb_connector sind Symlinks auf check_easydb. Über den basename ermittelt das Plugin dann, wie es aufgerufen wurde, und verhält sich dann wie auf dieser Seite dokumentiert.

Status per URL /status abfragen

Die Status-Seite kann den aktuellen Systemzustand in verschiedenen Formaten ausgeben. Zum einen gibt es eine menschenlesbare Form mit HTML-Ausgabe, zum anderen eine maschinenlesbare Form mit JSON-Ausgabe. Es sind jeweils Informationen über vorhandene Probleme (Zustand WARNING oder CRITICAL) und weitere informative Daten ("Performance-Daten") enthalten. Diese stammen teilweise aus dem EAS (Präfix "eas-") und teilweise direkt aus der easydb (Präfix "easydb-").

Die HTML-Ausgabe ist unter folgendem URL-Schema zu erreichen:

https://easydb/status/html

oder auch einfach unter:

https://easydb/status

Die JSON-Ausgabe zur maschinellen Verarbeitung findet sich unter:

https://easydb/status/json