Netzwerk-Management mit Nagios
- Einleitung
- Nagios
- Aufbau und Funktionsweise
- Installation
- Konfiguration
- Objekte
- CGI-Konfiguration
- Ressourcen-Datei
- Inbetriebnahme
- Plugins
- Zusatzinformationen über Host/Services
- Benachrichtigungssystem
- Eventhandler
- Passive Tests
- Performance-Daten
- Addons / Alternative Weboberflächen
- Literatur und Verweise
Einleitung
Überwachung und regelmäßige Kontrolle von Netzwerken, deren Hardware (z.B. Server, Router, Switches), Systemen und Dienste (z.B. DNS, DHCP, E-Mail)
- rechtzeitige Information über Probleme
- Vereinfachung der Fehlersuche
- Erkennung von Trends
Nagios
- Anwendung zur Überwachung von Systemen und Netzwerken (GPLv2)
- Autor: Ethan Galstad
- Name: "NetSaint" (1999) --> Nagios (ab 2001)
- Plattform: UNIX-Varianten (linux, FreeBSD, ...)

Quelle: http://www.nagios.org/userprofiles/quickstats.php
- Überwachung von beliebigen Plattformen
- Überwachung von Diensten -> z.B. SMTP, POP3, HTTP, DNS
- Überwachung von Ressourcen -> z.B. CPU-Last, Platten-Nutzung
- Darstellung System-/Netzwerkstatus (Web-Interface)
- Ampelzustände (grün, gelb, rot)
- Berücksichtigung von Abhängigkeiten in Netzwerktopologie
- Benachrichtigung bei Problemen
- aktuelle Versionen:
- 2.11
- 3.01
Aufbau und Funktionsweise
Modularer Aufbau:- Nagios-Prozess:
- Aufruf Plugins
- Auswertung der Plugin-Ergebnisse
- verarbeitet angelieferte externe Daten
- Benachrichtigung (über Plugins)
- ergreift (optional) Maßnahmen
- Plugins:
- externe Programme für Service- und Host-Checks
- Rückgabe der 4 Zustände OK, WARNING, CRITICAL, UNKNOWN
- Grundausstattung Standard-Plugins
- Tauschbörse: http://www.nagiosexchange.org/
- selber schreiben
- externe Programme für Service- und Host-Checks
- persistente Datenhaltung
- Konfiguration über Textdateien (Automatisierung)
- Speicherung Zustandsdaten in Textdateien oder Datenbank (PostgreSQL, MySQL)
- ausführliche Logdatei (Statusmeldungen, Benachrichtigungen ...)
- Host-Checks:
- Erreichbarkeit eines Hosts (ICMP)
- unregelmässig, nur bei Bedarf

