Table of Contents

NPCD

NPCD (Nagios-Perfdata-C-Daemon) wurde geschrieben um die asynchrone Bearbeitung von Nagios Performancedaten zu ermöglichen.

Einleitung

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 NPCD arbeitet

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.

Vor- und Nachteile

Pro:

Kontra:

NPCD Config

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.

npcd.cfg-sample

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

Die Direktiven

Zurück zur Doku