… und den Überblick behalten ist gar nicht so einfach. Inzwischen haben wir einen grossen Teil der zu überwachenen Hosts und Services konfiguriert. Hier mal ein paar Tricks…
1) Konfig aufsplitten
Die Hauptconfig ist die /etc/nagios.cfg - per default included diese diverse .cfg Dateien für Hosts, Services, Hostgroups und so weiter. Das passiert mit der cfg_file directive. Allerdings ist es ziemlich unpraktisch alles in diesen Dateien zu konfigurieren. Einfacher ist es sich Verzeichnisse anzulegen und einzelne Konfigs innerhalb dieser Verzeichnisse zu pflegen. konkret sieht das momentan bei uns so aus:
cfg_dir=/etc/nagios/hosts/
cfg_dir=/etc/nagios/services/
Nagios inluded automatisch alle Dateien mit .cfg Endung in diesen Verzeichnissen. Damit kann man schonmal sehr einfach pro host eine eigene Konfig-Datei anlegen.
2) Templates nutzen
Für die meisten services und hosts gibt man sowieso immer wieder die selben Konfigs an. All das kann man in einem Template zusammenfassen und spaeter über die use Direktive verwenden. Zum Beispiel nutzen all unsere Hosts momentan das folgende in /etc/nagios/hosts/_templates.cfg definierte Template:
define host{
name host-template
notifications_enabled 1 ; Host notifications are enabled
event_handler_enabled 1 ; Host event handler is disabled
flap_detection_enabled 1 ; Flap detection is disabled
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
check_command check-fast-alive
checks_enabled 1
max_check_attempts 10
notification_interval 120
notification_period 24x7
notification_options d,u,r
register 0 ; fuer templates!
}
Alles was davon abweicht kann im entsprechenden Host Eintrag überschrieben werden. Ein normaler Host eintrag besteht also nur noch aus ein paar Zeilen:
define host{
use host-template
host_name fileserver.cosmo
alias CosmoCode Fileserver
address 192.168.0.75
}
3) Hostspezifisches zum Host
Es ist nicht nötig Services und Hosts in seperaten Konfigdateien zu konfigurieren. Stattdessen macht es Sinn Services die sehr spezifisch für einen Host sind und nirgends wiederverwendet werden können auch in der Konfig des Hosts vorzunehmen. Bestes Beispiel sind die Checks für HTTP Virtualhosts. Siehe nächsten Punkt.
4) VirtualHosts nicht als Host
Als Nagios host sollten nur physikalische Hosts eingerichtet werden. HTTP VirtualHosts können dann simpel mit einem selbstdefinierten Check getestet werden. Einfach folgende Check Kommandos in /etc/nagios-plugins/config/http.cfg anlegen:
define command{
command_name check_httppage
command_line /usr/lib/nagios/plugins/check_http -H $ARG1$ -u $ARG2$
}
define command{
command_name check_httpport
command_line /usr/lib/nagios/plugins/check_http -H $ARG1$ -p $ARG2$ -u $ARG3$
}
Damit lassen sich dann Beliebige URLs checken:
define service{
use service-template
service_description HTTP DokuWiki
host_name fileserver.cosmo
check_command check_httppage!wiki.cosmo!/dmz:gateway
}
Obiges Kommando überprüft die Erreichbarkeit von http://wiki.cosmo/dmz:gateway wobei wiki.cosmo ein VirtualHost auf dem fileserver ist.
5) SNMP ist dein Freund
Mit SNMP und selbstdefinierten OIDs eröffnen sich ganz neue Welten. So überwachen wir momentan beispielsweise Platten-Belegung und Platten-Temperatur einiger Remote-Rechner. Wie das geht erzähl ich vielleicht ein andernmal…