- Service-Checks:
- direkte Prüfung von Netzwerkdiensten (Ports, Protokollspiel)
- Plugins via Secure Shell auf entferntem Host ausführen
- Abfrage lokaler Ressourcen über das Netz
- Steuerung entfernter Plugins (CPU, Plattenplatz, Prozesse, ...) mittels SSH
- ermöglicht beliebige Befehle auf Zielhost
- Nagios Remote Plugin Executor (NRPE)
- Abfrage lokaler Ressourcen über das Netz
- Alternative zu SSH
- ermöglicht vorkonfigurierte Kommandos
- Überwachung via SNMP
- Abfrage lokaler Ressourcen über das Netz
- Simple Network Management Protocol (SNMP) stark verbreitet
- Nagios Service Check Acceptor (NSCA)
- passiver NSCA-Daemon wartet auf Testergebnisse
- Hauptanwendung ist Verteiltes Monitoring -> verteilte Nagios-Server senden Ergebniss an zentralen Nagios-Server
- Konfiguration: wann soll welche Personengruppe über welche Zustände/Ereignisse informiert werden
- frei konfigurierbare externe Programme (E-Mail, SMS, Voice ...)
- zeitlich gesteuertes Eskalationsmanagement
- verschiedene Sichtweisen auf Statuszustände/Probleme
- Austausch/Anzeige von Informationen, Bearbeitungszustände zwischen mehreren Bearbeitern
- Rückschau über vergangene Probleme, Benachrichtigungen, Verfügbarkeit
Installation
Installation von Nagios- Download aktuelle Version von http://www.nagios.org/download/
[root@tosh-psm75e-4 ~]# groupadd nagios [root@tosh-psm75e-4 ~]# groupadd nagcmd [root@tosh-psm75e-4 ~]# useradd -g nagios -G nagcmd -d /usr/local/nagios -c "Nagios Admin" nagios [root@tosh-psm75e-4 ~]# usermod -G nagcmd apache [root@tosh-psm75e-4 ~]# mkdir /usr/local/nagios /etc/nagios /var/nagios [root@tosh-psm75e-4 ~]# chown nagios.nagios /usr/local/nagios /etc/nagios /var/nagios
[root@tosh-psm75e-4 ~]# cd /usr/local/src [root@tosh-psm75e-4 ~]# tar xvfz Pfad/zu/nagios-3.0.1.tar.gz [root@tosh-psm75e-4 ~]# cd nagios-3.0.1 [root@tosh-psm75e-4 ~]# ./configure --sysconfdir=/etc/nagios --localstatedir=/var/nagios --with-command-group=nagcmd \ --enable-embedded-perl [root@tosh-psm75e-4 ~]# make all [root@tosh-psm75e-4 ~]# make install [root@tosh-psm75e-4 ~]# make install-init # Init-Skript für Systemstart [root@tosh-psm75e-4 ~]# make install-commandmode # optional für Command-File-Mechanismus [root@tosh-psm75e-4 ~]# make install-config # erzeugt Beispielkonfigurationen
[root@tosh-psm75e-4 ~]# rpm -Uhv nagios-2.11-1.el5.rf.i386.rpm
- eigene Versionierung
- Download gesondert von http://www.nagios.org/download/
- aktuelle Version 1.4.11
[root@tosh-psm75e-4 ~]# cd /usr/local/src [root@tosh-psm75e-4 ~]# tar xvfz Pfad/zu/nagios-plugins.1.4.11.tar.gz [root@tosh-psm75e-4 ~]# cd nagios-plugins-1.4.11 [root@tosh-psm75e-4 ~]# ./configure --sysconfdir=/etc/nagios --localstatedir=/var/nagios [root@tosh-psm75e-4 ~]# make [root@tosh-psm75e-4 ~]# make install # nach /usr/local/nagios/libexec # Plugins im contrib-Verzeichnis # bei Bedarf manuell kopieren
[root@tosh-psm75e-4 ~]# rpm -Uhv nagios-plugins-1.4.11.el5.rf.i386.rpm
- Voraussetzung für die Nutzung des Webinterfaces ist eine funktionierende Webserver-Installation (Empfehlung: Apache)
[root@tosh-psm75e-4 ~]# make install-webconf # installiert nagios.conf in Apache-Konfigurationsverzeichnis # (Konfiguration CGI-Verzeichnis und Basis-Webverzeichnis)
- Nutzer-Authentisierung einrichten
[root@tosh-psm75e-4]# htpasswd -c /etc/nagios/htpasswd.users schier New password: Re-type new password: Adding password for user schier [root@tosh-psm75e-4]# chown apache /etc/nagios/htpasswd.users [root@tosh-psm75e-4]# chmod 600 /etc/nagios/htpasswd.users
- alternative Authentifikationsmöglichkeiten -> Apachemodule für LDAP-, PAM-, SMB-Authentifikation ...
Konfiguration
- Konfiguration: Textdateien
- globale Standard-Einstellungen nach Installation
- verzweigt auf weitere Konfigurationsdateien
... cfg_file=/etc/nagios/objects/commands.cfg cfg_file=/etc/nagios/objects/contactgroups.cfg cfg_file=/etc/nagios/objects/contacts.cfg cfg_file=/etc/nagios/objects/hostgroups.cfg cfg_file=/etc/nagios/objects/hosts.cfg cfg_file=/etc/nagios/objects/services.cfg cfg_file=/etc/nagios/objects/timeperiods.cfg ... # alle .cfg-Dateien im Verzeichnis - rekursive Auswertung # cfg_dir=/etc/nagios/nagioskurs ...
Objekte
- beschreiben eine Einheit: Host, Service, Kontakt und dazugehörige Gruppen, Kommandos
- Vererbung von Eigenschaften (Templates)
define object-type { parameter value parameter value }
object-type | Erläuterung |
---|---|
host | zu überwachender Netzwerkknoten |
hostgroup | Zusammenfassung mehrerer Hosts |
service | zu überwachender Dienst (immer Host-Service-Paar) |
servicegroup | Zusammenfassung mehrerer Services |
contact | Person, die bei Problemen informiert wird (Sicht auf Webfrontend) |
contactgroup | Benachrichtigung nur über Kontaktgruppe möglich |
timeperiod | Zeitfenster für Benachrichtigung der Kontaktgruppen |
command | externe Programme (Plugins, Benachrichtigungsprogramme ...) |
servicedependency | Abhängigkeiten zwischen Services |
serviceescalation | Eskalationsmanagement für Services |
hostdependency | Abhängigkeiten zwischen Hosts |
hostescalation | Eskalationsmanagement für Hosts |

