Documentation Version 0.6.42
Neues in PNP 0.6.xDie Arbeit an der Version 0.6.x ist in vollem Gange. Mit Version 0.6.x steigen wir von Subversion auf GIT um. Der Sourcecode ist bereits auf Sourceforge erhältlich. http://pnp4nagios.git.sourceforge.net Bisher umgesetzte Funktionen:
Über PNPAnforderungen an PluginsPNP benötigt zwingend gültige Performancedaten von Nagios-Plugins. Was sind also diese Performancedaten? Die Ausgabe eines Nagios Plugins darf bis Nagios 2.x maximal eine Zeile betragen. Diese Ausgabe wird, wenn das Plugin Performancedaten liefert, in zwei Teile zerlegt. Als Trennzeichen dient dabei das Pipe “|” Symbol. Beispiel check_icmp : OK - 127.0.0.1: rta 2.687ms, lost 0% | rta=2.687ms;3000.000;5000.000;0; pl=0%;80;100;; daraus ergibt sich der Output auf der linken Seite des Pipe-Symbols OK - 127.0.0.1: rta 2.687ms, lost 0% und die Performancedaten rta=2.687ms;3000.000;5000.000;0; pl=0%;80;100;; Wie man unschwer erkennt, sind die Performancedaten auf die maschinelle Verarbeitung ausgelegt. Das Format ist in den Developer Guidelines festgelegt (einen Auszug davon gibt es an dieser Stelle), es soll aber hier noch einmal kurz erläutert werden. rta=2.687ms;3000.000;5000.000;0; | | | | | | | |----|--|----|---------|-----|-|----- * Label |--|----|---------|-----|-|----- * Aktueller Wert |----|---------|-----|-|----- Einheit ( UOM = UNIT of Measurement ) |---------|-----|-|----- Warning Schwellwert |-----|-|----- Critical Schwellwert |-|----- Minimum Wert |----- Maximum Wert Mit * gekennzeichnete Werte müssen vorhanden sein. Alle anderen Werte sind optional. Mehrere Datenreihen werden durch Leerzeichen getrennt. Die eigentlichen Daten dürfen also keine Leerzeichen enthalten. Soll das Label Leerzeichen enthalten, so müssen diese in einfache Hochkomma eingeschlossen werden. Benötigte Software
LizenzPNP ist unter der GPL 2 lizensiert. DownloadDie Entwicklung von PNP wird auf Sourceforge.Net organisiert. PNP ist dort unter dem Projektnamen “PNP4Nagios” registriert. Die jeweils aktuelle (stabile) Version findet ihr im Downloadbereich. Wer noch aktueller sein möchte, kann auch die jeweils letzte Entwickler-Version benutzen. Mit der Version 0.6.x wurde von SVN auf GIT zum Verwalten des Sourcecodes gewechselt. Die aktuelle Entwicklung ist jederzeit unter https://github.com/lingej/pnp4nagios einzusehen. Beim Klicken auf pnp4nagios-head.tar.gz wird ein Archiv mit der letzten Version heruntergeladen. SupportVOR dem Stellen von Support-Anfragen sollte sichergestellt werden, dass die unter http://docs.pnp4nagios.orgverify genannten Punkte geprüft wurden.
Die Entwickler und Helfer sind im Monitoring-Portal unter http://www.monitoring-portal.org vertreten.
Dort gibt es einen eigenen Bereich zum Thema PNP. Erfolgreich gelöste Probleme bitte mit einem [solved] in der Betreffzeile des ersten Beitrags kennzeichnen. Auf diese Weise erleichtern wir anderen Benutzern das Finden von Lösungen zu einem Problem. Weiterhin können die Mailinglisten auf Sourceforge verwendet werden. Dort ist es jedoch üblich, Fragen auf Englisch zu stellen. pnp4nagios-users: Die Users-Liste für allgemeine Fragen zur Konfiguration. pnp4nagios-devel: Die Devel-Liste für Anregungen und Fehler Reports. pnp4nagios-checkins: Auf der Checkins-Liste werden Änderungen im SVN-Repository automatisch veröffentlicht. DatenhaltungDie Performance-Daten werden mit Hilfe von RRDtool in sogenannten Round-Robin-Datenbanken gespeichert, die wie ein Ringpuffer funktionieren. Das bedeutet, dass nach einer gewissen Zeit die ältesten Daten “hinten” herausfallen und “vorne” durch neue ersetzt werden. Verschiedene Zeitintervalle innerhalb der Datei sorgen für unterschiedliche Auflösungen. In der Standardeinstellung können die Daten für die letzten zwei Tage im Minutenabstand abgelegt werden, für zehn Tage im 5-Minutenabstand, für 90 Tage im 30-Minutenabstand und für 4 Jahre im 6-Stundenabstand. Die Vergrößerung des Intervalls bewirkt, dass auch die Daten über das jeweils größere Intervall hinweg gemittelt werden. Das führt automatisch dazu, dass Spitzen nicht mehr so deutlich zu sehen sind. Das ist kein Fehler von PNP, sondern eine Eigenheit von RRDtool. Dazu gibt es auch einen Artikel im Linux-Magazin. Durch die Speicherung in diesem Format ändert sich die Dateigröße nach dem Anlegen nicht mehr. Pro Datenreihe werden ca. 400 KB benötigt. Die Kunst Daten zu sammelnPNP unterstützt mehrere Arten, die Performance-Daten zu verarbeiten. Die einzelnen Modi unterscheiden sich durch ihre Komplexität und die zu erwartende Performance. Das folgende Bild zeigt die Verbindungen zwischen Nagios, PNP und RRDtool
Nagios führt für jeden Host- und jeden Service, dessen Performance-Daten gesammelt werden sollen, einen Befehl aus. Abhängig vom gewählten Modus werden die Daten entweder direkt an ein Perl-Script übergeben oder in temporäre Dateien geschrieben und später verarbeitet. process_perfdata.pl legt die Datei in XML-Dateien ab und speichert sie mit Hilfe von RRDtool in RRD-Dateien. Bevor Ihr euch auf einen Modus festlegt, lest euch alles durch und entscheidet selbst, welcher Weg für eure Installation der Beste ist. Die Modi im VergleichSynchronous Mode
Der sync-Mode funktioniert sehr gut bis ca. 1000 Services in einem Intervall von 5 Minuten. Dieser Modus belastet aber auch Nagios am meisten, daher ist es auch in kleinen Installationen ratsam, die weiteren Modi zu beachten. Bulk Mode
Die Anzahl der Aufrufe von process_perfdata.pl reduziert sich um ein Vielfaches. Abhängig von der Zeit und den gesammelten Daten werden wesentlich weniger Systemaufrufe ausgeführt. Dafür läuft process_perfdata.pl länger. Hinweis Bei diesem Modus sollte man die Laufzeit von process_perfdata.pl im Auge behalten. So lange, wie process_perfdata.pl zum Verarbeiten der Daten benötigt, so lange kann Nagios keine Checks ausführen. Auszug aus var/perfdata.log: 2007-10-18 12:05:01 [21138] 71 Lines processed 2007-10-18 12:05:01 [21138] .../spool/service-perfdata-1192701894-PID-21138 deleted 2007-10-18 12:05:01 [21138] PNP exiting (runtime 0.060969s) ... 71 Zeilen wurden in 0,06 Sekunden verarbeitet. Das ist das Datenvolumen bei ca. 2000 Services und der Verarbeitung im 10-Sekunden-Intervall. Wir haben Nagios also genau für 0.06 Sekunden blockiert. Bulk Mode mit NPCD
Nagios benutzt wieder eine temporäre Datei, um die Daten zu speichern, und führt nach Ablauf der Zeit wieder ein Command aus. Jedoch wird die Datei nicht sofort von Process_perfdata.pl verarbeitet, sondern in ein spool-Verzeichnis verschoben. Da das Verschieben einer Datei im gleichen Filesystem so gut wie keine Zeit beansprucht, ist Nagios sofort wieder in der Lage, wichtige Arbeiten auszuführen. Der NPCD ( Nagios Performance C Daemon ) überwacht nun das Verzeichnis auf neue Dateien und übergibt diese an process_perfdata.pl. Die Verarbeitung der Performancedaten ist also komplett von Nagios entkoppelt. NPCD wiederum ist in der Lage, zum Verarbeiten der Daten mehrere Threads zu starten. Bulk Mode mit npcdmodAchtung Beginnend mit Nagios 4 haben sich die internen Strukturen geändert, so dass der Start des Moduls fehlschlägt. Bisher gibt es keine Pläne Nagios 4 zu unterstützen. Bitte wählen Sie einen der anderen Modi.
Dieser Modus ist gleichzusetzen mit dem “Bulk Mode mit NPCD”. Es ist auch genau der gleiche Ablauf und die gleiche Performance. Gearman ModePNP4Nagios kann seit Version 0.6.12 als Gearman Worker betrieben werden. So sind große verteilte Nagios Umgebungen auf Basis von mod_gearman realisierbar. Benötigt wird eine fertig eingerichtete mod_gearman Installation wie von Sven Nierlein unter http://labs.consol.de/lang/en/nagios/mod-gearman/ beschrieben. Die EntscheidungWelchen der beschriebenen Wege ihr verwendet, hängt also stark von der Größe der Nagios-Installation ab. Die verwendeten Begriffe werden euch aber in der Dokumentation immer wieder über den Weg laufen. Upgrade auf Version 0.6.xDas Web-Frontend ist komplett neu geschrieben worden und basiert nun auf dem PHP MVC Framework Kohana. Somit ergeben sich grundlegend andere Abhängigkeiten, die dringend vor der Installation geprüft werden müssen. Anmerkung: Ein Upgrade läuft zuerst wie eine Neuinstallation. Anschließend sind einige Anpassungen durchzuführen, die weiter unten beschrieben sind.
PNP 0.4.x wurde ohne weitere Angabe von Optionen beim Aufruf von
PNP 0.6.x wird bei Angabe keiner weiteren Optionen unter Anmerkung: Es reicht aus, die *.rrd-Dateien vom alten ins neue Verzeichnis zu kopieren. Sie enthalten die eigentlichen Daten. Die *.xml-Dateien werden jedes Mal neu angelegt, wenn Performance-Daten verarbeitet werden, denn sie enthalten lediglich Meta-Informationen. Außerdem hat sich die interne Struktur geändert, so dass sie sowieso nicht nutzbar sind. Vergleich der StrukturSummary einer Installation von PNP 0.4.14 ./configure ... *** Configuration summary for pnp 0.4.14 05-02-2009 *** General Options: ------------------------- ------------------- Nagios user/group: nagios nagios Install directory: /usr/local/nagios HTML Dir: /usr/local/nagios/share/pnp Config Dir: /usr/local/nagios/etc/pnp Location of rrdtool binary: /usr/bin/rrdtool Version 1.3.1 RRDs Perl Modules: FOUND (Version 1.3001) RRD Files stored in: /usr/local/nagios/share/perfdata process_perfdata.pl Logfile: /usr/local/nagios/var/perfdata.log Perfdata files (NPCD) stored in: /usr/local/nagios/var/spool/perfdata/ Summary einer Installation von 0.6.0 ./configure ... *** Configuration summary for pnp4nagios-0.6.0 07-30-2009 *** General Options: ------------------------- ------------------- Nagios user/group: nagios nagios Install directory: /usr/local/pnp4nagios HTML Dir: /usr/local/pnp4nagios/share Config Dir: /usr/local/pnp4nagios/etc Location of rrdtool binary: /usr/bin/rrdtool Version 1.3.1 RRDs Perl Modules: FOUND (Version 1.3001) RRD Files stored in: /usr/local/pnp4nagios/var/perfdata process_perfdata.pl Logfile: /usr/local/pnp4nagios/var/perfdata.log Perfdata files (NPCD) stored in: /usr/local/pnp4nagios/var/spool Web Interface Options: ------------------------- ------------------- HTML URL: http://localhost/pnp4nagios/ Apache Config File: /etc/apache2/conf.d/pnp4nagios.conf Aus diesen Infos ergeben sich die zu ändernden Parameter und somit die Upgrade-Strategie. AnpassungenDie Vorlagen der action_url-Definitionen haben sich verändert. Statt ”/nagios/pnp” ist ”/pnp4nagios” einzutragen und statt “index.php” wird nun “graph” benutzt define host { name host-pnp action_url /pnp4nagios/graph?host=$HOSTNAME$ register 0 } define service { name srv-pnp action_url /pnp4nagios/graph?host=$HOSTNAME$&srv=$SERVICEDESC$ register 0 } Ähnliches gilt für die Preview-Popup-Funktion define host { name host-pnp action_url /pnp4nagios/index.php/graph?host=$HOSTNAME$&srv=_HOST_' class='tips' rel='/pnp4nagios/index.php/popup?host=$HOSTNAME$&srv=_HOST_ register 0 } define service { name srv-pnp action_url /pnp4nagios/graph?host=$HOSTNAME$&srv=$SERVICEDESC$' class='tips' rel='/pnp4nagios/popup?host=$HOSTNAME$&srv=$SERVICEDESC$ register 0 } Achtung: Es ist kein Fehler, dass die Zeichenketten vor und nach “class” jeweils nur ein Apostroph enthalten. Anders als in der 0.4.x Dokumentation vermerkt gelten die Templates für Nagios 2.x und 3.x. Der einzige Unterschied besteht darin, dass die action_url-Direktive in Nagios 2.x nicht in der Service-Definition, sondern in eigenen serviceextinfo-Definitionen verfügbar ist. Innerhalb der PHP-Dateien im templates-Verzeichnis müssen alle Variablen vor der ersten Benutzung initialisiert werden, z.B. $lower = "" Das gilt auch für Variablen, an die früher “angehängt” werden konnte, ohne sie vorher zu initialisieren. Daher wird aus foreach ($DS as $i) { $def[1] .= "DEF:var$i=$rrdfile:$DS[$i]:AVERAGE " ; nun $def[1] = ""; foreach ($DS as $i) { $def[1] .= "DEF:var$i=$rrdfile:$DS[$i]:AVERAGE " ;
define("_WARNRULE", '#FFFF00'); wird dann z.B. $WARNRULE = '#FFFF00';
Man sollte daran denken, alle Vorkommen in der Datei zu ändern Upgrade Szenario mit NPCD
Installation
Im Folgenden wird die Installation von PNP beschrieben. Dabei wird davon ausgegangen, dass Nagios aus den Sourcen übersetzt und im Verzeichnis /usr/local/nagios installiert wurde. Make und CoDie Installation von PNP wird wie bei Nagios auch über Makefiles gesteuert. Dabei wird durch den Aufruf von ./configure das System analysiert und die ermittelten Werte in Makefiles übernommen. Als User root wird PNP in /usr/local/src entpackt. tar -xvzf pnp4nagios-HEAD.tar.gz cd pnp4nagios Im Verzeichnis pnp4nagios wird nun ./configure aufgerufen. ./configure Hinweis: Ohne weitere Optionen werden als Benutzer und Gruppe “nagios” verwendet. Bei abweichenden Werten sind die Parameter ”--with-nagios-user” und ”--with-nagios-group” zu benutzen. Im Falle von Icinga könnte der Aufruf so aussehen ./configure --with-nagios-user=icinga --with-nagios-group=icinga Es laufen einige Zeilen über den Bildschirm. Wichtig ist die Ausgabe zum Schluss. *** Configuration summary for pnp4nagios-0.6.2 23-12-2009 *** General Options: ------------------------- ------------------- Nagios user/group: nagios nagios Install directory: /usr/local/pnp4nagios HTML Dir: /usr/local/pnp4nagios/share Config Dir: /usr/local/pnp4nagios/etc Location of rrdtool binary: /usr/bin/rrdtool Version 1.2.12 RRDs Perl Modules: FOUND (Version 1.2012) RRD Files stored in: /usr/local/pnp4nagios/var/perfdata process_perfdata.pl Logfile: /usr/local/pnp4nagios/var/perfdata.log Perfdata files (NPCD) stored in: /usr/local/pnp4nagios/var/spool Web Interface Options: ------------------------- ------------------- HTML URL: http://localhost/pnp4nagios/ Apache Config File: /etc/apache2/conf.d/pnp4nagios.conf Review the options above for accuracy. If they look okay, type 'make all' to compile.
Die angezeigten Pfade sollten nun geprüft werden. Falls die gezeigten Werte nicht passen, kann durch einen erneuten Aufruf von ./configure mit den passenden Optionen Abhilfe geschaffen werden. ./configure --with-rrdtool=/usr/local/rrdtool-1.2.xx/bin/rrdtool ./configure --help
zeigt, welche Optionen möglich sind. make all kompiliert nun die in C geschriebenen Komponenten wie NPCD make install kopiert alles an die richtige Stelle im Filesystem. Die Pfade wurden ja beim ./configure bereits gezeigt. Nach der Installation der Programm- und HTML-Dateien wird mit make install-webconf eine Konfigurationsdatei in das Konfigurationsverzeichnis des Apache-Web-Servers kopiert. Optional kann noch make install-config aufgerufen werden. Damit werden Config-Files für process_perfdata.pl und npcd nach etc/pnp kopiert. Wird das INIT Script für den NPCD benötigt, so sorgt make install-init für die Installation nach /etc/init.d Zusammenfassen lassen sich diese einzelnen Commands durch make fullinstall Hinweis: Wie oben schon beschrieben wird standardmässig mit den Nagios-Einstellungen installiert. Wird Icinga genutzt, muss in der Datei ”/etc/apache2/conf.d/pnp4nagios.conf” der Pfad zum AuthUserFile angepasst werden (Pfad evtl. je nach Distri anpassen): # AuthUserFile /usr/local/nagios/etc/htpasswd.users AuthUserFile /usr/local/icinga/etc/htpasswd.users
Achtung: Nach dem Kopieren der Konfigurationsdatei für den Web-Server bzw. Ändern des AuthUserFile ist ein Restart des Web-Servers notwendig ( Update
Das Update einer 0.6.x-Version funktioniert (fast) genauso wie die Installation. Bitte beachten Sie, dass Sie beim ”./configure” die gleichen Optionen wie bei der Erstinstallation benutzen!
Bitte prüfen Sie außerdem, ob Sie Änderungen im Verzeichnis
Sie können die Schritte Die KomponentenNach der Installation sind einige Komponenten von PNP an die passenden Stellen im Dateisystem kopiert worden. Im Folgenden sind dies die PHP-Files für das Web-Frontend unter /usr/local/pnp4nagios/share Der Datensammler process_perfdata.pl in /usr/local/pnp4nagios/libexec
Beispiel-Config-Files mit der Dateierweiterung /usr/local/pnp4nagios/etc Die Config-Datei config.php für das Web-Frontend in /usr/local/pnp4nagios/etc KonfigurationIm Folgenden wird die Konfiguration der bereits erwähnten Arten der Performance-Daten Verarbeitung genauer erklärt. Die bevorzugte Methode der PNP-Entwickler ist der “Bulk Mode mit NPCD und npcdmod”. Synchronous Mode
Grundsätzlich ist in der process_performance_data=1 Für jeden Host und jeden Service, für den KEINE Performance-Daten verarbeitet werden sollen, ist die Verarbeitung der Performance-Daten explizit auszuschalten. define service { ... process_perf_data 0 ... }
Weiterhin ist es ab Nagios 3.x möglich, in der enable_environment_macros=1
ebenfalls in der
Zusätzlich wird das Kommando zum Verarbeiten der Performance-Daten in der service_perfdata_command=process-service-perfdata Ab Nagios 3.x ist es durchaus sinnvoll, auch die Verarbeitung der Performance-Daten für Hosts einzuschalten. Nagios 3 führt durch die geänderte Hostcheck-Logik nun auch die Prüfung der Hosts regelmäßig aus. host_perfdata_command=process-host-perfdata Die referenzierten Commands müssen natürlich auch Nagios bekannt gegeben werden. Wie man sieht, sind für den Aufruf von process_perfdata.pl so gut wie keine Optionen nötig. Einzig bei Performance-Daten der Host-Checks ist die Option -d ( DATATYPE ) nötig. Wenn Sie die Schnellstart-Installationsanleitungen für Nagios benutzt haben, können Sie die Definitionen in der Datei commands.cfg anpassen. define command { command_name process-service-perfdata command_line /usr/bin/perl /usr/local/pnp4nagios/libexec/process_perfdata.pl } define command { command_name process-host-perfdata command_line /usr/bin/perl /usr/local/pnp4nagios/libexec/process_perfdata.pl -d HOSTPERFDATA }
HINWEIS: Bulk Mode
Im Bulk-Mode schreibt Nagios die Daten in einem definierten Format in eine temporäre Datei. Diese Datei wiederum wird periodisch von
Auch hier muss die Verarbeitung der Performance-Daten in der process_performance_data=1 Zusätzlich werden einige neue Parameter benötigt. # # Service Performance-Daten # service_perfdata_file=/usr/local/pnp4nagios/var/service-perfdata service_perfdata_file_template=DATATYPE::SERVICEPERFDATA\tTIMET::$TIMET$\tHOSTNAME::$HOSTNAME$\tSERVICEDESC::$SERVICEDESC$\tSERVICEPERFDATA::$SERVICEPERFDATA$\tSERVICECHECKCOMMAND::$SERVICECHECKCOMMAND$\tHOSTSTATE::$HOSTSTATE$\tHOSTSTATETYPE::$HOSTSTATETYPE$\tSERVICESTATE::$SERVICESTATE$\tSERVICESTATETYPE::$SERVICESTATETYPE$ service_perfdata_file_mode=a service_perfdata_file_processing_interval=15 service_perfdata_file_processing_command=process-service-perfdata-file # # Host Performance-Daten ab Nagios 3.x # host_perfdata_file=/usr/local/pnp4nagios/var/host-perfdata host_perfdata_file_template=DATATYPE::HOSTPERFDATA\tTIMET::$TIMET$\tHOSTNAME::$HOSTNAME$\tHOSTPERFDATA::$HOSTPERFDATA$\tHOSTCHECKCOMMAND::$HOSTCHECKCOMMAND$\tHOSTSTATE::$HOSTSTATE$\tHOSTSTATETYPE::$HOSTSTATETYPE$ host_perfdata_file_mode=a host_perfdata_file_processing_interval=15 host_perfdata_file_processing_command=process-host-perfdata-file Achtung: Die Template-Definitionen weichen von denen in der Original-nagios.cfg ab! Die Parameter und deren Bedeutung im Einzelnen:
Die verwendeten Commands müssen Nagios wiederum bekannt gegeben werden. Wenn Sie die Schnellstart-Installationsanleitungen für Nagios benutzt haben, können Sie die Definitionen in der Datei commands.cfg anpassen. define command{ command_name process-service-perfdata-file command_line /usr/local/pnp4nagios/libexec/process_perfdata.pl --bulk=/usr/local/pnp4nagios/var/service-perfdata } define command{ command_name process-host-perfdata-file command_line /usr/local/pnp4nagios/libexec/process_perfdata.pl --bulk=/usr/local/pnp4nagios/var/host-perfdata } HINWEIS: Da
process_perfdata.pl nun mehr Daten zu verarbeiten hat als im Default Mode, kommt es natürlich auch zu längeren Laufzeiten. Daher ist der TIMEOUT Wert in der etc/process_perfdata.cfg zu überprüfen und ggf. anzupassen.Bulk Mode with NPCD
Auch hier muss die Verarbeitung der Performance-Daten in der process_performance_data=1 Zusätzlich werden einige neue Parameter benötigt. # # Service Performance-Daten # service_perfdata_file=/usr/local/pnp4nagios/var/service-perfdata service_perfdata_file_template=DATATYPE::SERVICEPERFDATA\tTIMET::$TIMET$\tHOSTNAME::$HOSTNAME$\tSERVICEDESC::$SERVICEDESC$\tSERVICEPERFDATA::$SERVICEPERFDATA$\tSERVICECHECKCOMMAND::$SERVICECHECKCOMMAND$\tHOSTSTATE::$HOSTSTATE$\tHOSTSTATETYPE::$HOSTSTATETYPE$\tSERVICESTATE::$SERVICESTATE$\tSERVICESTATETYPE::$SERVICESTATETYPE$ service_perfdata_file_mode=a service_perfdata_file_processing_interval=15 service_perfdata_file_processing_command=process-service-perfdata-file # # Host Performance-Daten ab Nagios 3.x # host_perfdata_file=/usr/local/pnp4nagios/var/host-perfdata host_perfdata_file_template=DATATYPE::HOSTPERFDATA\tTIMET::$TIMET$\tHOSTNAME::$HOSTNAME$\tHOSTPERFDATA::$HOSTPERFDATA$\tHOSTCHECKCOMMAND::$HOSTCHECKCOMMAND$\tHOSTSTATE::$HOSTSTATE$\tHOSTSTATETYPE::$HOSTSTATETYPE$ host_perfdata_file_mode=a host_perfdata_file_processing_interval=15 host_perfdata_file_processing_command=process-host-perfdata-file Achtung: Die Template-Definitionen weichen von denen in der Original-nagios.cfg ab! Die Parameter und deren Bedeutung im Einzelnen:
Die verwendeten Commands müssen Nagios wiederum bekannt gegeben werden. Wenn Sie die Schnellstart-Installationsanleitungen für Nagios benutzt haben, können Sie die Definitionen in der Datei commands.cfg anpassen. define command{ command_name process-service-perfdata-file command_line /bin/mv /usr/local/pnp4nagios/var/service-perfdata /usr/local/pnp4nagios/var/spool/service-perfdata.$TIMET$ } define command{ command_name process-host-perfdata-file command_line /bin/mv /usr/local/pnp4nagios/var/host-perfdata /usr/local/pnp4nagios/var/spool/host-perfdata.$TIMET$ }
Durch die Kommandos wird immer nach Ablauf des über Somit sammeln sich Dateien im Verzeichnis /usr/local/pnp4nagios/var/spool/, die nun mit Hilfe des NPCD verarbeitet werden.
NPCD überwacht das Spool-Verzeichnis und übergibt wiederum alle gefundenen Dateien an /usr/local/pnp4nagios/bin/npcd -d -f /usr/local/pnp4nagios/etc/npcd.cfg
Die Option Das Init Script für den NPCD wir während der Installation über “make install-init” installiert und kann somit auch für den Start verwendet werden. /etc/init.d/npcd start
In der Config-Datei des NPCD, der Weitere Informationen zu NPCD findet ihr hier. Bulk Mode with NPCD und npcdmodAchtung Beginnend mit Nagios 4 haben sich die internen Strukturen geändert, so dass der Start des Moduls fehlschlägt. Bisher gibt es keine Pläne, Nagios 4 zu unterstützen. Bitte wählen Sie einen der anderen Modi.
Vorteil:
Anpassung in der process_performance_data=1 broker_module=/usr/local/pnp4nagios/lib/npcdmod.o config_file=/usr/local/pnp4nagios/etc/npcd.cfg Alle anderen auf dieser Seite gezeigten Optionen dürfen für diesen Modus NICHT mehr verwendet werden.
Achtung: Wichtig sind in diesem Zusammenhang auch die Nach dem Neustart von Nagios werden Informationen zum Ladevorgang des Moduls protokolliert. Auszug aus den nagios.log [1277545053] npcdmod: Copyright (c) 2008-2009 Hendrik Baecker (andurin@process-zero.de) - http://www.pnp4nagios.org [1277545053] npcdmod: /usr/local/pnp4nagios/etc/npcd.cfg initialized [1277545053] npcdmod: spool_dir = '/usr/local/pnp4nagios/var/spool/'. [1277545053] npcdmod: perfdata file '/usr/local/pnp4nagios/var/perfdata.dump'. [1277545053] npcdmod: Ready to run to have some fun! [1277545053] Event broker module '/usr/local/pnp4nagios/lib/npcdmod.o' initialized successfully. Gearman ModePNP4Nagios kann seit Version 0.6.12 als Gearman-Worker betrieben werden. So sind große verteilte Nagios-Umgebungen auf Basis von mod_gearman realisierbar. Außerdem kann man dadurch Nagios und PNP4Nagios auf unterschiedliche Rechner verteilen. Benötigt wird eine fertig eingerichtete mod_gearman Installation wie von Sven Nierlein unter http://labs.consol.de/lang/en/nagios/mod-gearman/ beschrieben.
In PREFORK = 1 GEARMAN_HOST = localhost:4730 REQUESTS_PER_CHILD = 10000 ENCRYPTION = 1 KEY = should_be_changed #KEY_FILE = /usr/local/pnp4nagios/etc/secret.key
Dort ist mit
Nach dem Start des PNP-Daemons per /etc/init.d/pnp_gearman_worker start werden die Performance-Daten verarbeitet, die über den gearmand-Daemon auf dem Nagios-Rechner zur Verfügung gestellt werden. Prüfen der InstallationWenn bis jetzt alles sauber funktioniert hat, kann PNP zum ersten Mal im Browser aufgerufen werden. Bei der Installation mit den Standardeinstellungen erfolgt der Aufruf über http://<Servername>/pnp4nagios/.
Beim ersten Aufruf sieht man die Seite “PNP4Nagios Environment Tests”, die verschiedene Tests von notwendigen Komponenten enthält. Offenkundig sollten alle Tests erfolgreich verlaufen, bevor es weitergehen kann. Bitte beachten Sie die Hinweise auf der Seite.
Sind alle Tests erfolgreich verlaufen, so kann die Datei
Alternativ kann eine Datei
Ohne weitere Optionen sucht PNP nach RRD- und XML-Dateien in ACHTUNG: Direkt nach dem (Neu-)Start von Nagios nach dem Aktivieren der Verarbeitung von Performance-Daten wird der Aufruf im Browser zu Fehlermeldungen führen, weil zunächst Performance-Daten gesammelt und in den RRD-Dateien abgelegt werden müssen. Abhängig vom Check-Intervall kann es einige Zeit dauern, bis die ersten Graphen angezeigt werden können. Logfile
Während der Installation wurde durch den Aufruf von
Die Datei
In der Die wichtigsten Optionen für die Inbetriebnahme sind LOG_LEVEL und LOG_FILE. Im laufenden Betrieb sollte der Log-Level immer auf 0 gesetzt sein, um die Performance von process_perfdata.pl nicht durch unnötiges Schreiben von Logfiles zu beeinträchtigen.
Während der Inbetriebnahme sollte man jedoch den
Spätestens bei Support Anfragen im Forum oder auf den Mailinglisten werden wir sowohl nach Auszügen aus dem perfdata.log als auch nach der Ausgabe des verify_pnp_config-Scripts fragen. Es empfiehlt sich also, diese Angaben gleich mitzuliefern Was aber wenn nicht ?Einige grundlegende Einstellungen sind zu prüfen. 1. Sind RRD- und XML-Files erzeugt worden ?
2. Hat Nagios
In der Config-Datei für process_perfdata.pl, der 3. Grafiken werden ohne Text angezeigt ? siehe Anforderungen
4. Einige Graphen werden angezeigt, andere melden den Fehler
5. Bei aktiviertem npcdmod-Modul muss der Wert von 6. verify_pnp_config Das Perl-Script verify_pnp_config.pl ermöglicht die Prüfung von Konfigurationseinstellungen und zeigt, ob Performance-Daten vorhanden sind.
7. Es scheint zu funktionieren, aber es bleiben einige Dateien Spool-Verzeichnis stehen (/usr/local/pnp4nagios/var/spool/<perfdata_filename>-PID-<process_perfdata_pid>). Wenn verify_pnp_config
Bei Problemen kann das Perl-Script Bei Support Anfragen sollte immer die Ausgabe dieses Scripts mit angegeben werden, da die Entwickler sich so einen besseren Überblick über das verwendete System machen können. * ACHTUNG *: Das Skript unterstützt NUR Nagios 3.x und Icinga 1.x als Monitoring-System. Feedback, Verbesserungsvorschläge oder Patches bitte per Mail an support@pnp4nagios.org DownloadDas Verify Script ist unter http://verify.pnp4nagios.org verfügbar. wget http://verify.pnp4nagios.org/verify_pnp_config TestDas Verify Script benötigt drei Optionen um die Funktion von PNP4Nagios zu prüfen lenny:~# perl verify_pnp_config verify_pnp_config -m|--mode=[sync|bulk|bulk+npcd|npcdmod] -c|--config=[path to nagios.cfg] -p|--pnpcfg=[path to PNP config dir]
Die wichtigste Infos ist der zu prüfende Modus, welcher mit der Option
Weiterhin ist der Pfad zur Nagios Config Datei (nagios.cfg) über die Option
Über
Beim Aufruf von lenny:~# perl verify_pnp_config --mode npcdmod --config=/usr/local/nagios/etc/nagios.cfg --pnpcfg=/usr/local/pnp4nagios/etc [INFO] ========== Starting Environment Checks ============ [INFO] My version is: verify_pnp_config-0.6.14-R.31 [INFO] Reading /usr/local/nagios/etc/nagios.cfg [OK ] Running product is 'nagios' [OK ] object_cache_file is defined [OK ] object_cache_file=/usr/local/nagios/var/objects.cache [INFO] Reading /usr/local/nagios/var/objects.cache [OK ] resource_file is defined [OK ] resource_file=/usr/local/nagios/etc/resource.cfg [INFO] Reading /usr/local/nagios/etc/resource.cfg [INFO] Reading /usr/local/pnp4nagios/etc/process_perfdata.cfg [INFO] Reading /usr/local/pnp4nagios/etc/pnp4nagios_release [OK ] Found PNP4Nagios version "0.6.14" [OK ] Effective User is 'nagios' [OK ] User nagios exists with ID '1000' [OK ] Effective group is 'nagios' [OK ] Group nagios exists with ID '1000' [INFO] ========== Checking npcdmod Mode Config ============ [OK ] process_performance_data is 1 compared with '/1/' [OK ] event_broker_options is defined [OK ] event_broker_options=-1 [OK ] event_broker_option bits 2 and 3 enabled (12) [OK ] broker_module is defined [OK ] broker_module=/usr/local/pnp4nagios/lib/npcdmod.o config_file=/usr/local/pnp4nagios/etc/npcd.cfg [OK ] npcdmod.o config file is /usr/local/pnp4nagios/etc/npcd.cfg [OK ] /usr/local/pnp4nagios/etc/npcd.cfg used by npcdmod.o is readable [OK ] npcd daemon is running [OK ] /usr/local/pnp4nagios/etc/npcd.cfg is used by npcd and readable [OK ] npcd and npcdmod.o are using the same config file (/usr/local/pnp4nagios/etc/npcd.cfg) [INFO] Nagios config looks good so far [INFO] ========== Checking config values ============ [INFO] Reading /usr/local/pnp4nagios/etc/npcd.cfg [OK ] Script /usr/local/pnp4nagios/libexec/process_perfdata.pl is executable [INFO] ========== Starting global checks ============ [OK ] status_file is defined [OK ] status_file=/dev/shm/status.dat [INFO] Reading /dev/shm/status.dat [INFO] ==== Starting rrdtool checks ==== [OK ] RRDTOOL is defined [OK ] RRDTOOL=/usr/bin/rrdtool [OK ] /usr/bin/rrdtool is executable [OK ] RRDtool 1.3.1 Copyright 1997-2008 by Tobias Oetiker <tobi@oetiker.ch> [OK ] USE_RRDs is defined [OK ] USE_RRDs=1 [OK ] Perl RRDs modules are loadable [INFO] ==== Starting directory checks ==== [OK ] RRDPATH is defined [OK ] RRDPATH=/usr/local/pnp4nagios/var/perfdata [OK ] Perfdata directory '/usr/local/pnp4nagios/var/perfdata' exists [WARN] 62 hosts/services are not providing performance data [WARN] 'process_perf_data 1' is set for 43 hosts/services which are not providing performance data! [WARN] 'process_perf_data 0' is set for 27 of your hosts/services [OK ] 'process_perf_data 1' is set for 243 of your hosts/services [INFO] ==== System sizing ==== [OK ] 269 hosts/service objects defined [INFO] ==== Check statistics ==== [WARN] Warning: 3, Critical: 0 [WARN] Checks finished... Performance data
Beginnend mit
Die Zeichenketten werden als reguläre Ausdrücke angesehen (Perl-Syntax). Das Nagios Web FrontendPNP soll natürlich schnell erreichbar sein. Man möchte nicht lange nach den richtigen Graphen suchen. Nagios selbst bietet die Möglichkeit, externe URLs über die sogenannte Extended Info Config einzubinden. Da es in diesem Bereich eine Änderung zwischen Nagios 2.x und der Version 3.0 gibt, wird anschließend auf beide Versionen getrennt eingegangen. Nagios 2.xBis Nagios 2.x erfolgt die Einbindung externer URLs in das Nagios-Web-Interface über die Extended-Info-Objekte. Für PNP verwenden wir die Option action_url, um das PNP-Web-Frontend mit den passenden Optionen aufzurufen. define serviceextinfo { name srv-pnp action_url /pnp4nagios/index.php/graph?host=$HOSTNAME$&srv=$SERVICEDESC$ register 0 } Dieses Template kann nun über “use srv-pnp” in der serviceextinfo-Definition verwendet werden. Wenn Sie die Schnellstart-Installationsanleitungen benutzt haben, können Sie beispielsweise in der Datei localhost.cfg die Definitionen wie folgt erweitern: define serviceextinfo { use srv-pnp ; Name of service templates to use host_name localhost service_description load } Nagios 3.xSeit Nagios 3.0 ist die Direktive action_url in die Host- bzw. Service-Definition verschoben worden. Die serviceextinfo- und hostextinfo-Definitionen sind entfallen. Damit wird die Definition der URLs zum PNP-Interface wesentlich vereinfacht. Zuerst definieren wir zwei Nagios-Templates. Falls Sie die Schnellstart-Installationsanleitungen für Nagios benutzt haben, können Sie die folgenden Zeilen der Datei templates.cfg hinzufügen: define host { name host-pnp action_url /pnp4nagios/index.php/graph?host=$HOSTNAME$&srv=_HOST_ register 0 } define service { name srv-pnp action_url /pnp4nagios/index.php/graph?host=$HOSTNAME$&srv=$SERVICEDESC$ register 0 } Diese beiden Templates können nun über “use srv-pnp” in der Service-Definition oder “use host-pnp” in der Host-Definition verwendet werden. Wenn Sie die Schnellstart-Installationsanleitungen benutzt haben, können Sie beispielsweise in der Datei localhost.cfg die Definitionen wie folgt erweitern: define host{ use linux-server,host-pnp ; Name of host templates to use ; This host definition will inherit all variables that are defined ; in (or inherited by) the linux-server host template definition. host_name localhost alias localhost address 127.0.0.1 } define service{ use local-service,srv-pnp ; Name of service templates to use host_name localhost service_description PING check_command check_ping!100.0,20%!500.0,60% } Die Links auf die richtigen URLs werden automagisch erstellt. Preview PopupAußerdem gibt es die Möglichkeit, die Graphen bereits in der Statusübersicht beim Überfahren des “Action Url Icons” mit der Maus einzublenden. Ermöglicht wird dies durch die CGI Includes, die es uns erlauben, Javascript-Code an geeigneter Stelle im Seitenkopf der Statusübersicht einzubinden ( status.cgi ).
In den PNP-Quellen ist die Datei
Die besagte Datei muss in das Verzeichnis Die action_url ist entsprechend anzupassen: define host { name host-pnp register 0 action_url /pnp4nagios/index.php/graph?host=$HOSTNAME$&srv=_HOST_' class='tips' rel='/pnp4nagios/index.php/popup?host=$HOSTNAME$&srv=_HOST_ } define service { name srv-pnp register 0 action_url /pnp4nagios/index.php/graph?host=$HOSTNAME$&srv=$SERVICEDESC$' class='tips' rel='/pnp4nagios/index.php/popup?host=$HOSTNAME$&srv=$SERVICEDESC$ }
Nach einem Restart von Nagios (nach Anpassung der Definitionen) sieht das Ergebnis ungefähr so aus: PNP Web Frontend
Das Verhalten des PNP-Web-Frontend lässt sich über die Config-Datei Eigene Anpassungen sollten daher in der Datei etc/config_local.php erfolgen. Sollte die Datei noch nicht existieren, kann die config.php als Vorlage verwendet werden. etc/pnp/config.phpIm folgenden die wichtigsten Parameter:
Der Pfad zum RRDtool-Binary. Wird von $conf['rrdtool'] = "/usr/bin/rrdtool"; Höhe und Breite der RRD-Graphen $conf['graph_width'] = "500"; $conf['graph_height'] = "100"; Bildschirmdimensionen ändern sich, Blattgrößen nicht. Um unterschiedliche Einstellungen zu ermöglichen, können für die Generierung von PDF-Dateien eigene Werte definiert werden. Wenn diese Variablen nicht definiert sind, werden die Werte der Graphen benutzt. Höhe und Breite der RRD-Graphen bei PDFs $conf['pdf_width'] = "675"; $conf['pdf_height'] = "100";
Zusätzliche Optionen, die bei jedem Aufruf von RRDTool mit übergeben werden. Beispielsweise $conf['graph_opt'] = "";
Der Pfad zu den von $conf['rrdbase'] = "/usr/local/pnp4nagios/var/perfdata/"; Pfad zu den Config-Files für die Pages. $conf['page_dir'] = "/usr/local/pnp4nagios/etc/pages/"; Wert in Sekunden, nachdem die PNP-Seiten neu geladen werden sollen. $conf['refresh'] = "90"; Maximales Alter der RRD-Files in Sekunden. Nach Erreichen dieses Wertes werden Links zu den Graphen als “inactive” gekennzeichnet. $conf['max_age'] = 60*60*6; Basis-URL zu den Nagios CGIs. $conf['nagios_base'] = "/nagios/cgi-bin"; Liste von Usern, für die Links zu den Services des aktuellen Hosts angezeigt werden sollen. $conf['allowed_for_service_links'] = "EVERYONE"; Liste von Usern, für die das Host-Suchfeld angezeigt werden soll. $conf['allowed_for_host_search'] = "EVERYONE"; Wird PNP nur mit der Angabe eines Hosts ( index.php?host=<myserver> ) aufgerufen, so wird eine Übersicht aller Services angezeigt, wenn der User in dieser Liste enthalten ist. $conf['allowed_for_host_overview'] = "EVERYONE"; Das Array $views[] legt fest, welche Zeitspannen die RRD-Graphen dargestellen sollen. Der Titel und die Anzahl der Graphen kann somit hier zentral definiert werden. $views[] = array('title' => 'One Hour', 'start' => (60*60) ); $views[] = array('title' => '4 Hours', 'start' => (60*60*4) ); $views[] = array('title' => '25 Hours', 'start' => (60*60*25) ); $views[] = array('title' => 'One Week', 'start' => (60*60*25*7) ); $views[] = array('title' => 'One Month', 'start' => (60*60*24*32) ); $views[] = array('title' => 'One Year', 'start' => (60*60*24*380) ); Sie können hier auch weitere Views definieren, sollten aber dabei berücksichtigen, dass im Normalfall ALLE definierten Views angezeigt werden. TimerangesIn der Übersicht zeigt PNP fünf Zeitbereiche, die frei in der config.php definiert werden können. Es gibt aber auch die Möglichkeit, die Zeitbereiche über die URL zu beeinflussen. Dies ist hilfreich, wenn z.B. automatisch PDF-Dokumente erstellt werden sollen
Die Zeitbereiche werden über die Optionen Beispiel: pnp4nagios/graph?host=<hostname>&srv=<servicedesc>&start=-1week pnp4nagios/graph?host=<hostname>&srv=<servicedesc>&start=2011102322:50:00&end=2011102409:50:00
Der Startzeitpunkt der Graphen wird somit, ausgehend vom aktuellen Datum, um eine Woche nach hinten verschoben. Der Endzeitpunkt bleibt auf dem aktuellen Zeitstempel. Aber auch
Beispiele zur Datumsangabe:
Pages
„pages“ bieten die Möglichkeit, Grafiken von verschiedenen Hosts/Services auf einer Seite zusammenzufassen. Auf diese Weise können z.B. die Übertragungsraten der Netzwerk-Interfaces aller Tape-Libraries dargestellt werden. Innerhalb der Definitionen sind reguläre Ausdrücke möglich, so dass – entsprechende Namen vorausgesetzt - mit wenig Aufwand viel erreicht werden kann.
Das Verzeichnis, das in
Kommentare beginnen mit einem '#' und sind auch innerhalb einer Zeile möglich.
Jede Datei enthält eine „page“-Definition, die neben dem Namen der Seite festlegt, ob die nachfolgenden Grafikdefinitionen reguläre Ausdrücke enthalten. define page { use_regex 1 # 0 = keine regulären Ausdrücke, 1 = reguläre Ausdrücke page_name Test-Seite # Beschreibung der Seite } Danach folgen ein oder mehrere „graph“-Definitionen: define graph { host_name host1,host2,host3 service_desc Current_Load }
Achtung: Damit die oben gezeigte Liste von Host-Namen funktioniert, muss define graph { host_name host4 service_desc Current_Users } Und jetzt mit regulären Ausdrücken. Zuerst alle Hosts, deren Name mit „Tape“ beginnen: define graph { host_name ^Tape service_desc Traffic } alle Hosts, deren Namen mit “00” enden define graph { host_name 00$ service_desc Load } alle Services des localhost, deren Namen ein „a“ oder „o“ enthalten: define graph { host_name localhost service_desc a|o } alle Services, die im Namen nach einem „_“ (mindestens) drei Ziffern haben auf allen Hosts, deren Namen mit „UX“ beginnen: define graph { host_name ^UX service_desc _\d{3} } In einigen Fällen möchten Sie vielleicht die Anzeige auf einen Graphen beschränken. Um dies zu erreichen, können Sie die optionale Direktive “source” benutzen, gefolgt von einer Zahl, die die Position in der RRD-Datei angibt. Die Zählung beginnt ab 0 define graph { host_name host1,host2,host3 service_desc PING source 1 } Datenexport
PNP bietet über den Aufgerufen wird der Controller über die URL /pnp4nagios/xport/<format>?host=<hostname>&srv=<servicedesc> wobei <format> durch das jeweils gewünschte Format zu ersetzen ist.
Sie können außerdem wget -O image.png 'http://<user>:<pass>@<nagios-server>/pnp4nagios/image?host=<hostname>&srv=<service>&view=2&source=0'
Anstatt Was sind Templates ?PNP benutzt Templates, um das Aussehen der RRD-Graphen zu beeinflussen. Dabei bestimmt das verwendete check_command, welches Template zur Darstellung herangezogen wird. Im Folgenden wird beschrieben, wo Templates gespeichert werden und wie die Entscheidung für das “richtige” Template getroffen wird. Wann wird welches Template verwendet ?Templates werden an zwei Stellen im Dateisystem gespeichert.
Weiterhin können seit Version 0.6.5 weitere Template Verzeichnisse in der Config Datei
Soll der Graph für den Service “http” auf Host “localhost” angezeigt werden, so sucht PNP zuerst nach der XML-Datei
<NAGIOS> <DATASOURCE> <TEMPLATE>check_http</TEMPLATE> <DS>1</DS> <NAME>time</NAME> <UNIT>s</UNIT> <ACT>0.006721</ACT> <WARN>1.000000</WARN> <CRIT>2.000000</CRIT> <MIN>0.000000</MIN> <MAX></MAX> </DATASOURCE> <DATASOURCE> <TEMPLATE>check_http</TEMPLATE> <DS>2</DS> <NAME>size</NAME> <UNIT>B</UNIT> <ACT>263</ACT> <WARN></WARN> <CRIT></CRIT> <MIN>0</MIN> <MAX></MAX> </DATASOURCE> ... </NAGIOS>
PNP hängt
Das Template default.php nimmt somit eine Sonderstellung ein und wird immer verwendet, wenn vorher kein anderes Template gefunden wird. Eigene Templates erstellenPNP-Templates sind PHP-Dateien, die zur Laufzeit von PNP über die PHP-Funktion include() eingebunden werden. Dies bedeutet, dass jeder PHP-Code in Templates interpretiert wird. Daher ist die Manipulation aller Werte über PHP möglich. PNP-Templates müssen folgende Eigenschaften besitzen:
Die beiden PHP-Arrays $opt[] und $def[] zusammen bilden den Aufruf von Wenn beide Arrays mehrere Datensätze enthalten, so wird für jeden Datensatz ein Graph erstellt. Weiterhin stehen innerhalb der Templates die Daten aus dem zugehörigen XML-File zur Verfügung, die zum Erstellen der Graphen wieder verwendet werden können. Am Beispiel des recht einfachen Templates response.php lassen sich die wichtigsten Optionen recht gut beschreiben. <?php # $opt[1] = "--title \"Response Time For $hostname / $servicedesc\" "; # $def[1] = "DEF:var1=$RRDFILE[1]:$DS[1]:AVERAGE " ; $def[1] .= "AREA:var1#00FF00:\"Response Times \" " ; $def[1] .= "LINE1:var1#000000 " ; $def[1] .= "GPRINT:var1:LAST:\"%3.4lg %s$UNIT[1] LAST \" "; $def[1] .= "GPRINT:var1:MAX:\"%3.4lg %s$UNIT[1] MAX \" "; $def[1] .= "GPRINT:var1:AVERAGE:\"%3.4lg %s$UNIT[1] AVERAGE \" "; ?>
Die drei GPRINT Zeilen bilden die Legende des Graphen. Die aktuellen Werte werden dabei über die printf Syntax formatiert. Verfügbare Variablen
PNP speichert über den Datensammler Im ersten Teil der XML-Datei werden die Performancedaten in ihre Einzelteile zerlegt gespeichert. <NAGIOS> <DATASOURCE> <TEMPLATE>check_http</TEMPLATE> <DS>1</DS> <NAME>time</NAME> <UNIT>s</UNIT> <ACT>0.006721</ACT> <WARN>1.000000</WARN> <CRIT>2.000000</CRIT> <MIN>0.000000</MIN> <MAX></MAX> </DATASOURCE> ... </NAGIOS> Das Feld <DS> bezeichnet die DataSource und dient der Identifizierung der Datenreihen innerhalb der RRD-Dateien, ist aber auch der Schlüssel der folgenden Arrays.
Im Array
Die XML-Datei enthält jedoch noch weitere Informationen. Wird <NAGIOS> ... <NAGIOS_SERVICENOTIFICATIONID>8418</NAGIOS_SERVICENOTIFICATIONID> <NAGIOS_SERVICENOTIFICATIONNUMBER>0</NAGIOS_SERVICENOTIFICATIONNUMBER> <NAGIOS_SERVICEOUTPUT>HTTP OK HTTP/1.1 200 OK - 10087 bytes in 0.125 seconds</NAGIOS_SERVICEOUTPUT> <NAGIOS_SERVICEPERCENTCHANGE>0.00</NAGIOS_SERVICEPERCENTCHANGE> <NAGIOS_SERVICEPERFDATA>time=0.124811s;;;0.000000 size=10087B;;;0</NAGIOS_SERVICEPERFDATA> <NAGIOS_SERVICEPERFDATAFILE></NAGIOS_SERVICEPERFDATAFILE> <NAGIOS_SERVICEPROBLEMID>0</NAGIOS_SERVICEPROBLEMID> <NAGIOS_SERVICESTATE>OK</NAGIOS_SERVICESTATE> <NAGIOS_SERVICESTATEID>0</NAGIOS_SERVICESTATEID> <NAGIOS_SERVICESTATETYPE>HARD</NAGIOS_SERVICESTATETYPE> <NAGIOS_SHORTDATETIME>27-12-2007 13:51:23</NAGIOS_SHORTDATETIME> ... </NAGIOS> Die einzelnen XML-Felder sind als Variablen in den PNP-Templates verwendbar, wobei jedes Feld als Variable gleichen Namens verfügbar ist.
Aus Custom TemplatesWie bereits unter ”Was sind Templates ?” beschrieben, ist die Darstellung der Graphen abhängig vom verwendeten Check-Command. Es gibt jedoch Situationen, in denen dieses Verhalten übersteuert werden muss, zum Beispiel dann wenn allgemeingültige Commands definiert wurden. PNP, speziell process_perfdata.pl, sucht zur Laufzeit für jedes check_command im Verzeichnis etc/check_commands nach einer Config-Datei (<check_command>.cfg) und liest diese, wenn vorhanden, ein. Folgende Optionen können darin definiert werden: CUSTOM_TEMPLATEGeht man von folgendem Beispiel einer Nagios command-Definition aus: define command { command_name check_nrpe command_line $USER1$/check_nrpe -H $HOSTADDRESS$ -c $ARG1$ -a "$ARG2$" } Die Folge wäre, dass immer das Template check_nrpe.php verwendet werden würde, auch wenn auf dem zu überwachenden Server via NRPE ein ganz anderes Plugin aufgerufen wurde. Da unser Beispiel-Command check_nrpe lautet, wird nach etc/check_commands/check_nrpe.cfg gesucht. Eine Beispiel-Config wird bereits während der Installation mit der Dateierweiterung .cfg-sample in etc/check_commands gespeichert. # check_command check_nrpe!load!-w 4,4,4 -c 5,5,5 # ________0__________| | | # ________1__________________| | # ________2__________________________| # CUSTOM_TEMPLATE = 1
Diese Option hat nur Einfluss, wenn die RRD Datenbank neu erstellt wird. DATATYPEÜber die Option “DATATYPE” kann beeinflusst werden, mit welchem Datentyp die RRD-Datenbank angelegt werden soll. Default ist in diesem Fall “GAUGE”. Für fortlaufende Werte wird aber hier der Datentyp COUNTER benötigt. Normalerweise sollten Plugin-Entwickler für Daten von Typ Counter die Einheit “c” verwenden. Dies ist jedoch nicht immer der Fall. Alle Datenreihen auf Typ COUNTER einstellen. DATATYPE = COUNTER Einzelnen Datenreihen spezielle Datentypen zuweisen DATATYPE = GAUGE,GAUGE,COUNTER,COUNTER Weitere Datentypen sind in der RRDTool-Dokumentation unter rrdcreate erklärt. Diese Option hat nur Einfluss, wenn die RRD Datenbank neu erstellt wird. USE_MIN_ON_CREATE und USE_MAX_ON_CREATEIn einigen wenigen Situationen ist es notwendig, die für RRDTool gültigen Daten zu begrenzen. RRD-Datenbanken lassen sich mit definierten Minimum- und Maximum-Werten anlegen. Weitere Infos unter http://oss.oetiker.ch/rrdtool/doc/rrdcreate.en.html Berücksichtigen des Maximum-Wertes aus den Performance-Daten USE_MAX_ON_CREATE = 1 Berücksichtigen des Minimum-Wertes aus den Performance-Daten USE_MIN_ON_CREATE = 1 Diese Option hat nur Einfluss, wenn die RRD Datenbank neu erstellt wird. RRD_STORAGE_TYPERRD_STORAGE_TYPE = SINGLE Die Option RRD_STORAGE_TYPE definiert die Art der Datenhaltung. Mögliche Werte sind MULTIPLE und SINGLE SINGLE: Eine RRD-Datenbank pro Service MULTIPLE: Ein oder mehrere RRD-Datenbanken pro Service. Für jede Datenreihe wird eine eigene RRD-Datenbank erstellt.
ACHTUNG: Daten werden nicht automatisch migriert! Diese Option hat nur Einfluss, wenn die RRD Datenbank neu erstellt wird. RRD_HEARTBEATGültig ab PNP 0.6.1 RRD_HEARTBEAT = 305 Nach <RRD_HEARTBEAT> Sekunden erwartet RRDtool neue Daten. Mehr dazu unter http://oss.oetiker.ch/rrdtool/doc/rrdcreate.en.html Diese Option hat nur Einfluss, wenn die RRD Datenbank neu erstellt wird. Hints on Template NamesIn den meisten Situationen, kann man erwünsche Template Namen relativ einfach, durch die Verwendung geeignter command Objekt Definitionen, erhalten. Man betrachte folgendes Beispiel: define command { command_name check_by_ssh command_line /usr/bin/ssh $HOSTADDRESS$ $ARG1$ } mit commands wie diesem: … check_command check_by_ssh!/usr/lib/nagios/plugins/check_load -w 4,4,4 -c 5,5,5 … Selbst wenn man “CUSTOM_TEMPLATE = 1” benutz, würde man template Namen wie diesen “_usr_lib_nagios_plugins_check_load_-w_4,4,4_-c_5,5,5” erhalten, was höchst unerwünscht ist, insbesondere wegen den darin enthaltenen Parametern. Lösung 1: Die Parameter in eigenständige $ARGn$ auslagern Eine einfache Lösung ist die Verwendung der folgenden command Objekt Definition: define command { command_name check_by_ssh command_line /usr/bin/ssh $HOSTADDRESS$ $ARG1$ $ARG2$ } mit commands wie diesem: … check_command check_by_ssh!/usr/lib/nagios/plugins/check_load!-w 4,4,4 -c 5,5,5 … (man beachte das hinzugekommene “!”) Dies funktioniert selbst dann, wann $ARG2$ leer bleibt. Selbstverständlich müsste man immer noch “CUSTOM_TEMPLATE = 1” setzen. Lösung 2: Den remote executor in der command Objekt Definition verstecken Eine andere Lösung ist es, den remote excutor in den jeweiligen command Objekt Definitionen zu verstekcne. Anstatt folgender Definition: define command { command_name check_by_ssh command_line /usr/bin/ssh $HOSTADDRESS$ $ARG1$ $ARG2$ } würde man dies für jeden fern auszuführenden command definieren: define command { command_name check_load_by_ssh command_line /usr/bin/ssh $HOSTADDRESS$ /usr/lib/nagios/plugins/check_load $ARG1$ } mit commands wie diesem: … check_load_by_ssh!-w 4,4,4 -c 5,5,5 … Natürlich darf “CUSTOM_TEMPLATE = 1” bei dieser Lösung nicht mehr gesetzt werden. Welche der obigen Lösungen verwendet wird, ist weitgehend Geschmacksache. AdvancedVerteilte SystemeIst Nagios als verteiltes System implementiert, stellt sich die Frage, wo PNP installiert wird. Rein technisch ist diese Frage nicht wichtig. PNP kann auf den Slaves sowie auf dem Master-Server installiert sein. Oder nur auf dem Master? Wird PNP auf dem Master betrieben, ist jedoch bei der Übergabe der Daten via send_nsca von den Slave-Servern zum Master darauf zu achten, dass auch die Performance-Daten übergeben werden. Weiterhin kommt auf dem Master oft nicht das Original-Check-Command zum Einsatz. Damit nun aber PNP auf dem Master noch erkennen kann, welches Check-Command auf den Slaves die Daten ermittelt hat, reagiert process_perfdata.pl auf ein zusätzliches Feld am Ende der Performance-Daten. OK - 127.0.0.1: rta 2.687ms, lost 0% | rta=2.687ms;3000.000;5000.000;0; pl=0%;80;100;; [check_icmp] Findet PNP am Ende der Performance Daten einen in eckigen Klammern eingeschlossenen Text, so wird dieser als Check-Command und somit als PNP-Template verwendet. Die Nagios-Dokumentation zu diesem Thema ist hier zu finden. Das in der Doku verwendete Command ist leicht anzupassen. Aus define command{ command_name submit_check_result command_line /usr/local/nagios/libexec/eventhandlers/submit_check_result $HOSTNAME$ '$SERVICEDESC$' $SERVICESTATE$ '$SERVICEOUTPUT$' } wird define command{ command_name submit_check_result command_line /usr/local/nagios/libexec/eventhandlers/submit_check_result $HOSTNAME$ '$SERVICEDESC$' $SERVICESTATE$ '$SERVICEOUTPUT$ | $SERVICEPERFDATA$ [$SERVICECHECKCOMMAND$]' } Das check_multi-PluginDas Plugin check_multi ist eines der ersten Plugins, das die Funktionen von Nagios 3.0 richtig ausschöpft. Check_Multi ist in der Lage, mehrere Nagios-Plugins auszuführen, aber für Nagios als einen Service darzustellen. Die Ausgabe von check_multi erfolgt über mehrere Zeilen, um die Masse an Informationen wieder darstellen zu können. Daraus ergaben sich jedoch einige Schwierigkeiten für PNP. PNP muss aus den Performance-Daten wieder die Daten der einzelnen Plugins ermitteln können. Zusammen mit Matthias Flacke, dem Entwickler von check_multi, haben wir jedoch recht schnell eine Möglichkeit gefunden, die Daten wieder sauber den einzelnen Plugins zuzuordnen. RRDtool Cache DaemonIn großen Installationen wird man über kurz oder lang feststellen, dass die Verarbeitung der Performance-Daten eine recht hohe I/O-Last zur Folge hat. RRDtool muss extrem viele Updates auf Disk schreiben, kann dabei jedoch den Disk-Cache nicht optimal ausnutzen. Eine Optimierung stellt das Sammeln und Sortieren der Daten dar. Es ist für das System effektiver, viele Updates im Block in eine RRD-Datenbank zu schreiben. Der Disk-Cache kann dabei effektiver genutzt werden. In der aktuellen RRDtool-Version ( SVN trunk 1550+ ) ist der rrdcached enthalten, der genau diese Situation verbessern soll. An dieser Stelle möchte ich mich bei Florian octo Forster, Kevin Brintnall und Tobi Oetiker bedanken. Die Entwicklung dieses Daemons wurde vorbildlich auf der rrd-developers Mailingliste koordiniert. ArbeitsweiseDer rrdcached arbeitet als Daemon im Hintergrund und öffnet einen UNIX- oder TCP-Socket, auf dem er auf Anfragen von rrdtool wartet. Aufgrund von Sicherheitsbedenken ist es in neueren Versionen von rrdcached aber nicht mehr möglich absolute Pfadangaben (wie bei pnp4nagios üblich) bei Netzwerkzugriffen zu verwenden, daher ist derzeit nur Nutzung von UNIX-Sockets möglich. rrdcachedDer rrdcached kennt einige wichtige Optionen, die beim Start übergeben werden. Option -l definiert den Socket, auf dem der rrdcached Requests annimmt. Der Default-UDP-Port ist 42217, der Default-UNIX-Socket /tmp/rrdcached.sock. -l unix:/pfad/zum/rrdcached.sock -l /pfad/zum/rrdcached.sock -l 127.0.0.1 -l 127.0.0.1:8888 Option -P gibt die für die nachfolgenden Sockets (mit -l spezifiziert) erlaubten Befehle an, welche auf die RRD-Datenbanken angewendet werden können. -P FLUSH,PENDING Option -s erlaubt es die Gruppenzugehörigkeit der nachfolgenden UNIX-Sockets zu ändern. -s nagios Option -m setzt die Zugriffsrechte für die nachfolgenden UNIX-Sockets auf die (in oktal) angegebenen Werte. -m 0660 Option -w bestimmt den Intervall in Sekunden, in dem die Daten auf Disk geschrieben werden sollen. -w 1800 Option -z definiert einen Delay, der die über die Option -w definierten Schreibzyklen in einen zufälligen Bereich [0-delay] verteilt, um gleichzeitige Schreibzugriffe zu verhindern. Der Wert der Option -z darf nicht größer gewählt werden als -w. -z 1800 Option -p definiert ein PID File -p /var/run/rrdcached.pid Option -j definiert den Pfad zu einem Journal-Verzeichnis. Dort werden alle Aufträge protokolliert und ggf. beim nächsten Start nachgefahren, falls der rrdcached-Daemon abstürzt. -j /var/cache/rrdcached Daraus ergibt sich beispielsweise ein Aufruf von rrdached mit folgenden Parametern rrdcached -w 1800 -z 1800 -p /tmp/rrdcached.pid -j /tmp -s nagios -m 0660 -l unix:/tmp/rrdcached.sock rrdtoolRRDtool selbst wird die Existenz des Daemons über die Option --daemon=<socket> mitgeteilt. rrdtool --daemon=unix:/tmp/rrdcached.sock update ... Dies muss natürlich mit den Startoptionen des rrdcached übereinstimmen! Integration in PNPDa zwei Bestandteile von PNP auf den rrdcached vorbereitet werden müssen, ergeben sich Änderungen in zwei Config-Files. Außerdem muß der User unter welchem der Webserver läuft zur Gruppe unter der Nagios läuft hinzugefügt werden.
1. Anpassen der # EXPERIMENTAL rrdcached Support # Use only with rrdtool svn revision 1511+ # RRD_DAEMON_OPTS = unix:/var/run/rrdcached.sock
2. Anpassen der # # EXPERIMENTAL rrdcached Support # Use only with rrdtool svn revision 1511+ # # $conf['RRD_DAEMON_OPTS'] = 'unix:/tmp/rrdcached.sock'; $conf['RRD_DAEMON_OPTS'] = 'unix:/var/run/rrdcached.sock'; Die passenden Optionen sind bereits in den Beispieldateien enthalten. NPCDNPCD (Nagios-Perfdata-C-Daemon) wurde geschrieben, um die asynchrone Bearbeitung von Nagios Performance-Daten 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 Wenn man dem Nagios-Daemon mitteilt, dass man nach jedem einzelnen Check auch die Performance-Daten 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 Performance-Daten 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 Performance-Daten lediglich durch das Verschieben der Dateien in ein Spool-Verzeichnis 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 arbeitetWie bereits erwähnt, ist die Arbeit der Performance-Daten-Verarbeitung durch das schnelle Verschieben der Datei bereits erledigt, aber das bringt die Performance-Daten noch nicht in die RRD-Datenbank. Um den Transport der Performance-Daten-Dateien kümmert sich nun der NPCD-Daemon, unabhängig vom Nagios-Prozess, indem 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 Spool-Verzeichnisses und startet für jede gefundene Datei einen Thread zur weiteren Verarbeitung mit Hilfe des
Da das Format der Performance-Daten-Dateien dem Format der 'normalen' PNP-Bulk-Modus-Dateien gleicht, kann NPCD nun für jede gefundene Datei also Vor- und NachteilePro:
Kontra:
NPCD Config
NPCD muss zwangsläufig über eine Konfigurationsdatei gesteuert werden. Eine Beispielkonfiguration liegt der PNP-Installation als
Nach Umbenennen der /usr/local/pnp4nagios/bin/npcd -f /usr/local/pnp4nagios/etc/npcd.cfg oder /usr/local/pnp4nagios/bin/npcd -d -f /usr/local/pnp4nagios/etc/npcd.cfg um NPCD im Hintergrund als Daemon laufen zu lassen.
Hinweis:
Die npcd.cfg-sampleDies sind die essentiellen Konfigurationsdirektiven für NPCD: # Privilege Options user = nagios group = nagios # Logging Options log_type = syslog log_file = /usr/local/pnp4nagios/var/npcd.log max_logfile_size = 10485760 log_level=0 # Processing Options perfdata_spool_dir = /usr/local/pnp4nagios/var/spool/perfdata/ perfdata_file_run_cmd = /usr/local/pnp4nagios/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
check_procs ist ein Beispiel für ein Plugin, das keine Performance-Daten ausgibt: ./check_procs -a ndo2db -w 1: -c 0: PROCS OK: 2 processes with args 'ndo2db' Mit dem folgenden Wrapper-Script kann das geändert werden check_procs.sh #!/bin/bash LINE=`/usr/local/nagios/libexec/check_procs $*` RC=$? COUNT=`echo $LINE | awk '{print $3}'` PROCS=`expr $COUNT - 1` LINE=`echo $LINE | sed "s/: $COUNT /: $PROCS /"` echo $LINE \| procs=$PROCS exit $RC Nun wird die Zahl zusammen mit einer Bezeichnung ausgegeben. ./check_procs.sh -a ndo2db -w 1: -c 0: PROCS OK: 2 processes with args 'ndo2db'| procs=2
'Bezeichnung'=Wert[UOM];[warn];[crit];[min];[max] Anmerkungen:
Es bleibt Drittanbietern überlassen, aus den Performance-Daten Graphen zu erzeugen.| Quelle: https://www.monitoring-plugins.org/doc/guidelines.html#AEN200 |
Menu
| |||||||||||||||||||||||||||||||||||||||||||||||||
pnp4nagios-0.6.42 [ 04-17-2023 ]
|