Möchte man Nagios zum ersten Mal nutzen, so stellt man sich häufig die Fragen „Wo steigt man ein?“ und „Was gilt es zu beachten?“. Als Hilfestellung zur Überwindung dieser Hürde wurde diese kleine Anleitung verfasst.

Step-by-step guide

Installation der Nagios-Software
  1. Über „Package administration → Update local database“ die Paketdatenbank aktualisieren.
  2. Über „Package administration → Install package by search → nagios“    das nagios-Paket mit allen Abhängigkeiten installieren und dabei den Parameter START_PNP4NAGIOS='yes' setzen und speichern.
  3. Über „Package administration → Install package by search nagios-objects Liste“ das nagios-objects-Paket installieren und dabei den Parameter START_NAGIOS_OBJECTS='yes' setzen und speichern.
  4. Über „Service administration → nagios → Edit configuration“ die folgenden Parameter setzen und speichern:
    START_NAGIOS='yes'\\ NAGIOS_DEBUG='yes'\\ NAGIOS_DEBUG_EVERYTHING='yes'\\ NAGIOS_PASS='test'\\ NAGIOS_CONFIGURATION='nagios-objects'
  5. Über die URL „http://<dein-webserver/nagios/“ kann man auf den Nagios Web-GUI zugreifen und sich mittels des Users 'nagiosadmin' und dem Kennwort 'test' anmelden.'

Standardmäßig werden dann ein paar initiale Prüfungen (Checks) des localhost angezeigt, die schrittweise in den Status „OK“ wechseln sollten. Anschließend kann man sich an die Konfiguration weiterer Dienste machen.

2. Die Konfiguration des Nagios-Paketes

Schritt 1 - Die Hosts konfigurieren

Als Erstes konfiguriert man die einzelnen im Netz befindlichen Hosts und legt deren Hierarchie im Netz fest. Diese Hierarchiebaum kann man sich zum Beispiel über die Web-GUI-Funktion 'Map legacy)' angezeigen lassen. Folgende Dinge sollte man dabei beachten:

  1. Ich verwende nur Fully Qualified Domain Names im Netz.
  2. Handelt es sich eher um ein Linux- oder Windows-basierendes System und wählt das zugehörige Hsot-Template aus.
  3. Über den Parents-Parameter legt man fest, welchem Objekt der neue Host untergeordnet werden soll, sodass man nachher eine Art Baumstruktur in der Netzwerkansicht erhält.
  4. Mittels eines Icon kann man die Funktion des Hosts in der grafischen Netzwerkübersicht besser darstellen.
  5. IP-Adressen kann man angeben, muss man aber nicht. Da ich bei wichtigen Komponenten statische IP-Adresse verwende habe ich diese auch eingetragen.

Hier ein Beispiel:

NAGIOS_HOST_1_USE = host-template-linux
NAGIOS_HOST_1_NAME = fritzbox.privat.lan
NAGIOS_HOST_1_ALIAS = AVM Fritz!Box
NAGIOS_HOST_1_ADDRESS = 192.168.6.1
NAGIOS_HOST_1_PARENTS =
NAGIOS_HOST_1_ICON = firewall2.png

NAGIOS_HOST_2_USE = host-template-linux
NAGIOS_HOST_2_NAME = switch.privat.lan
NAGIOS_HOST_2_ALIAS = HP 1820-48G Netzwerk-Switch
NAGIOS_HOST_2_ADDRESS = 192.168.6.10
NAGIOS_HOST_2_PARENTS = fritzbox.privat.lan
NAGIOS_HOST_2_ICON = switch3.png

NAGIOS_HOST_3_USE = host-template-linux
NAGIOS_HOST_3_NAME = meineis.privat.lan
NAGIOS_HOST_3_ALIAS = eisfair-Server
NAGIOS_HOST_3_ADDRESS = 192.168.6.11
NAGIOS_HOST_3_PARENTS = switch.privat.lan
NAGIOS_HOST_3_ICON = server2.png

Wenn man die Hosts eingegeben hat, kann man sich an die Definitionen von Commands und Services machen.

Schritt 2 - Die Commands konfigurieren

Nun ruft man den Menüpunkt „Configure Commands“ auf und legst einen neuen Befehl an. Über NAME gibt einen beschreibenden Namen für den Befehl an, über COMMAND lässt sich ein vorhandener Befehl aus dem Verzeichnis /usr/local/nagios/plugins auswählen, über OPTION legst man die Kommandozeilenparameter fest und PERFDATA bestimmt ob das Programm Performance-Daten zurück liefert (Diese Information sollte sich der Plugin-Beschreibung entnehmen lassen).

NAGIOS_COMMAND_51_NAME = check_dns
NAGIOS_COMMAND_51_COMMAND  = check_dns
NAGIOS_COMMAND_51_OPTION = -s $HOSTADDRESS$ -H $ARG1$ -a $ARG2$
NAGIOS_COMMAND_51_PERFDATA = yes

In diesem Beispiel werden in den Optionen verschiedene Makros, wie $HOSTADDRESS$, $ARG1$ oder $ARG2$ verwendet, welche im Detail auf dieser Seite beschrieben werden: https://assets.nagios.com/downloads/nagioscore/docs/nagioscore/3/en/macrolist.html

Dies ist die Beschreibung der verwendeten Schalter des check_dns-Befehls. Üblicherweise lassen sich die zur Verfügung stehenden Schalter eines Plugins durch die Schalter '-h' oder '–help' anzeigen, eine Garantie dafür kann aber nicht übernommen werden

Beispiel:

 ./check_dns --help
 -s, Optional DNS server you want to use for the lookup\\
 -H, The name or address you want to query\\
 -a, Optional IP-ADDRESS you expect the DNS server to return.\\
     HOST must end with a dot (.). This option can be repeated\\
     multiple times (Returns OK if any value match). If multiple\\
     addresses are returned at once, you have to match the whole\\
     string of addresses separated with commas (sorted\\
     alphabetically).

Schritt 3 - Die Services konfigurieren

Nachdem man den Befehl gespeichert hat, kann man nun über den Menüpunkt „Configure Services“ einen entsprechenden Service festlegen.

NAGIOS_SERVICE_39_USE = service-interval-1min
NAGIOS_SERVICE_39_SERVICE_DESCRIPTION = DNS
NAGIOS_SERVICE_39_HOSTGROUP_N = 0
NAGIOS_SERVICE_39_HOST_N = 1
NAGIOS_SERVICE_39_HOST_1_NAME = meineis.privat.lan
NAGIOS_SERVICE_39_CHECK_COMMAND = check_dns
NAGIOS_SERVICE_39_CHECK_OPTION = !fritz.box!192.168.2.1!

Über USE wird ausgewählt wie häufig der Befehl ausgeführt werden soll, SERVICE_DESCRIPTION legt den Namen fest unter dem der Service im Web-GUI aufgeführt werden soll, HOST_x_NAME wählt den Server auf dem der Service läuft, COMMAND ist der Befehl der ausgeführt werden soll und OPTION gibt die Parameter an die an den Befehl übergeben werden sollen.

Achtung: Es gilt unbedingt zu beachten, dass ein Ausführungszeichen zum trennen der Werte verwendet wird und nicht etwas zur Negation eines Wertes Die Werte werden entsprechend der angegebenen Reihenfolge den Makros $ARG1$, $ARG2, usw. zugewiesen, welche in der Command-Konfiguration verwendet wurden.

Im Beispiel wird somit aus dieser Konfiguration folgender Befehlsaufruf generiert:

../check_dns -s meineis.privat.lan -H fritz.box -a 192.168.2.1\\