Zu überwachende Hosts festlegen (host)
- Basis für alle Host- und Service-Checks
define host{ host_name c37-1b-305-1 alias br-1b-305-1-1 address 134.109.137.81 check_command check-host-alive max_check_attempts 5 check_period 24x7 contact_groups switch-admins notification_interval 120 notification_period 24x7 notification_options d,u,r }
notification_options d down u unreachable (nicht erreichbar, weil andere Netzkomponente ausgefallen) r recovery (OK-Zustand nach einem Fehler) f flapping (Zustand wechselt sehr schnell) s scheduled downtime (Info über Wartungszeiträume)
Templates
- Definition von grundlegenden Objekteigenschaften (Hosts, Services)
- anderen Objekten "mitgeben"
define host{ name generic-host register 0 check_command check-host-alive max_check_attempts 5 check_period 24x7 notification_interval 120 notification_period 24x7 notification_options d,u,r } define host{ host_name c37-1b-305-1 use generic-host alias br-1b-305-1-1 address 134.109.137.81 contact_groups switch-admins }
Hosts gruppieren (hostgroup)
- Zusammenfassung mehrerer Hosts zu logischen Einheiten
- gemeinsame Darstellung im Webinterface
- Anwendung bestimmter Objekte (z.B. Services) auf ganze Hostgruppe
define hostgroup{ hostgroup_name switches alias L2/L3-Switches members c6-1-060-1,c37-1b-305-1,c29-1-060-11,c29-1b-305c-1 hostgroup_members hostgroup1,hostgroup2 }
- Platzhalter * weist alle Hosts einer Hostgroup zu
- alternativ Eintrag in hosts.cfg möglich (hostgroup switches)
Zu überwachende Dienste festlegen (service)
- Service = Kombination aus Host- und Service-Name (eindeutig)
- Service-Namen können mehrmals in Kombination mit verschiedenen Hosts auftauchen
define service{ host_name c37-1b-305-1 service_description PING check_command check_ping!100.0,20%!500.0,60% max_check_attempts 5 normal_check_interval 5 retry_check_interval 1 check_period 24x7 notification_interval 120 notification_period 24x7 notification_options w,u,c,r contact_groups switch-admins }
notification_options c critical w warning u unknown r recovery f flapping s scheduled downtimeNagios unterscheidet die zwei Zustandsarten Soft-State und Hard-State.
- Fehler werden wiederholt auf "Echtheit" geprüft
- Benachrichtigungen nur über Hard States

