Menu
- PNP4Nagios 0.6.x
- PNP4Nagios 0.4.x
NPCD (Nagios-Perfdata-C-Daemon) wurde geschrieben um die asynchrone Bearbeitung von Nagios Performancedaten zu ermöglichen.
In großen Nagios-Installationen kann es zu nicht akzeptierbaren Verspätungen seitens der Checks kommen. Das bedeutet, dass Nagios einen Check zum Zeitpunkt x
ausführen soll, diesen aber erst y
Sekunden später tatsächlich ausführt.
Wenn man dem Nagios Daemon mitteilt, dass man nach jedem einzelnen Check auch die Performancedaten verarbeiten möchte, so geht dies bis zu einem bestimmten Grad gut, ab einer gewissen Anzahl von Checks pro Sekunde allerdings kommt man relativ schnell zu den sog. Latency-Problemen.
Um die Anzahl der Aktionen pro Check zu verringern, kann man nun PNP im Bulk Mode verwenden, wobei die Performancedaten zunächst vom Nagios Prozess gesammelt und anschließend ebenfalls vom Nagios-Prozess selbst verarbeitet werden.
Man kann aber auch dem Nagios-Prozess mitteilen, dass die Verarbeitung der Performancedatendateien lediglich durch das Verschieben der Dateien in ein Spool-Verzeichniss geschehen soll, welches für den Nagios-Prozess selbst eine sehr schnelle Aktion ist und die Performance nicht nennenswert beeinflusst und somit dem Core mehr Zeit für seine eigentliche Arbeit lässt: weitere Checks ausführen, Alamierungen bereitstellen, etc.
Wie bereits erwähnt, ist die Arbeit der Performancedatenverarbeitung durch das schnelle Verschieben der Datei bereits erledigt, aber das bringt die Performancedaten noch nicht in die RRD-Datenbank.
Um den Transport der Performancedatendateien kümmert sich nun der NPCD-Daemon, abseits vom Nagios Prozess, in dem er regelmäßig in das Spool-Verzeichnis guckt und für jede dort gefundene Datei eine Aktion ausführt.
Nachdem NPCD gestartet wurde, erstellt er sich eine Liste von Dateinamen des Spoolverzeichnisses und startet für jede gefundene Datei einen Thread zur weiteren Verarbeitung mittels dem perfdata_file_run_cmd
und dem optionalen perfdata_file_run_cmd_arg
als zusätzliches Argument.
Da das Format der Performancedatendateien dem Format der 'normalen' PNP Bulkmodus Dateien gleicht, kann NPCD nun für jede gefundene Datei also process_perfdata.pl
im Bulk Modus aufrufen.
Pro:
Kontra:
service_perfdata_file_processing_interval
)
NPCD muss zwangsläufig über eine Konfigurationsdatei gesteuert werden. Eine Beispielkonfiguration liegt der PNP-Installation als npcd.cfg-sample
bei.
Nach Umbenennen der -sample
Datei zu npcd.cfg
kann NPCD nun wie folgt gestartet werden:
/usr/local/nagios/bin/npcd -f /usr/local/nagios/etc/pnp/npcd.cfg
oder
/usr/local/nagios/bin/npcd -d -f /usr/local/nagios/etc/pnp/npcd.cfg
um NPCD im Hintergrund als Daemon laufen zu lassen.
Hinweis:
Die -sample
Datei sollte in jedem Fall in npcd.cfg
umbenannt werden, da sie sonst bei einem Update von PNP überschrieben werden könnte.
Dies sind die essentiellen Konfigurationsdirektiven für NPCD:
# Privilege Options user = nagios group = nagios # Logging Options log_type = syslog log_file = /usr/local/nagios/var/npcd.log max_logfile_size = 10485760 log_level=0 # Processing Options perfdata_spool_dir = /usr/local/nagios/var/spool/perfdata/ perfdata_file_run_cmd = /usr/local/nagios/libexec/process_perfdata.pl perfdata_file_run_cmd_args = -b # Thread Options npcd_max_threads=5 # greedy options use_load_threshold = 0 load_threshold = 10.0 # Process Options pid_file=/var/run/npcd.pid
log_type = file
wird diese Logdatei verwendetperfdata_file_run_cmd
angehängt wird<perfdata_file_run_cmd> <perfdata_file_run_cmd_args> <filename_from_perfdata_spool_dir>
use_load_threshold
auf 1 gesetzt ist, werden bei Erreichen dieses load limits keine neuen Threads gestartet