Gerät und ersten Service in Nagios definieren

Die Definition eines Geräts in Nagios ist die Grundvoraussetzung für das Monitoring.

Grundsätzliches

Bevor man mit der Konfiguration von Geräten beginnt, sollte man sich ein paar Gedanken zur Struktur im Verzeichnis /etc/nagios3/conf.d machen. Nagios ist es egal, wie viele Unterordner man dort anlegt. Somit kann man sich dort eine schöne Ordnerstruktur anlegen und dahinein seine Konfigurationsfiles legen. Eine Struktur wäre z.B.

  • Server
  • Clients
  • Drucker
  • Switche

Seid ihr euch über die Struktur einig, dann kanns losgehen.

Anlegen eines Windows-Clients

Legt eine Datei im Verzeichnis /etc/nagios3/conf.d/ an. Der Name ist freiwählbar. Die Dateiendung muss .cfg lauten.

define host{
        use                     generic-host            ; Name of host template to use
        host_name               Windows1
        alias                   Windows1
        address                 192.168.2.10
        }

Services definieren

Man kann in Nagios zweierlei Abfragen definieren.

  • Abfrage über das Netzwerk
  • Abfrage über das Netzwerk, mit installiertem Agent auf dem Windows-PC

Die zweite Variante werde ich später vorstellen.

Die Services werden so definiert

define service{
        use                             generic-service         ; Name of service template to use
        host_name                       Windows1
        service_description             PING
	check_command			check_ping!100,10%!250,20%
        }


In diesem Fall wird ein Ping von Nagios an den Windows-Client gesendet. Die Prozentangaben geben die Kritikalität an, ab wann Nagios eine Nachricht an die Administratoren senden soll.

Der Aufbau der define service Kategorie ist

  • use = Welcher Service ist zu verwenden? (genaue Beschreibung findet ihr hier –> klick
  • host_name = wie in define host angegeben
  • service_description = Name des Services, wie er in der Nagios Weboberfläche angezeigt werden soll (kann frei definiert werden)
  • check_command = Der Abfragebefehl, wie er im Plugin definiert wurde.

Nachdem der Host und der Service definiert wurden, muss man Nagios neustarten/neuladen. Das geht über die Konsole mit dem Befehl

sudo /etc/init.d/nagios3 reload

Contacts und Services in Nagios

Nagios bietet eine große Menge an Funktionen, die alle über Skripte konfiguriert werden können. Es wesentliches Feature ist die Benachrichtigung von Administratoren beim Eintreten eines definierten Ereignisses.

Anlegen von Kontakten

Die Kontakte sind standardmäßig in der Datei contacts.cfg zu finden. Ich habe die Datei in den Ordner /etc/nagios3/conf.d/contacts geschoben, der Übersichtlichkeit wegen.
Es gibt zwei Arten von Kontakten, die man definieren kann

  • Einzel Kontakte, z.B. Personen
  • Kontaktgruppen

Kontakte

In der Standardinstallation von Nagios ist bereits eine ausreichende Konfiguration vorhanden, die man ohne größere Probleme an die eigenen Bedürfnisse anpassen kann.

define contact{
        contact_name                    stefan
        alias                           Stefan
        service_notification_period     workhours
        host_notification_period        workhours
        service_notification_options    w,u,c,r
        host_notification_options       d,r
        service_notification_commands   notify-service-by-email
        host_notification_commands      notify-host-by-email
        email                           
        }


Die workhours werden in der Datei timeperiods_nagios2.cfg hinterlegt. Die Benachrichtigungen an diesen Kontakt werden nur in seiner Arbeitszeit versendet.

service_notification_options und host_notification_options, hier wird definiert welche Benachrichtigungen der Admin erhalten soll. Die Buchstaben stehen für

  • n = NONE
  • w = WARNING
  • c = CRITICAL
  • r = RECOVERY

Mit dem Befehl notify-service-by-email wird festgelegt, dass Nagios den Kontakt via E-Mail benachrichtigen soll.

Nach diesem Beispiel kann man nun beliebig viele Kontakte definieren. Umständlich wird es, wenn die Kontakte unterschiedliche Benachrichtigungen erhalten sollen und evtl. für Gerätegruppen zuständig sein sollen. Eine denkbare Möglichkeit, es sind mehrere Administratoren für die Administration und Wartung der Drucker verantwortlich.
In einem solchen Fall ist es für die Nagios-Administration einfacher, die einzelnen Kontakte nochmal in Kontaktgruppen zusammen zufassen.

Kontaktgruppen

Die Kontaktgruppen können in der gleichen Datei wie die Kontakte konfiguriert werden.

define contactgroup{
        contactgroup_name       admins
        alias                   Nagios Administrators
        members                 stefan
        }


Das Einzige was zu beachten ist, members = contact_name. Schreibfehler verzeiht Nagios nicht, deshalb unbedingt zweimal kontrollieren. Members werden durch Kommas getrennt eingegeben, z.B. stefan, admin1, admin2. Der Alias ist frei wählbar.

Nachdem nun die Kontakte und Kontaktgruppen angelegt worden sind, kann begonnen werden sie auf einzelne Services zuzuordnen.

Services

In der Standardkonfiguration von Nagios sind bereits Services definiert. Sie sind in der Datei generic-service_nagios2.cfg zu finden. Die einzelnen Punkte sind in der Datei selbst sehr gut dokumentiert, dehalb werde ich darauf nicht näher eingehen.
contact_groups hier werden die frisch angelegten Kontaktgruppen den Services zugewiesen. Es können mehrere Gruppen durch Komma getrennt eingegeben werden.

define service{
        name                            generic-service ; The 'name' of this service template
        active_checks_enabled           1       ; Active service checks are enabled
        passive_checks_enabled          1       ; Passive service checks are enabled/accepted
        parallelize_check               1       ; Active service checks should be parallelized (disabling this can lead to major performance problems)
        obsess_over_service             1       ; We should obsess over this service (if necessary)
        check_freshness                 0       ; Default is to NOT check service 'freshness'
        notifications_enabled           1       ; Service notifications are enabled
        event_handler_enabled           1       ; Service event handler is enabled
        flap_detection_enabled          1       ; Flap detection is enabled
        failure_prediction_enabled      1       ; Failure prediction is enabled
        process_perf_data               1       ; Process performance data
        retain_status_information       1       ; Retain status information across program restarts
        retain_nonstatus_information    1       ; Retain non-status information across program restarts
		notification_interval           5		; Only send notifications on status change by default.
		is_volatile                     0
		check_period                    24x7
		normal_check_interval           5
		retry_check_interval            1
		max_check_attempts              4
		notification_period             24x7
		notification_options            w,u,c,r
		contact_groups                  admins
        register                        0       ; DONT REGISTER THIS DEFINITION - ITS NOT A REAL SERVICE, JUST A TEMPLATE!
        }