- Serviceeintrag für mehrere Hosts oder Hostgroups möglich
- Platzhalter * weist allen Hosts den Service zu
Services zusammenfassen (servicegroup)
define servicegroup{ servicegroup_name all-ping alias All Pings members c6-1-060-1,PING,c37-1b-305-1,PING,c29-1-060-11,PING,c29-1b-305c-1,PING,saturn,PING,lms-1-060-1,PING,testserver,PING servicegroup_members servicegroup1,servicegroup2 }
- alternativ Eintrag in services.cfg möglich (servicegroup all-ping)
Adressaten für Fehlermeldungen festlegen (contact)
- Kontakt = Person, an die über eine Contactgroup adressierte Nachrichten gehen
- Sicht auf Hosts und Services im Webinterfaces
define contact{ contact_name schier # identisch mit Nutzernamen Webfrontend ! alias Thomas Schier service_notification_period 24x7 host_notification_period 24x7 service_notification_options w,u,c,r host_notification_options d,u,r service_notification_commands notify-by-email host_notification_commands host-notify-by-email email schier@hrz.tu-chemnitz.de can_submit_commands 1 }
Nachrichtenempfänger (contactgroup)
- Schnittstelle zwischen Benachrichtigungssystem und Kontakten
define contactgroup{ contactgroup_name switch-admins alias Etherswitch Administrators members schier contactgroup_members contactgroup1,contactgroup2 }
Kommandos (command)
- command-Objekte definieren auszuführende Kommandos
... define command{ command_name check_ping command_line $USER1$/check_icmp -H $HOSTADDRESS$ -w $ARG1$ -c $ARG2$ -p 5 } ...
- Verwendung von Makros
Makro | Beschreibung |
---|---|
$USERx$ | 32 User-Makros (x=1...32) definiert in resource.cfg |
$ARGx$ | commandline-Argumente |
$MACRO$ | Vielzahl vordefinierter Makros, z.B. $HOSTADDRESS$ |
Zeitfenster definieren (timeperiod)
- Zeitfenster, in denen Nagios Benachrichtigungen erzeugt
define timeperiod{ timeperiod_name 24x7 alias 24 Hours A Day, 7 Days A Week sunday 00:00-24:00 monday 00:00-24:00 tuesday 00:00-24:00 wednesday 00:00-24:00 thursday 00:00-24:00 friday 00:00-24:00 saturday 00:00-24:00 } define timeperiod{ ... monday 00:00-08:00,12:00-13:00,17:00-24:00 may 1 00:00-24:00 2008-12-24 - 2009-01-08 / 2 00:00-24:00 ... }
CGI-Konfiguration
- /etc/nagios/cgi.cfg für korrekte Funktion Webfrontend
main_config_file=/etc/nagios/nagios.cfg # Nagios-Hauptkonfigurationsdatei physical_html_path=/usr/local/nagios/share # Pfad zu Nagios-HTML-Dokumenten url_html_path=/nagios # Pfad aus Sicht des Webservers use_authentication=1 # nur authentisierter Zugriff refresh_rate=90 # Zeit Browser refresh default_statusmap_layout=3 # grafische Darstellungsform (3 = Balanced Tree) authorized_for_all_services=schier # Sicht auf alle Services authorized_for_all_hosts=schier # Sicht auf alle Hosts ...
Ressourcen-Datei
- Definition von Makros in /etc/nagios/resource.cfg
$USER1$=/usr/local/nagios/libexec # Pfad zu den Plugins
Inbetriebnahme
[root@tosh-psm75e-4 ~]# /usr/local/nagios/bin/nagios -v /etc/nagios/nagios.cfg
[root@tosh-psm75e-4 ~]# /etc/init.d/nagios start [root@tosh-psm75e-4 ~]# /etc/init.d/nagios reload # Reload nach Konfigurationsänderungen
- neues Scheduling nach Reload
- Nagios plant, alle Tests neu durchzuführen
- Spreading
- Nagios verteilt die Startzeiten der Tests über einen konfigurierbaren Zeitraum (max_host_check_spread, max_service_check_spread)
Plugins
- eigene, selbständige Programme
- Standard-Plugins http://www.nagios.org/download/ (Official Nagios Plugins)
- Tauschbörse http://www.nagiosexchange.org/
- definierte Nagios-Schnittstellen -> Rückgabewerte:
Status Bezeichnung Beschreibung 0 OK alles i.O. 1 WARNING Warnschwelle überschritten 2 CRITICAL Kritische Schwelle überschritten oder Abbruch nach Timeout 3 UNKNOWN Fehler innerhalb des Plugins - Administrator definiert Schwellen
- Textausgabe (human readable), ab Nagios 3.0 mehrzeilig bis 8 KByte lang
- Empfehlung: einzeilig (Darstellung im Web)
- ART_DES_CHECKS STATUS - Infotext | evtl. Performancedaten
z.B. Ausgabe des Plugin check_icmp OK - c37-1b-305-1: rta 1.473ms, lost 0%|rta=1.473ms;100.000;200.000;0; pl=0%;20;40;;
- Hilfe mittels Option --help (keine Manuals)
Plugins für Netzwerkdienste
- Prüfung von Diensten auf Basis netzwerkfähiger Prokolle
- generische Plugins (check_tcp, check_udp) testen nur auf offene Ports
- TCP-Ports prüfen (check_tcp)
- UDP-Ports prüfen (check_udp)
- spezifische Plugins testen, ob sich der Dienst auch wie erwartet verhält
- z.B. Greeting-Anwort eines Mailservers
220 mailbox.hrz.tu-chemnitz.de ESMTP
-
- Erreichbarkeitstest (check_ping, check_icmp)
- Mailserver überwachen (check_smtp, check_pop, check_imap)
- FTP-Server überwachen (check_ftp)
- Web-Server überwachen (check_http, check_squid)
- DNS-Server überwachen (check_dns, check_dig)
- DHCP-Server überwachen (check_dhcp)
- Datenbanken überwachen (check_mysql, check_oracle, check_pgsql)
- ...
[schier@tosh-psm75e-4 plugins]$ ./check_icmp -H c37-1b-305-1 -w 100.0,20% -c 200.0,40% OK - c37-1b-305-1: rta 2.081ms, lost 0%|rta=2.081ms;100.000;200.000;0; pl=0%;20;40;;
define command{ command_name check_ping command_line $USER1$/check_icmp -H $HOSTADDRESS$ -w $ARG1$ -c $ARG2$ }
define service{ host_name c37-1b-305-1 service_description PING check_command check_ping!100.0,20%!200.0,40% ... }
Plugins für lokale Tests
- Test von lokalen Ressourcen
- Auslastung Festplattenkapazität (check_disk)
- Auslastung Swap (check_swap)
- Systemlast (check_load)
- Prozesse überwachen (check_procs)
- Logfile kontrollieren (check_log)
- ...
[schier@tosh-psm75e-4 plugins]$ ./check_load -w 10.0,8.0,5.0 -c 15.0,10.0,8.0 OK - load average: 0.13, 0.14, 0.17|load1=0.130;10.000;15.000;0; load5=0.140;8.000;10.000;0; load15=0.170;5.000;8.000;0;
- lokale Tests auf entfernten Hosts erfordern Hilfsmittel:
- Start der Plugins über SSH, NRPE
Plugins via SSH ausführen
- sinnvoll bei entfernten UNIX-Systemen
- Installation der Plugins für lokale Tests auf entferntem Rechner
- Nagios-Account auf entferntem Rechner
- Erzeugen SSH-Schlüsselpaar und Ablegen Public Key im entfernten Nagios-Home-Verzeichnis
[nagios@tosh-psm75e-4]$ ssh-keygen -b 2048 -f id_dsa -t dsa -N ''
- check_by_ssh auf Nagios-Server
[nagios@tosh-psm75e-4 plugins]$ ./check_by_ssh -H testserver -i /usr/local/nagios/.ssh/id_dsa -C "/usr/local/nagios/libexec/check_load -w 10.0,8.0,5.0 -c 15.0,10.0,8.0" OK - load average: 0.06, 0.07, 0.02|load1=0.060;10.000;15.000;0; load5=0.070;8.000;10.000;0; load15=0.020;5.000;8.000;0;
define command{ command_name check_ssh_load command_line $USER1$/check_by_ssh -H $HOSTADDRESS$ -i /usr/local/nagios/.ssh/id_dsa -C "$USER1$/check_load -w $ARG1$ -c $ARG2$" }
define service{ host_name testserver service_description Load check_command check_ssh_load!10.0,8.0,5.0!15.0,10.0,8.0 ... }
NRPE
- Nagios Remote Plugin Executor führt Programme auf entferntem Host aus
- Plugins für lokale Tests
- Plugins für Netzwerkdienste (z.B. zum Test nicht direkt erreichbarer Rechner)
- kein entferntes Nutzerkonto notwendig
- nur explizit konfigurierte Tests möglich
- check_nrpe auf Nagios-Server installieren
- Programm nrpe auf Zielsystem einspielen
- nrpe-2.12 (linux)
- nrpe_nt.0.8b (Windows)
- Plugins für lokale Tests auf Zielsystem einspielen
- NRPE Agent for Windows - incl. Plugins for Windows
... command[check_cpuload] ="C:\Program Files\Nagios\nrpe_plugins\nrpe_nt plugins\bin\cpuload_nrpe_nt.exe" 50 80 ...
[nagios@tosh-psm75e-4 plugins]$ ./check_nrpe -H lms-1-060-1 -c check_cpuload NOW: Mean:10.631579% Variance: 20.493510% CUMULATIVE: Mean:10.631579% Variance: 20.493510%
define command{ command_name check_nrpe command_line $USER1$/check_nrpe -H $HOSTADDRESS$ -c $ARG1$ }
define service{ host_name lms-1-060-1 service_description CPU-Last check_command check_nrpe!check_cpuload ... }
SNMP-Plugins
- SNMP auf "allen" netzwerkfähigen Geräten verfügbar (Switches, Router, USV, Messfühler, Linux, Windows ...)
- Voraussetzung -> SNMP-Daemon konfigurieren
- generisches SNMP-Plugin check_snmp
[nagios@tosh-psm75e-4 plugins]$ ./check_snmp -H c29-1b-305c-1 -C [communitystring] -o 1.3.6.1.4.1.9.2.1.58.0 -w 50 -c 90 SNMP OK - 5 | iso.3.6.1.4.1.9.2.1.58.0=5
- spezielle SNMP-Plugins
- http://www.nagiosexchange.org/ Kategorie Check Plugins -> Software -> SNMP
- z.B. nagios-plugin-cisco-snmp.tar.gz enthält mehrere Cisco-spezifische Plugins
- http://www.manubulon.com/nagios/
- spezielle MIB-2- und Herstellerspezifische SNMP-Plugins
- http://www.nagiosexchange.org/ Kategorie Check Plugins -> Software -> SNMP
[root@tosh-psm75e-4 plugins]$ ./check_snmp_cisco_loadavg -H c29-1b-305c-1 -C [communitystring] -w 50 -c 90 Status is OK - CPU load average (5 min): 7 % [root@tosh-psm75e-4 plugins]# ./check_snmp_cisco_memutil -H c29-1b-305c-1 -C [communitystring] -w 80 -c 90 Status is OK - MEMORY: total: 3.88 MB, used: 2.78 MB (72%), free: 1.10 MB
Zusatzinformationen über Host/Services
- erzeugt zusätzliche Infos (Weboberfläche)
define host{ host_name c37-1b-305-1 notes Access-L2-Switch in 1B/305 notes_url https://tucoma.hrz.tu-chemnitz.de/tucoma/index.php?VIEW=KOMPONENTE&KP_NR=468449 action_url https://c37-1b-305-1.hrz.tu-chemnitz.de/ icon_image my_lanswitch.jpg statusmap_image my_lanswitch.jpg }
notes_url - verweist auf (HTML)-Datei mit Zusatzinfos (Wartungsverträge, Hotline-Nummern, Systemkonfiguration usw. )action_url - Link auf auszuführende Aktion (CGI) oder Webseite
![]()
Benachrichtigungssystem

- Wartungszeiten werden über die Weboberfläche konfiguriert (Schedule downtime for this host/service)
- außerhalb der notification_period werden evtl. Nachrichten unterdrückt (nicht verworfen !), und zu Beginn des Benachrichtigungszeitraumes einmal an den Kontakt versendet (Rescheduling)
- einer Person können mehrere Kontakte zugeordnet werden
- z.B. Dienst - Mail und Außerdienst - SMS
- Formatierung der Mail mit Hilfe der Nagios-Standard-Makros
- Eskalations-Management -> mehrstufiger Support
- Basis Anzahl der Benachrichtigungen
Abhängigkeiten
Services von Hosts
- Ziel Service-Überwachung
- Service abhängig von mehreren Faktoren (Host, Netzkomponenten)
- Administrator möchte über die eigentliche Ausfallursache eines Dienstes informiert werden
- Host-Parameter parents ermöglicht einfache Informationen über Netzwerktopologie
define host{ host_name c37-1b-305-1 ... parents c6-1-060-1 }
- Strukturierung ist Ansichtsache
- Segmentgrenze sind Switches oder Router
- Ausgangspunkt Service-Check (wenn OK, keine Host-Checks)

- Dienst HTTP nicht mehr erreichbar
- Host-Check von testserver -> nicht erreichbar
- Host-Check von c29-1b-305c-1 -> nicht erreichbar
- Host-Check von c37-1b-305-1 -> erreichbar
- Auswirkung auf Host-Zustände (UP, DOWN, UNREACHABLE)
- topologisch bedingte Störungen in Web-Oberfläche unter Network Outages
Services von Services (servicedependency)
- bei Ausfall eines Services werden Fehlermeldungen von abhängigen Services unterdrückt
- Beispiel: Fällt der Plugin Executor (NRPE) aus, schlagen auch alle darüber laufenden lokalen Plugin-Tests fehl
[schier@tosh-psm75e-4 plugins]$ ./check_nrpe -H lms-1-060-1 NRPE_NT v0.8b/2.0
define command{ command_name test_nrpe command_line $USER1$/check_nrpe -H $HOSTADDRESS$ }
define service{ host_name lms-1-060-1 service_description NRPE check_command test_nrpe ... }
define servicedependency{ host_name lms-1-060-1 # Master-Host service_description NRPE # Master-Service dependent_host_name lms-1-060-1 dependent_service_description Load notification_failure_criteria c,u # wenn Masterservice critical, # unknown, keine "Load"-Meldung execution_failure_criteria n # dennoch Tests von Load }
Eventhandler
- Aufruf beliebiger Programme bei Zustandswechsel OK -> Fehlerzustand eines Hosts/Services
- z.B. Neustart Dienste
define command{ command_name restart-httpd command_line $USER1$/eventhandler/restart-httpd.sh $SERVICESTATE$ $SERVICESTATETYPE$ $SERVICEATTEMPT$ }
define service{ host_name testserver service_description HTTP ... event_handler restart-httpd ... }
Passive Tests
- Nagios verarbeitet passiv asynchrone Nachrichten
- verteiltes Monitoring mittels NSCA (Nagios Service Check Acceptor)
- send_ncsa -> NCSA-Daemon
- SNMP-Traps
- verteiltes Monitoring mittels NSCA (Nagios Service Check Acceptor)
- über External Command File (Schnittstelle für externe Kommandos)
- Named Pipe (FIFO)
prw-rw---- 1 nagios nagcmd 0 16. Mai 10:42 nagios.cmd|
- Form des Kommandos
[zeitstempel] kommando;argumente z.B. [zeitstempel] PROCESS_SERVICE_CHECK_RESULT;hostname;service;returnwert;plugin-output
Performance-Daten
- grafische Darstellung von Meßwerten über die Zeit mittels externer Programme
- 2 Performancedatenklassen
- Nagios-interne Performancedaten
- Performancedaten, die das Plugin mit dem Testresultat übergibt
- Schreiben in Datei oder direkte Übergabe an externes Programm
- vordefiniertes Format:
name=wert;warn;krit;min;max
[schier@tosh-psm75e-4 ~]$ /usr/local/nagios/libexec/check_icmp -H c29-1b-305c-1 OK - c29-1b-305c-1: rta 3.084ms, lost 0%|rta=3.084ms;200.000;500.000;0; pl=0%;40;80;;
- Daten werden über ein Schablone (Template) in einer Datei abgelegt
- Service-Performance-Daten regelmäßig (im Gegensatz zu Host-Performance-Daten)
process_performance_data=1 service_perfdata_file=/var/nagios/service-perfdata.dat service_perfdata_file_template=[SERVICEPERFDATA]\t$TIMET$\t$HOSTNAME$\t$SERVICEDESC$\t$SERVICEEXECUTIONTIME$\t$SERVICELATENCY$\t$SERVICEOUTPUT$\t$SERVICEPERFDATA$ service_perfdata_file_mode=a service_perfdata_file_processing_interval=0 service_perfdata_file_processing_command=process-service-perfdata-file
/var/nagios/service-perfdata.dat ----- ... [SERVICEPERFDATA] 1210682172 c6-1-060-1 PING 0.010 0.072 OK - 134.109.254.1: rta 0,843ms, lost 0% rta=0,843ms;100,000;500,000;0; pl=0%;20;60;; ...Verarbeitung durch externe Kommandos
- direkter Kommando-Aufruf nach jedem Testergebnis
- Performance !
process_performance_data=1 service_perfdata_command=process-service-perfdata

- Nagiosgraph -> http://nagiosgraph.wiki.sourceforge.net/
define command{ command_name process-service-perfdata command_line /usr/bin/perl /usr/local/nagios/nagiosgraph/insert.pl "$LASTSERVICECHECK$||$HOSTNAME$||$SERVICEDESC$||$SERVICEOUTPUT$||$SERVICEPERFDATA$" }
- Perf2rrd -> http://perf2rrd.sf.net/
- drraw -> http://www.taranis.org/drraw/
- NagiosGrapher -> http://sourceforge.net/project/showfiles.php?group_id=160020
Addons / Alternative Weboberflächen
- Nuvola-Style basierend auf Javascript
- NDOUtils (Nagios Data Objects Utilities)
- Werkzeuge schreiben alle Daten (Konfiguration, Ereignisse, Check-Ergebnisse) in eine Datenbank
- NagVis visualisiert Host- und Servicezustände in einer vom Anwender vorgegebenen Grafik
Literatur und Verweise
Bücher
Wolfgang BarthNagios, System- und Netzwerk-Monitoring
2., aktualisierte und erweiterte Auflage
ISBN 978-3937514468
Open Source Press, 2008