pnp4nagios/share/pnp/documents/de_DE/doc_complete.html
2017-05-20 15:29:39 +02:00

3370 lines
145 KiB
HTML
Raw Blame History

This file contains invisible Unicode characters

This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<div class="plugin_include_content" id="plugin_include__de:pnp-0.6:new-features">
<h1><a name="neues_in_pnp_06x" id="neues_in_pnp_06x" href="/de/pnp-0.6/new-features" title="Neues in PNP 0.6.x">Neues in PNP 0.6.x</a></h1>
<div class="level1">
<p>
<a href="/_detail/pnp-0.6/gallery/pnp-preview-05-08-2009.png?id=de%3Apnp-0.6%3Adoc_complete" class="media" title="pnp-0.6:gallery:pnp-preview-05-08-2009.png"><img src="/_media/pnp-0.6/gallery/pnp-preview-05-08-2009.png?w=200" class="mediaright" align="right" title="PNP 0.6.x Preview " alt="PNP 0.6.x Preview " width="200" /></a>
</p>
<p>
Die Arbeit an der Version 0.6.x ist in vollem Gange.
</p>
<p>
Mit Version 0.6.x steigen wir von Subversion auf GIT um. Der Sourcecode ist bereits auf Sourceforge erh&auml;ltlich.
</p>
<p>
<a href="http://pnp4nagios.git.sourceforge.net" class="urlextern" title="http://pnp4nagios.git.sourceforge.net" rel="nofollow">http://pnp4nagios.git.sourceforge.net</a>
</p>
<p>
<strong>Bisher umgesetzte Funktionen:</strong>
</p>
<ul>
<li class="level1"><div class="li"> Webfrontend basiert auf <a href="http://www.kohanaphp.com" class="urlextern" title="http://www.kohanaphp.com" rel="nofollow">Kohana</a></div>
</li>
<li class="level1"><div class="li"> Webfrontend basiert auf <a href="http://jqueryui.com/themeroller/" class="urlextern" title="http://jqueryui.com/themeroller/" rel="nofollow">jQuery Themes</a></div>
</li>
<li class="level1"><div class="li"> Javascript-Funktionen &uuml;ber <a href="http://jquery.com/" class="urlextern" title="http://jquery.com/" rel="nofollow">jQuery</a> Plugins </div>
</li>
<li class="level1"><div class="li"> process_perfdata.pl wird in der Lage sein, pro Datenreihe eine eigene RRD-Datenbank zu verwenden.</div>
</li>
<li class="level1"><div class="li"> Installer weiter verbessert. Angabe von Directory-Layouts &uuml;ber --with-layout</div>
</li>
<li class="level1"><div class="li"> RRDtool-Fehler werden als Bild dargestellt. Keine fehlenden Bilder mehr.</div>
</li>
<li class="level1"><div class="li"> PNP-Templates k&ouml;nnen keine internen Variablen mehr &uuml;berschreiben.</div>
</li>
<li class="level1"><div class="li"> PNP-Templates der Version 0.4.x k&ouml;nnen weiter verwendet werden.</div>
</li>
<li class="level1"><div class="li"> <acronym title="Portable Document Format">PDF</acronym>-Funktionen neu umgesetzt.</div>
</li>
<li class="level1"><div class="li"> Template default.php optimiert.</div>
</li>
<li class="level1"><div class="li"> Export aus den RRD-Datenbanken im <acronym title="Extensible Markup Language">XML</acronym>,CSV und JSON Format &uuml;ber die RRDtool “xport” Funktion.</div>
</li>
<li class="level1"><div class="li"> Page-Funktionen neu umgesetzt.</div>
</li>
<li class="level1"><div class="li"> Fehlerseiten verweisen auf online <a href="http://docs.pnp4nagios.org/de/faq" class="urlextern" title="http://docs.pnp4nagios.org/de/faq" rel="nofollow">FAQ-Artikel</a>.</div>
</li>
<li class="level1"><div class="li"> Mouseover Popup im Nagios-Frontend &uuml;ber jQuery.clueTip Plugin</div>
</li>
<li class="level1"><div class="li"> Volle Unterst&uuml;tzung des rrdcached.</div>
</li>
</ul>
<p>
<a href="/de/pnp-0.6/start" class="wikilink1" title="de:pnp-0.6:start">zur&uuml;ck zur &Uuml;bersicht</a> | <a href="/de/pnp-0.6/about#anforderungen" class="wikilink1" title="de:pnp-0.6:about">Anforderungen</a>
</p>
</div>
<div class="inclmeta level1">
<a href="/de/pnp-0.6/new-features" class="wikilink1 permalink" title="de:pnp-0.6:new-features" rel="bookmark">de:pnp-0.6:new-features</a>
</div>
</div>
<div class="plugin_include_content" id="plugin_include__de:pnp-0.6:about">
<h1><a name="ueber_pnp" id="ueber_pnp" href="/de/pnp-0.6/about" title="&Uuml;ber PNP">&Uuml;ber PNP</a></h1>
<div class="level1">
</div>
<h2><a name="anforderungen_an_plugins" id="anforderungen_an_plugins">Anforderungen an Plugins</a></h2>
<div class="level2">
<p>
PNP ben&ouml;tigt zwingend g&uuml;ltige Performancedaten von Nagios-Plugins.
</p>
<p>
Was sind also diese Performancedaten?
</p>
<p>
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.
</p>
<p>
<strong>Beispiel check_icmp :</strong>
</p>
<pre class="code"> OK - 127.0.0.1: rta 2.687ms, lost 0% | rta=2.687ms;3000.000;5000.000;0; pl=0%;80;100;;</pre>
<p>
daraus ergibt sich der Output auf der linken Seite des Pipe-Symbols
</p>
<pre class="code"> OK - 127.0.0.1: rta 2.687ms, lost 0%</pre>
<p>
und die Performancedaten
</p>
<pre class="code"> rta=2.687ms;3000.000;5000.000;0; pl=0%;80;100;;</pre>
<p>
Wie man unschwer erkennt, sind die Performancedaten auf die maschinelle Verarbeitung ausgelegt. Das Format ist in den
<a href="https://www.monitoring-plugins.org/doc/guidelines.html#AEN200" class="urlextern" title="https://www.monitoring-plugins.org/doc/guidelines.html#AEN200" rel="nofollow">Developer Guidelines</a>
festgelegt (einen Auszug davon gibt es <a href="/de/pnp-0.6/perfdata_format" class="wikilink1" title="de:pnp-0.6:perfdata_format">an dieser Stelle</a>), es soll aber hier noch einmal kurz erl&auml;utert werden.
</p>
<pre class="code"> rta=2.687ms;3000.000;5000.000;0;
| | | | | | |
|----|--|----|---------|-----|-|----- * Label
|--|----|---------|-----|-|----- * Aktueller Wert
|----|---------|-----|-|----- Einheit ( UOM = UNIT of Measurement )
|---------|-----|-|----- Warning Schwellwert
|-----|-|----- Critical Schwellwert
|-|----- Minimum Wert
|----- Maximum Wert
</pre>
<p>
Mit * gekennzeichnete Werte m&uuml;ssen vorhanden sein. Alle anderen Werte sind optional.
</p>
<p>
Mehrere Datenreihen werden durch Leerzeichen getrennt. Die eigentlichen Daten d&uuml;rfen also keine Leerzeichen enthalten. Soll das Label Leerzeichen enthalten, so m&uuml;ssen diese in einfache Hochkomma eingeschlossen werden.
</p>
</div>
<h2><a name="benoetigte_software" id="benoetigte_software">Ben&ouml;tigte Software</a></h2>
<div class="level2">
<ul>
<li class="level1"><div class="li"> <acronym title="Practical Extraction and Report Language">Perl</acronym> &gt;= 5.x ohne besondere Module</div>
</li>
<li class="level1"><div class="li"> RRDtool ab 1.x; besser 1.2, aber nicht zwingend.<br/>
Achtung: wird RRDtool ohne Paket-Manager installiert, fehlen anschließend m&ouml;glicherweise die dejavu-Fonts. Das &auml;ußert sich z.B. durch fehlende Schriften in den Grafiken</div>
</li>
<li class="level1"><div class="li"> <acronym title="Hypertext Preprocessor">PHP</acronym> &gt;= 5.1.6 f&uuml;r das Webfrontend basierend auf <a href="http://www.kohanaphp.com" class="urlextern" title="http://www.kohanaphp.com" rel="nofollow">Kohana</a></div>
</li>
<li class="level1"><div class="li"> Nagios &gt;= 2.x oder Icinga</div>
</li>
<li class="level1"><div class="li"> f&uuml;r Kohana muss außerdem das Modul “mod_rewrite” in der Web-Server-Konfiguration aktiviert sein. Einzelheiten sind in der Web-Server-Dokumentation der entsprechenden Distribution nachzulesen.</div>
</li>
</ul>
</div>
<h2><a name="lizenz" id="lizenz">Lizenz</a></h2>
<div class="level2">
<p>
PNP ist unter der <a href="http://www.gnu.de/documents/gpl-2.0.de.html" class="urlextern" title="http://www.gnu.de/documents/gpl-2.0.de.html" rel="nofollow">GPL 2</a> lizensiert.
</p>
</div>
<h2><a name="download" id="download">Download</a></h2>
<div class="level2">
<p>
Die Entwicklung von PNP wird auf <a href="http://sourceforge.net/projects/pnp4nagios" class="urlextern" title="http://sourceforge.net/projects/pnp4nagios" rel="nofollow">Sourceforge.Net</a> organisiert. PNP ist dort unter dem Projektnamen “PNP4Nagios” registriert.
</p>
<p>
Die jeweils aktuelle (stabile) Version findet ihr im <a href="http://sourceforge.net/project/showfiles.php?group_id=191615" class="urlextern" title="http://sourceforge.net/project/showfiles.php?group_id=191615" rel="nofollow">Downloadbereich</a>.
</p>
<p>
Wer noch aktueller sein m&ouml;chte, kann auch die jeweils letzte Entwickler-Version benutzen.
</p>
<p>
Mit der Version 0.6.x wurde von SVN auf GIT zum Verwalten des Sourcecodes gewechselt.
</p>
<p>
Die aktuelle Entwicklung ist jederzeit unter <a href="https://github.com/lingej/pnp4nagios" class="urlextern" title="https://github.com/lingej/pnp4nagios" rel="nofollow">https://github.com/lingej/pnp4nagios</a> einzusehen. Beim Klicken auf <a href="http://docs.pnp4nagios.org/_media/dwnld/pnp4nagios-head.tar.gz" class="urlextern" title="http://docs.pnp4nagios.org/_media/dwnld/pnp4nagios-head.tar.gz" rel="nofollow"> pnp4nagios-head.tar.gz</a> wird ein Archiv mit der letzten Version heruntergeladen.
</p>
</div>
<h2><a name="support" id="support">Support</a></h2>
<div class="level2">
<p>
VOR dem Stellen von Support-Anfragen sollte sichergestellt werden, dass die unter <a href="http://docs.pnp4nagios.org/de/pnp-0.6/verify" class="urlextern" title="http://docs.pnp4nagios.org/de/pnp-0.6/verify" rel="nofollow">http://docs.pnp4nagios.org/de/pnp-0.6/verify</a> genannten Punkte gepr&uuml;ft wurden.
</p>
<p>
Die Entwickler und Helfer sind im Nagios-Portal unter <a href="http://www.nagios-portal.org" class="urlextern" title="http://www.nagios-portal.org" rel="nofollow">http://www.nagios-portal.org</a> vertreten.
Dort gibt es einen eigenen Bereich zum Thema PNP.<br/>
Bei Support-Anfragen bitte das Betriebssystem und die PNP-Version angeben. Außerdem ist es wichtig, ob PNP aus den Sourcen erstellt oder ein vorgefertigtes Paket verwendet wurde.
</p>
<p>
Erfolgreich gel&ouml;ste Probleme bitte mit einem [solved] in der Betreffzeile des ersten Beitrags kennzeichnen. Auf diese Weise erleichtern wir anderen Benutzern das Finden von L&ouml;sungen zu einem Problem.
</p>
<p>
Weiterhin k&ouml;nnen die Mailinglisten auf Sourceforge verwendet werden. Dort ist es jedoch &uuml;blich, Fragen auf Englisch zu stellen.
</p>
<p>
<a href="https://lists.sourceforge.net/lists/listinfo/pnp4nagios-users" class="urlextern" title="https://lists.sourceforge.net/lists/listinfo/pnp4nagios-users" rel="nofollow">pnp4nagios-users</a>: Die Users-Liste f&uuml;r allgemeine Fragen zur Konfiguration.
</p>
<p>
<a href="https://lists.sourceforge.net/lists/listinfo/pnp4nagios-devel" class="urlextern" title="https://lists.sourceforge.net/lists/listinfo/pnp4nagios-devel" rel="nofollow">pnp4nagios-devel</a>: Die Devel-Liste f&uuml;r Anregungen und Fehler Reports.
</p>
<p>
<a href="https://lists.sourceforge.net/lists/listinfo/pnp4nagios-checkins" class="urlextern" title="https://lists.sourceforge.net/lists/listinfo/pnp4nagios-checkins" rel="nofollow">pnp4nagios-checkins</a>: Auf der Checkins-Liste werden &Auml;nderungen im SVN-Repository automatisch ver&ouml;ffentlicht.
</p>
</div>
<h2><a name="datenhaltung" id="datenhaltung">Datenhaltung</a></h2>
<div class="level2">
<p>
Die Performance-Daten werden mit Hilfe von <a href="http://www.rrdtool.org" class="urlextern" title="http://www.rrdtool.org" rel="nofollow">RRDtool</a> in sogenannten Round-Robin-Datenbanken gespeichert, die wie ein Ringpuffer funktionieren. Das bedeutet, dass nach einer gewissen Zeit die &auml;ltesten Daten “hinten” herausfallen und “vorne” durch neue ersetzt werden.
</p>
<p>
Verschiedene Zeitintervalle innerhalb der Datei sorgen f&uuml;r unterschiedliche Aufl&ouml;sungen. In der Standardeinstellung k&ouml;nnen die Daten f&uuml;r die letzten zwei Tage im Minutenabstand abgelegt werden, f&uuml;r zehn Tage im 5-Minutenabstand, f&uuml;r 90 Tage im 30-Minutenabstand und f&uuml;r 4 Jahre im 6-Stundenabstand. Die Vergr&ouml;ßerung des Intervalls bewirkt, dass auch die Daten &uuml;ber das jeweils gr&ouml;ßere Intervall hinweg gemittelt werden. Das f&uuml;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 <a href="http://www.linux-magazin.de/Heft-Abo/Ausgaben/2004/06/Daten-ausgesiebt" class="urlextern" title="http://www.linux-magazin.de/Heft-Abo/Ausgaben/2004/06/Daten-ausgesiebt" rel="nofollow">Artikel im Linux-Magazin</a>.
</p>
<p>
Durch die Speicherung in diesem Format &auml;ndert sich die Dateigr&ouml;ße nach dem Anlegen nicht mehr. Pro Datenreihe werden ca. 400 KB ben&ouml;tigt.
</p>
<p>
<a href="/de/pnp-0.6/start" class="wikilink1" title="de:pnp-0.6:start">Zur&uuml;ck zur &Uuml;bersicht</a> | <a href="/de/pnp-0.6/modes" class="wikilink1" title="de:pnp-0.6:modes">PNP-Modi</a>
</p>
</div>
<div class="inclmeta level1">
<a href="/de/pnp-0.6/about" class="wikilink1 permalink" title="de:pnp-0.6:about" rel="bookmark">de:pnp-0.6:about</a>
</div>
</div>
<div class="plugin_include_content" id="plugin_include__de:pnp-0.6:modes">
<h1><a name="die_kunst_daten_zu_sammeln" id="die_kunst_daten_zu_sammeln" href="/de/pnp-0.6/modes" title="Die Kunst Daten zu sammeln">Die Kunst Daten zu sammeln</a></h1>
<div class="level1">
<p>
PNP unterst&uuml;tzt mehrere Arten, die Performance-Daten zu verarbeiten. Die einzelnen Modi unterscheiden sich durch ihre Komplexit&auml;t und die zu erwartende Performance.
</p>
<p>
Das folgende Bild zeigt die Verbindungen zwischen Nagios, PNP und RRDtool
</p>
<p>
Nagios f&uuml;hrt f&uuml;r jeden Host- und jeden Service, dessen Performance-Daten gesammelt werden sollen, einen Befehl aus. Abh&auml;ngig vom gew&auml;hlten Modus werden die Daten entweder direkt an ein <acronym title="Practical Extraction and Report Language">Perl</acronym>-Script &uuml;bergeben oder in tempor&auml;re Dateien geschrieben und sp&auml;ter verarbeitet. process_perfdata.pl legt die Datei in <acronym title="Extensible Markup Language">XML</acronym>-Dateien ab und speichert sie mit Hilfe von RRDtool in RRD-Dateien.<br/>
</p>
<p>
Bevor Ihr euch auf einen Modus festlegt, lest euch alles durch und entscheidet selbst, welcher Weg f&uuml;r eure Installation der Beste ist.
</p>
</div>
<h1><a name="die_modi_im_vergleich" id="die_modi_im_vergleich">Die Modi im Vergleich</a></h1>
<div class="level1">
</div>
<h2><a name="synchronous_mode" id="synchronous_mode">Synchronous Mode</a></h2>
<div class="level2">
<p>
<a href="/_detail/synchronous.png?id=de%3Apnp-0.6%3Adoc_complete" class="media" title="synchronous.png"><img src="/_media/synchronous.png?w=150" class="medialeft" align="left" alt="" width="150" /></a>Der “Sync Mode” ist der einfachste und am leichtesten einzurichten. Nagios ruft f&uuml;r jeden Service (bzw. Host) zus&auml;tzlich das <acronym title="Practical Extraction and Report Language">Perl</acronym>-Script process_perfdata.pl auf, um die Daten zu verarbeiten.
</p>
<p>
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.
</p>
</div>
<h2><a name="bulk_mode" id="bulk_mode">Bulk Mode</a></h2>
<div class="level2">
<p>
<a href="/_detail/bulk.png?id=de%3Apnp-0.6%3Adoc_complete" class="media" title="bulk.png"><img src="/_media/bulk.png?w=150" class="medialeft" align="left" alt="" width="150" /></a>Im Bulk-Mode schreibt Nagios die ben&ouml;tigten Daten in eine tempor&auml;re Datei. Nach Ablauf einer definierten Zeit wird die Datei an einem St&uuml;ck abgearbeitet und gel&ouml;scht.
</p>
<p>
Die Anzahl der Aufrufe von process_perfdata.pl reduziert sich um ein Vielfaches. Abh&auml;ngig von der Zeit und den gesammelten Daten werden wesentlich weniger Systemaufrufe ausgef&uuml;hrt. Daf&uuml;r l&auml;uft process_perfdata.pl l&auml;nger.
</p>
<p>
<strong>Hinweis</strong>
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&ouml;tigt, so lange kann Nagios keine Checks ausf&uuml;hren.
</p>
<p>
Auszug aus var/perfdata.log:
</p>
<pre class="code">
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) ...
</pre>
<p>
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&uuml;r 0.06 Sekunden blockiert.
</p>
</div>
<h2><a name="bulk_mode_mit_npcd" id="bulk_mode_mit_npcd">Bulk Mode mit NPCD</a></h2>
<div class="level2">
<p>
<a href="/_detail/bulk-npcd.png?id=de%3Apnp-0.6%3Adoc_complete" class="media" title="bulk-npcd.png"><img src="/_media/bulk-npcd.png?w=150" class="medialeft" align="left" alt="" width="150" /></a>Dies ist aus Nagios-Sicht die sauberste Art der Verarbeitung. Nagios wird nicht blockiert.
</p>
<p>
Nagios benutzt wieder eine tempor&auml;re Datei, um die Daten zu speichern, und f&uuml;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&uuml;hren.
</p>
<p>
Der NPCD ( Nagios Performance C Daemon ) &uuml;berwacht nun das Verzeichnis auf neue Dateien und &uuml;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.
</p>
</div>
<h2><a name="bulk_mode_mit_npcdmod" id="bulk_mode_mit_npcdmod">Bulk Mode mit npcdmod</a></h2>
<div class="level2">
<p>
<strong>Achtung</strong>
<em>Beginnend mit Nagios 4 haben sich die internen Strukturen ge&auml;ndert, so dass der Start des Moduls fehlschl&auml;gt. Bisher gibt es keine Pl&auml;ne Nagios 4 zu unterst&uuml;tzen. Bitte w&auml;hlen Sie einen der anderen Modi.</em>
</p>
<p>
<a href="/_detail/bulk-npcdmod.png?id=de%3Apnp-0.6%3Adoc_complete" class="media" title="bulk-npcdmod.png"><img src="/_media/bulk-npcdmod.png?w=150" class="medialeft" align="left" alt="" width="150" /></a>In diesem Szenario kommt npcdmod.o, ein NEB-Modul, zum Einsatz.
Diese Modul reduziert die Konfiguration des “Bulk Mode mit NPCD” auf zwei Zeilen in der nagios.cfg.
</p>
<p>
Dieser Modus ist gleichzusetzen mit dem “Bulk Mode mit NPCD”. Es ist auch genau der gleiche Ablauf und die gleiche Performance.
</p>
</div>
<h2><a name="gearman_mode" id="gearman_mode">Gearman Mode</a></h2>
<div class="level2">
<p>
<a href="/_detail/gearman.png?id=de%3Apnp-0.6%3Adoc_complete" class="media" title="gearman.png"><img src="/_media/gearman.png?w=150" class="medialeft" align="left" alt="" width="150" /></a>
</p>
<p>
PNP4Nagios kann seit Version 0.6.12 als Gearman Worker betrieben werden. So sind große verteilte Nagios Umgebungen auf Basis von mod_gearman realisierbar.
</p>
<p>
Ben&ouml;tigt wird eine fertig eingerichtete mod_gearman Installation wie von Sven Nierlein unter <a href="http://labs.consol.de/lang/en/nagios/mod-gearman/" class="urlextern" title="http://labs.consol.de/lang/en/nagios/mod-gearman/" rel="nofollow">http://labs.consol.de/lang/en/nagios/mod-gearman/</a> beschrieben.
</p>
</div>
<h2><a name="die_entscheidung" id="die_entscheidung">Die Entscheidung</a></h2>
<div class="level2">
<p>
Welchen der beschriebenen Wege ihr verwendet, h&auml;ngt also stark von der Gr&ouml;ße der Nagios-Installation ab.
</p>
<p>
Die verwendeten Begriffe werden euch aber in der Dokumentation immer wieder &uuml;ber den Weg laufen.
</p>
<p>
<a href="/de/pnp-0.6/start" class="wikilink1" title="de:pnp-0.6:start">Zur&uuml;ck zur &Uuml;bersicht</a> | <a href="/de/pnp-0.6/install" class="wikilink1" title="de:pnp-0.6:install">Installation</a>
</p>
</div>
<div class="inclmeta level1">
<a href="/de/pnp-0.6/modes" class="wikilink1 permalink" title="de:pnp-0.6:modes" rel="bookmark">de:pnp-0.6:modes</a>
</div>
</div>
<div class="plugin_include_content" id="plugin_include__de:pnp-0.6:upgrade">
<h1><a name="upgrade_auf_version_06x" id="upgrade_auf_version_06x" href="/de/pnp-0.6/upgrade" title="Upgrade auf Version 0.6.x">Upgrade auf Version 0.6.x</a></h1>
<div class="level1">
<p>
Das Web-Frontend ist komplett neu geschrieben worden und basiert nun auf dem <acronym title="Hypertext Preprocessor">PHP</acronym> MVC Framework <a href="http://www.kohanaphp.com" class="urlextern" title="http://www.kohanaphp.com" rel="nofollow">Kohana</a>. Somit ergeben sich grundlegend andere Abh&auml;ngigkeiten, die dringend vor der Installation gepr&uuml;ft werden m&uuml;ssen.
</p>
<p>
Anmerkung: Ein Upgrade l&auml;uft zuerst wie eine Neuinstallation. Anschließend sind einige Anpassungen durchzuf&uuml;hren, die weiter unten beschrieben sind.
</p>
<p>
PNP 0.4.x wurde ohne weitere Angabe von Optionen beim Aufruf von <code>./configure</code> unterhalb einer Nagios-Installation unter <code>/usr/local/nagios</code> installiert.
</p>
<p>
PNP 0.6.x wird bei Angabe keiner weiteren Optionen unter <code>/usr/local/pnp4nagios</code> installiert, ist also wie Nagios als eigenst&auml;ndige Applikation zu sehen.
</p>
<p>
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&auml;ndert, so dass sie sowieso nicht nutzbar sind.
</p>
</div>
<h2><a name="vergleich_der_struktur" id="vergleich_der_struktur">Vergleich der Struktur</a></h2>
<div class="level2">
<p>
Summary einer Installation von PNP 0.4.14
</p>
<pre class="code">
./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/
</pre>
<p>
Summary einer Installation von 0.6.0
</p>
<pre class="code">
./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
</pre>
<p>
Aus diesen Infos ergeben sich die zu &auml;ndernden Parameter und somit die Upgrade-Strategie.
</p>
</div>
<h2><a name="anpassungen" id="anpassungen">Anpassungen</a></h2>
<div class="level2">
<p>
Die Vorlagen der action_url-Definitionen haben sich ver&auml;ndert. Statt ”/nagios/pnp” ist ”/pnp4nagios” einzutragen und statt “index.php” wird nun “graph” benutzt
</p>
<pre class="code">define host {
name host-pnp
action_url /pnp4nagios/graph?host=$HOSTNAME$
register 0
}
define service {
name srv-pnp
action_url /pnp4nagios/graph?host=$HOSTNAME$&amp;srv=$SERVICEDESC$
register 0
}</pre>
<p>
&Auml;hnliches gilt f&uuml;r die Preview-Popup-Funktion
</p>
<pre class="code">define host {
name host-pnp
action_url /pnp4nagios/index.php/graph?host=$HOSTNAME$&amp;srv=_HOST_&#039; class=&#039;tips&#039; rel=&#039;/pnp4nagios/index.php/popup?host=$HOSTNAME$&amp;srv=_HOST_
register 0
}
define service {
name srv-pnp
action_url /pnp4nagios/graph?host=$HOSTNAME$&amp;srv=$SERVICEDESC$&#039; class=&#039;tips&#039; rel=&#039;/pnp4nagios/popup?host=$HOSTNAME$&amp;srv=$SERVICEDESC$
register 0
}</pre>
<p>
<strong>Achtung</strong>: Es ist <em>kein</em> Fehler, dass die Zeichenketten vor und nach “class” jeweils nur ein Apostroph enthalten.
</p>
<p>
Anders als in der 0.4.x Dokumentation vermerkt gelten die Templates f&uuml;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&uuml;gbar ist.
</p>
<p>
Innerhalb der <acronym title="Hypertext Preprocessor">PHP</acronym>-Dateien im templates-Verzeichnis m&uuml;ssen alle Variablen vor der ersten Benutzung initialisiert werden, z.B.
</p>
<pre class="code">$lower = &quot;&quot;</pre>
<p>
Das gilt auch f&uuml;r Variablen, an die fr&uuml;her “angeh&auml;ngt” werden konnte, ohne sie vorher zu initialisieren. Daher wird aus
</p>
<pre class="code">foreach ($DS as $i) {
$def[1] .= &quot;DEF:var$i=$rrdfile:$DS[$i]:AVERAGE &quot; ;</pre>
<p>
nun
</p>
<pre class="code">
$def[1] = &quot;&quot;;
foreach ($DS as $i) {
$def[1] .= &quot;DEF:var$i=$rrdfile:$DS[$i]:AVERAGE &quot; ;</pre>
<p>
<br/>
Konstanten in Template-Dateien funktionieren nicht mehr, so dass diese in Variablen umzuwandeln sind. Aus
</p>
<pre class="code">define(&quot;_WARNRULE&quot;, &#039;#FFFF00&#039;);</pre>
<p>
wird dann z.B.
</p>
<pre class="code"> $WARNRULE = &#039;#FFFF00&#039;;</pre>
<p>
Man sollte daran denken, alle Vorkommen in der Datei zu &auml;ndern <img src="/lib/images/smileys/icon_wink.gif" class="middle" alt=";-)" />.
</p>
</div>
<h2><a name="upgrade_szenario_mit_npcd" id="upgrade_szenario_mit_npcd">Upgrade Szenario mit NPCD</a></h2>
<div class="level2">
<ol>
<li class="level1"><div class="li"> Planen des neuen Aufbaus.</div>
</li>
<li class="level1"><div class="li"> Testinstallation durchf&uuml;hren und sich mit dem neuen System vertraut machen.</div>
</li>
<li class="level1"><div class="li"> Backup erstellen.</div>
</li>
<li class="level1"><div class="li"> PNP 0.6.x nach <code>/usr/local/pnp4nagios</code> installieren.</div>
</li>
<li class="level1"><div class="li"> make install-config</div>
</li>
<li class="level1"><div class="li"> make install-webconf</div>
</li>
<li class="level1"><div class="li"> Apache reload.</div>
</li>
<li class="level1"><div class="li"> Apache-Config testen. </div>
<ol>
<li class="level2"><div class="li"> Aufruf <code>/pnp4nagios</code> muss ein leeres Perfdata-Verzeichnis melden.</div>
</li>
</ol>
</li>
<li class="level1"><div class="li"> <code>/usr/local/pnp4nagios/etc/npcd.cfg</code> aus der <code>npcd.cfg-sample</code> erstellen.</div>
<ol>
<li class="level2"><div class="li"> Pfade &uuml;berpr&uuml;fen und ggf. &Auml;nderungen der 0.4.x nachziehen.</div>
</li>
</ol>
</li>
<li class="level1"><div class="li"> Alle Pfade zur neuen Installation in der nagios.cfg anpassen.</div>
</li>
<li class="level1"><div class="li"> Alle Pfade in den Command-Definitionen anpassen.</div>
</li>
<li class="level1"><div class="li"> npcd &uuml;ber <code>/etc/init.d/npcd stop</code> anhalten.</div>
</li>
<li class="level1"><div class="li"> <code>make install-init</code> installiert das neue Init Script f&uuml;r den npcd.</div>
</li>
<li class="level1"><div class="li"> Nagios anhalten.</div>
</li>
<li class="level1"><div class="li"> <code>/usr/local/nagios/share/perfdata</code> nach <code>/usr/local/pnp4nagios/var/perfdata</code> kopieren. Achtung: Auf Permissions achten.</div>
</li>
<li class="level1"><div class="li"> <code>/etc/init.d/npcd</code> start</div>
</li>
<li class="level1"><div class="li"> <code>/etc/init.d/nagios</code> start</div>
</li>
</ol>
</div>
<div class="inclmeta level1">
<a href="/de/pnp-0.6/upgrade" class="wikilink1 permalink" title="de:pnp-0.6:upgrade" rel="bookmark">de:pnp-0.6:upgrade</a>
</div>
</div>
<div class="plugin_include_content" id="plugin_include__de:pnp-0.6:install">
<h1><a name="installation" id="installation" href="/de/pnp-0.6/install" title="Installation">Installation</a></h1>
<div class="level1">
<p>
Im Folgenden wird die Installation von PNP beschrieben. Dabei wird davon ausgegangen, dass Nagios aus den Sourcen &uuml;bersetzt und im Verzeichnis /usr/local/nagios installiert wurde.<br/>
<strong>Achtung:</strong> Die Beschreibung bezieht sich auf die Developer-Version PNP 0.6.0.<br/>
Bitte vergessen Sie nicht, dass PNP nach der Installation noch konfiguriert werden muss.
</p>
</div>
<h2><a name="make_und_co" id="make_und_co">Make und Co</a></h2>
<div class="level2">
<p>
Die Installation von PNP wird wie bei Nagios auch &uuml;ber <a href="http://de.wikipedia.org/wiki/Makefile" class="interwiki iw_wpde" title="http://de.wikipedia.org/wiki/Makefile">Makefile</a>s gesteuert. Dabei wird durch den Aufruf von ./configure das System analysiert und die ermittelten Werte in Makefiles &uuml;bernommen.
</p>
<p>
Als User root wird PNP in /usr/local/src entpackt.
</p>
<pre class="code">
tar -xvzf pnp4nagios-HEAD.tar.gz
cd pnp4nagios
</pre>
<p>
Im Verzeichnis pnp4nagios wird nun ./configure aufgerufen.
</p>
<pre class="code">
./configure
</pre>
<p>
<strong>Hinweis:</strong> 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&ouml;nnte der Aufruf so aussehen
</p>
<pre class="code">
./configure --with-nagios-user=icinga --with-nagios-group=icinga
</pre>
<p>
Es laufen einige Zeilen &uuml;ber den Bildschirm. Wichtig ist die Ausgabe zum Schluss.
</p>
<pre class="code">
*** 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 &#039;make all&#039; to compile.</pre>
<p>
Die angezeigten Pfade sollten nun gepr&uuml;ft werden. Falls die gezeigten Werte nicht passen, kann durch einen erneuten Aufruf von ./configure mit den passenden Optionen Abhilfe geschaffen werden.<br/>
<strong>ACHTUNG:</strong> Nachdem es immer wieder Schwierigkeiten gibt: “Location of rrdtool binary” bedeutet inkl. Namen des Binary! Bei Bedarf kann man das beim ./configure als Parameter angeben:
</p>
<pre class="code"> ./configure --with-rrdtool=/usr/local/rrdtool-1.2.xx/bin/rrdtool</pre>
<pre class="code"> ./configure --help </pre>
<p>
zeigt, welche Optionen m&ouml;glich sind.<br/>
<br/>
Ein
</p>
<pre class="code">make all</pre>
<p>
kompiliert nun die in C geschriebenen Komponenten wie NPCD
</p>
<pre class="code">make install</pre>
<p>
kopiert alles an die richtige Stelle im Filesystem. Die Pfade wurden ja beim ./configure bereits gezeigt.
</p>
<p>
Nach der Installation der Programm- und <acronym title="HyperText Markup Language">HTML</acronym>-Dateien wird mit
</p>
<pre class="code">make install-webconf</pre>
<p>
eine Konfigurationsdatei in das Konfigurationsverzeichnis des Apache-Web-Servers kopiert.
</p>
<p>
Optional kann noch
</p>
<pre class="code">make install-config</pre>
<p>
aufgerufen werden. Damit werden Config-Files f&uuml;r process_perfdata.pl und npcd nach etc/pnp kopiert.
</p>
<p>
Wird das INIT Script f&uuml;r den NPCD ben&ouml;tigt, so sorgt
</p>
<pre class="code">make install-init</pre>
<p>
f&uuml;r die Installation nach /etc/init.d
</p>
<p>
Zusammenfassen lassen sich diese einzelnen Commands durch
</p>
<pre class="code">make fullinstall</pre>
<p>
<strong>Hinweis:</strong> Wie oben schon beschrieben wird standardm&auml;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):
</p>
<pre class="code">
# AuthUserFile /usr/local/nagios/etc/htpasswd.users
AuthUserFile /usr/local/icinga/etc/htpasswd.users
</pre>
<p>
<strong>Achtung:</strong> Nach dem Kopieren der Konfigurationsdatei f&uuml;r den Web-Server bzw. &Auml;ndern des AuthUserFile ist ein Restart des Web-Servers notwendig (<code>service httpd restart</code> bzw. <code>/etc/init.d/apache2 restart</code>).
</p>
</div>
<h2><a name="update" id="update">Update</a></h2>
<div class="level2">
<p>
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&uuml;fen Sie außerdem, ob Sie &Auml;nderungen im Verzeichnis <code>share/templates.dist</code> vorgenommen haben. Eigene Templates sollten im Ordner <code>share/templates</code> abgelegt werden.<br/>
<strong>Achtung</strong>: Wenn Sie in der Datei config.php &Auml;nderungen vorgenommen haben, sollten Sie diese Datei sichern, bevor sie bei einem “make install-config” &uuml;berschrieben wird.
</p>
<p>
Sie k&ouml;nnen die Schritte <code>make install-webconf</code> und <code>make install-init</code> &uuml;berspringen, denn zwischen den 0.6.x-Versionen gab es an dieser Stelle keine &Auml;nderungen.
</p>
</div>
<h2><a name="die_komponenten" id="die_komponenten">Die Komponenten</a></h2>
<div class="level2">
<p>
Nach der Installation sind einige Komponenten von PNP an die passenden Stellen im Dateisystem kopiert worden.
</p>
<p>
Im Folgenden sind dies die <acronym title="Hypertext Preprocessor">PHP</acronym>-Files f&uuml;r das Web-Frontend unter
</p>
<pre class="code"> /usr/local/pnp4nagios/share</pre>
<p>
Der Datensammler process_perfdata.pl in
</p>
<pre class="code"> /usr/local/pnp4nagios/libexec</pre>
<p>
Beispiel-Config-Files mit der Dateierweiterung <code>-sample</code> in
</p>
<pre class="code"> /usr/local/pnp4nagios/etc</pre>
<p>
Die Config-Datei config.php f&uuml;r das Web-Frontend in
</p>
<pre class="code"> /usr/local/pnp4nagios/etc</pre>
<p>
<a href="/de/pnp-0.6/start" class="wikilink1" title="de:pnp-0.6:start">Zur&uuml;ck zur &Uuml;bersicht</a> | <a href="/de/pnp-0.6/config" class="wikilink1" title="de:pnp-0.6:config">Konfiguration</a>
</p>
</div>
<div class="inclmeta level1">
<a href="/de/pnp-0.6/install" class="wikilink1 permalink" title="de:pnp-0.6:install" rel="bookmark">de:pnp-0.6:install</a>
</div>
</div>
<div class="plugin_include_content" id="plugin_include__de:pnp-0.6:config">
<h1><a name="konfiguration" id="konfiguration" href="/de/pnp-0.6/config" title="Konfiguration">Konfiguration</a></h1>
<div class="level1">
<p>
Im Folgenden wird die Konfiguration der bereits erw&auml;hnten <a href="/de/pnp-0.6/modes" class="wikilink1" title="de:pnp-0.6:modes">Arten der Performance-Daten Verarbeitung</a> genauer erkl&auml;rt.
</p>
<p>
Die bevorzugte Methode der PNP-Entwickler ist der “Bulk Mode mit NPCD und npcdmod”.
</p>
</div>
<h2><a name="synchronous_mode1" id="synchronous_mode1">Synchronous Mode</a></h2>
<div class="level2">
<p>
<a href="/_detail/synchronous.png?id=de%3Apnp-0.6%3Adoc_complete" class="media" title="synchronous.png"><img src="/_media/synchronous.png?w=150" class="mediaright" align="right" alt="" width="150" /></a>Der Synchronous-Mode ist die einfachste Art, den Datensammler <code>process_perfdata.pl</code> in Nagios zu integrieren. Hierbei wird bei jedem Ereignis ein gesondertes Command <code>process-service-perfdata</code> (bzw. <code>process-host-perfdata</code>) ausgef&uuml;hrt.
</p>
<p>
Grunds&auml;tzlich ist in der <code>nagios.cfg</code> die Verarbeitung der Performance-Daten zu aktivieren. Bitte beachten Sie, dass diese Direktive wahrscheinlich bereits in der Konfigurationsdatei enthalten ist (Default ist “0”).
</p>
<pre class="code"> process_performance_data=1</pre>
<p>
F&uuml;r jeden Host und jeden Service, f&uuml;r den KEINE Performance-Daten verarbeitet werden sollen, ist die Verarbeitung der Performance-Daten explizit auszuschalten.
</p>
<pre class="code">
define service {
...
process_perf_data 0
...
}
</pre>
<p>
Weiterhin ist es ab Nagios 3.x m&ouml;glich, in der <code>nagios.cfg</code> das Exportieren der Environment-Variablen zu deaktivieren. Diese sind jedoch f&uuml;r den Synchronous-Mode zwingend erforderlich. Daher muss
</p>
<pre class="code">enable_environment_macros=1</pre>
<p>
ebenfalls in der <code>nagios.cfg</code> gesetzt sein.
</p>
<p>
Zus&auml;tzlich wird das Kommando zum Verarbeiten der Performance-Daten in der <code>nagios.cfg</code> angegeben.
</p>
<pre class="code"> service_perfdata_command=process-service-perfdata</pre>
<p>
Ab Nagios 3.x ist es durchaus sinnvoll, auch die Verarbeitung der Performance-Daten f&uuml;r Hosts einzuschalten. Nagios 3 f&uuml;hrt durch die ge&auml;nderte Hostcheck-Logik nun auch die Pr&uuml;fung der Hosts regelm&auml;ßig aus.
</p>
<pre class="code"> host_perfdata_command=process-host-perfdata</pre>
<p>
Die referenzierten Commands m&uuml;ssen nat&uuml;rlich auch Nagios bekannt gegeben werden. Wie man sieht, sind f&uuml;r den Aufruf von process_perfdata.pl so gut wie keine Optionen n&ouml;tig. Einzig bei Performance-Daten der Host-Checks ist die Option -d ( DATATYPE ) n&ouml;tig. Wenn Sie die <a href="http://www.nagios-wiki.de/nagios/doku3/quickstart" class="urlextern" title="http://www.nagios-wiki.de/nagios/doku3/quickstart" rel="nofollow">Schnellstart-Installationsanleitungen</a> f&uuml;r Nagios benutzt haben, k&ouml;nnen Sie die Definitionen in der Datei commands.cfg anpassen.
</p>
<pre class="code">
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
}
</pre>
<p>
<strong>HINWEIS:</strong> <code>process_perfdata.pl</code> kann nicht unter Kontrolle des ePN ( embedded <acronym title="Practical Extraction and Report Language">Perl</acronym> Nagios ) gestartet werden. Daher wird das Script explizit mit <code>/usr/bin/perl</code> aufgerufen. Wird ePN nicht verwendet oder wird Nagios 3.x verwendet, kann auf die Angabe von <code>/usr/bin/perl</code> verzichtet werden.
</p>
<p>
<a href="/de/pnp-0.6/start" class="wikilink1" title="de:pnp-0.6:start">zur&uuml;ck zur &Uuml;bersicht</a> | <a href="/de/pnp-0.6/verify" class="wikilink1" title="de:pnp-0.6:verify">Funktion pr&uuml;fen</a>
</p>
</div>
<h2><a name="bulk_mode1" id="bulk_mode1">Bulk Mode</a></h2>
<div class="level2">
<p>
<a href="/_detail/bulk.png?id=de%3Apnp-0.6%3Adoc_complete" class="media" title="bulk.png"><img src="/_media/bulk.png?w=150" class="mediaright" align="right" alt="" width="150" /></a>Der Bulk-Mode ist etwas komplizierter als der Synchronous-Mode, reduziert die Last auf dem Nagios Server jedoch merklich, da nun nicht mehr f&uuml;r jeden Service bzw. Host zus&auml;tzlich der Datensammler <code>process_perfdata.pl</code> gestartet werden muss.
</p>
<p>
Im Bulk-Mode schreibt Nagios die Daten in einem definierten Format in eine tempor&auml;re Datei. Diese Datei wiederum wird periodisch von <code>process_perfdata.pl</code> verarbeitet. Um den Start und den Intervall k&uuml;mmert sich dabei Nagios selbst.
</p>
<p>
Auch hier muss die Verarbeitung der Performance-Daten in der <code>nagios.cfg</code> eingeschaltet werden.
</p>
<pre class="code"> process_performance_data=1</pre>
<p>
Zus&auml;tzlich werden einige neue Parameter ben&ouml;tigt.
</p>
<pre class="code">
#
# 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
</pre>
<p>
<strong>Achtung:</strong> Die Template-Definitionen weichen von denen in der Original-nagios.cfg ab!
</p>
<p>
Die Parameter und deren Bedeutung im Einzelnen:
</p>
<ul>
<li class="level1"><div class="li"> <code><strong>service_perfdata_file</strong></code> Der Pfad zur tempor&auml;ren Datei, in der die Daten gesammelt werden sollen.</div>
</li>
<li class="level1"><div class="li"> <code><strong>service_perfdata_file_template</strong></code> Das Format der tempor&auml;ren Datei. Hier werden die Daten &uuml;ber Nagios-Macros definiert.</div>
</li>
<li class="level1"><div class="li"> <code><strong>service_perfdata_file_mode</strong></code> Die Option “a” definiert, dass an die Datei angehangen werden soll.</div>
</li>
<li class="level1"><div class="li"> <code><strong>service_perfdata_file_processing_interval</strong></code> Das Intervall betr&auml;gt 15 Sekunden</div>
</li>
<li class="level1"><div class="li"> <code><strong>service_perfdata_file_processing_command</strong></code> das Command, das im definierten Intervall aufgerufen werden soll.</div>
</li>
</ul>
<p>
Die verwendeten Commands m&uuml;ssen Nagios wiederum bekannt gegeben werden. Wenn Sie die <a href="http://www.nagios-wiki.de/nagios/doku3/quickstart" class="urlextern" title="http://www.nagios-wiki.de/nagios/doku3/quickstart" rel="nofollow">Schnellstart-Installationsanleitungen</a> f&uuml;r Nagios benutzt haben, k&ouml;nnen Sie die Definitionen in der Datei commands.cfg anpassen.
</p>
<pre class="code">
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
}
</pre>
<div class="box" style="width: 90%; ">
<b class='xtop'><b class='xb1'></b><b class='xb2'></b><b class='xb3'></b><b class='xb4'></b></b>
<div class='xbox'>
<p class='box_title'><strong>HINWEIS:</strong></p>
<div class='box_content'> Da <code>process_perfdata.pl</code> nun mehr Daten zu verarbeiten hat als im Default Mode, kommt es nat&uuml;rlich auch zu l&auml;ngeren Laufzeiten. Daher ist der TIMEOUT Wert in der <code>etc/process_perfdata.cfg</code> zu &uuml;berpr&uuml;fen und ggf. anzupassen.</div>
</div>
<b class='xbottom'><b class='xb4'></b><b class='xb3'></b><b class='xb2'></b><b class='xb1'></b></b>
</div>
<p>
<a href="/de/pnp-0.6/start" class="wikilink1" title="de:pnp-0.6:start">zur&uuml;ck zur &Uuml;bersicht</a> | <a href="/de/pnp-0.6/verify" class="wikilink1" title="de:pnp-0.6:verify">Funktion pr&uuml;fen</a>
</p>
</div>
<h2><a name="bulk_mode_with_npcd" id="bulk_mode_with_npcd">Bulk Mode with NPCD</a></h2>
<div class="level2">
<p>
<a href="/_detail/bulk-npcd.png?id=de%3Apnp-0.6%3Adoc_complete" class="media" title="bulk-npcd.png"><img src="/_media/bulk-npcd.png?w=150" class="mediaright" align="right" alt="" width="150" /></a>Die Konfiguration ist identisch mit dem “Bulk Mode”, einzig das verwendete Command ist leicht abgewandelt.
</p>
<p>
Auch hier muss die Verarbeitung der Performance-Daten in der <code>nagios.cfg</code> eingeschaltet werden.
</p>
<pre class="code"> process_performance_data=1</pre>
<p>
Zus&auml;tzlich werden einige neue Parameter ben&ouml;tigt.
</p>
<pre class="code">
#
# 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
</pre>
<p>
<strong>Achtung:</strong> Die Template-Definitionen weichen von denen in der Original-nagios.cfg ab!
</p>
<p>
Die Parameter und deren Bedeutung im Einzelnen:
</p>
<ul>
<li class="level1"><div class="li"> <code><strong>service_perfdata_file</strong></code> Der Pfad zur tempor&auml;ren Datei, in der die Daten gesammelt werden sollen.</div>
</li>
<li class="level1"><div class="li"> <code><strong>service_perfdata_file_template</strong></code> Das Format der tempor&auml;ren Datei. Hier werden die Daten &uuml;ber Nagios-Macros definiert.</div>
</li>
<li class="level1"><div class="li"> <code><strong>service_perfdata_file_mode</strong></code> Die Option “a” definiert, dass an die Datei angehangen werden soll.</div>
</li>
<li class="level1"><div class="li"> <code><strong>service_perfdata_file_processing_interval</strong></code> Das Intervall betr&auml;gt 15 Sekunden</div>
</li>
<li class="level1"><div class="li"> <code><strong>service_perfdata_file_processing_command</strong></code> das Command, das im definierten Intervall aufgerufen werden soll.</div>
</li>
</ul>
<p>
Die verwendeten Commands m&uuml;ssen Nagios wiederum bekannt gegeben werden. Wenn Sie die <a href="http://www.nagios-wiki.de/nagios/doku3/quickstart" class="urlextern" title="http://www.nagios-wiki.de/nagios/doku3/quickstart" rel="nofollow">Schnellstart-Installationsanleitungen</a> f&uuml;r Nagios benutzt haben, k&ouml;nnen Sie die Definitionen in der Datei commands.cfg anpassen.
</p>
<pre class="code">
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$
}
</pre>
<p>
Durch die Kommandos wird immer nach Ablauf des &uuml;ber <code><strong>service_perfdata_file_processing_interval</strong></code> eingestellten Intervalls die Datei service-perfdata nach var/spool/ verschoben. Dabei wird das Nagios-Macro $TIMET$ verwendet, an den Dateinamen angeh&auml;ngt, um zu verhindern, dass alte Dateien ungewollt &uuml;berschrieben werden. Das Macro $TIMET$ enth&auml;lt den aktuellen Zeitstempel in Unix-Time-Format ( Sekunden seit 1.1.1970 ).
</p>
<p>
Somit sammeln sich Dateien im Verzeichnis /usr/local/pnp4nagios/var/spool/, die nun mit Hilfe des NPCD verarbeitet werden.
</p>
<p>
NPCD &uuml;berwacht das Spool-Verzeichnis und &uuml;bergibt wiederum alle gefundenen Dateien an <code>process_perfdata.pl</code>. Damit ist die Verarbeitung der Performancedaten komplett von Nagios entkoppelt. Wir m&uuml;ssen nur noch den NPCD starten.
</p>
<pre class="code"> /usr/local/pnp4nagios/bin/npcd -d -f /usr/local/pnp4nagios/etc/npcd.cfg</pre>
<p>
Die Option <code>-d</code> veranlasst NPCD im Hintergund als Daemon seinen Dienst zu verrichten.
</p>
<p>
Das Init Script f&uuml;r den NPCD wir w&auml;hrend der Installation &uuml;ber “make install-init” installiert und kann somit auch f&uuml;r den Start verwendet werden.
</p>
<pre class="code"> /etc/init.d/npcd start</pre>
<p>
In der Config-Datei des NPCD, der <code>npcd.cfg</code>, ist vor dem ersten Start zu pr&uuml;fen, ob die Pfade zum Spool-Verzeichnis und zu <code>process_perfdata.pl</code> richtig gesetzt sind.
</p>
<p>
Weitere Informationen zu NPCD findet ihr <a href="/de/pnp-0.6/npcd" class="wikilink1" title="de:pnp-0.6:npcd">hier</a>.
</p>
</div>
<h2><a name="bulk_mode_with_npcd_und_npcdmod" id="bulk_mode_with_npcd_und_npcdmod">Bulk Mode with NPCD und npcdmod</a></h2>
<div class="level2">
<p>
<strong>Achtung</strong>
<em>Beginnend mit Nagios 4 haben sich die internen Strukturen ge&auml;ndert, so dass der Start des Moduls fehlschl&auml;gt. Bisher gibt es keine Pl&auml;ne, Nagios 4 zu unterst&uuml;tzen. Bitte w&auml;hlen Sie einen der anderen Modi.</em>
</p>
<p>
<a href="/_detail/bulk-npcdmod.png?id=de%3Apnp-0.6%3Adoc_complete" class="media" title="bulk-npcdmod.png"><img src="/_media/bulk-npcdmod.png?w=150" class="mediaright" align="right" alt="" width="150" /></a> Bei diesem Modus kommt das Eventbroker-Modul npcdmod.o zu Einsatz. Der Datenfluss ist jedoch identisch zum “Bulk Mode mit NPCD”. Die internen Perfdata-Routinen von Nagios, die &uuml;ber die “*_perf_data_*” Optionen in der <code>nagios.cfg</code> konfiguriert werden, kommen <strong>NICHT</strong> mehr zu Einsatz. Das Modul npcdmod.o k&uuml;mmert sich um die f&uuml;r PNP n&ouml;tige Aufbereitung der Daten.
</p>
<p>
Vorteil:
</p>
<ul>
<li class="level1"><div class="li"> Die Perfdata-Routinen innerhalb von Nagios stehen wieder f&uuml;r andere Addons zur Verf&uuml;gung.</div>
</li>
<li class="level1"><div class="li"> Die Konfiguration reduziert sich.</div>
</li>
<li class="level1"><div class="li"> Die bevorzugte Methode der PNP-Entwickler.</div>
</li>
</ul>
<p>
Anpassung in der <code>nagios.cfg</code>:
</p>
<pre class="code">
process_performance_data=1
broker_module=/usr/local/pnp4nagios/lib/npcdmod.o config_file=/usr/local/pnp4nagios/etc/npcd.cfg
</pre>
<p>
Alle anderen auf dieser Seite gezeigten Optionen d&uuml;rfen f&uuml;r diesen Modus <strong>NICHT</strong> mehr verwendet werden.
</p>
<p>
<strong>Achtung:</strong> Wichtig sind in diesem Zusammenhang auch die <code>event_broker_options</code> bei einem von -1 abweichenden Wert. F&uuml;r PNP m&uuml;ssen die Bits 2 und 3 gesetzt sein (0b01100; siehe auch <a href="http://www.nagios-wiki.de/nagios/ndo/eventbroker_optionen" class="urlextern" title="http://www.nagios-wiki.de/nagios/ndo/eventbroker_optionen" rel="nofollow">http://www.nagios-wiki.de/nagios/ndo/eventbroker_optionen</a>).
</p>
<p>
Nach dem Neustart von Nagios werden Informationen zum Ladevorgang des Moduls protokolliert.
</p>
<p>
Auszug aus den nagios.log
</p>
<pre class="code">
[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 = &#039;/usr/local/pnp4nagios/var/spool/&#039;.
[1277545053] npcdmod: perfdata file &#039;/usr/local/pnp4nagios/var/perfdata.dump&#039;.
[1277545053] npcdmod: Ready to run to have some fun!
[1277545053] Event broker module &#039;/usr/local/pnp4nagios/lib/npcdmod.o&#039; initialized successfully.
</pre>
</div>
<h2><a name="gearman_mode1" id="gearman_mode1">Gearman Mode</a></h2>
<div class="level2">
<p>
<a href="/_detail/gearman.png?id=de%3Apnp-0.6%3Adoc_complete" class="media" title="gearman.png"><img src="/_media/gearman.png?w=150" class="mediaright" align="right" alt="" width="150" /></a>
</p>
<p>
PNP4Nagios 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.
</p>
<p>
Ben&ouml;tigt wird eine fertig eingerichtete mod_gearman Installation wie von Sven Nierlein unter <a href="http://labs.consol.de/lang/en/nagios/mod-gearman/" class="urlextern" title="http://labs.consol.de/lang/en/nagios/mod-gearman/" rel="nofollow">http://labs.consol.de/lang/en/nagios/mod-gearman/</a> beschrieben.
</p>
<p>
In <code>etc/process_perfdata.cfg</code> gibt es einen gearman-Abschnitt:
</p>
<pre class="code"> PREFORK = 1
GEARMAN_HOST = localhost:4730
REQUESTS_PER_CHILD = 10000
ENCRYPTION = 1
KEY = should_be_changed
#KEY_FILE = /usr/local/pnp4nagios/etc/secret.key
</pre>
<p>
Dort ist mit <code>PREFORK = &lt;n&gt;</code> die Anzahl der zu startenden Kindprozessen anzugeben.
</p>
<p>
<code>GEARMAN_HOST = &lt;host&gt;:&lt;port&gt;</code> definiert Rechner und Port, auf dem der gearman-Daemon die Daten bereitstellt.
&Uuml;ber <code>REQUESTS_PER_CHILD = &lt;n&gt;</code> kann die maximal zu verarbeitende Anzahl von Anforderungen pro Prozess eingestellt werden.
</p>
<p>
<code>ENCRYPTION = &lt;1|0&gt;</code> stellt ein, ob Verschl&uuml;sselung benutzt werden soll. Die Standardeinstellung ist eine aktivierte Verschl&uuml;sselung (“1”) und das sollte nur in Ausnahmef&auml;llen ver&auml;ndert werden.
Dabei kann entweder &uuml;ber <code>KEY = &lt;Schl&uuml;ssel&gt;</code> der zu benutzende Schl&uuml;ssel definiert oder per <code>KEY_FILE = &lt;Schl&uuml;sseldatei&gt;</code> der Standort einer Schl&uuml;sseldatei angegeben werden.
</p>
<p>
<code>/etc/init.d/pnp_gearman_worker</code> enth&auml;lt Verweise auf die <acronym title="Practical Extraction and Report Language">Perl</acronym>-Prozedur <code>process_perfdata.pl</code> sowie die Konfigurationsdatei <code>process_perfdata.cfg</code>.
</p>
<p>
Nach dem Start des PNP-Daemons per
</p>
<pre class="code"> /etc/init.d/pnp_gearman_worker start</pre>
<p>
werden die Performance-Daten verarbeitet, die &uuml;ber den gearmand-Daemon auf dem Nagios-Rechner zur Verf&uuml;gung gestellt werden.
</p>
<p>
<a href="/de/pnp-0.6/start" class="wikilink1" title="de:pnp-0.6:start">zur&uuml;ck zur &Uuml;bersicht</a> | <a href="/de/pnp-0.6/verify" class="wikilink1" title="de:pnp-0.6:verify">Funktion pr&uuml;fen</a>
</p>
</div>
<div class="inclmeta level1">
<a href="/de/pnp-0.6/config" class="wikilink1 permalink" title="de:pnp-0.6:config" rel="bookmark">de:pnp-0.6:config</a>
</div>
</div>
<div class="plugin_include_content" id="plugin_include__de:pnp-0.6:verify">
<h1><a name="pruefen_der_installation" id="pruefen_der_installation" href="/de/pnp-0.6/verify" title="Pr&uuml;fen der Installation">Pr&uuml;fen der Installation</a></h1>
<div class="level1">
<p>
Wenn bis jetzt alles sauber funktioniert hat, kann PNP zum ersten Mal im Browser aufgerufen werden.
Bei der Installation mit den Standardeinstellungen erfolgt der Aufruf &uuml;ber <a href="http://%3CServername%3E/pnp4nagios/" class="urlextern" title="http://&lt;Servername&gt;/pnp4nagios/" rel="nofollow">http://&lt;Servername&gt;/pnp4nagios/</a>.
</p>
<p>
Beim ersten Aufruf sieht man die Seite “PNP4Nagios Environment Tests”, die verschiedene Tests von notwendigen Komponenten enth&auml;lt. Offenkundig sollten alle Tests erfolgreich verlaufen, bevor es weitergehen kann. Bitte beachten Sie die Hinweise auf der Seite.<br/>
</p>
<p>
Sind alle Tests erfolgreich verlaufen, so kann die Datei <code>pnp4nagios/share/install.php</code> gel&ouml;scht oder umbenannt werden. Erst dann ist das Webinterface erreichbar.
</p>
<p>
Alternativ kann eine Datei <code>pnp4nagios/share/install.ignore</code> angelegt werden, um den Aufruf des Installers nach weiteren Updates zu ignorieren.
</p>
<p>
Ohne weitere Optionen sucht PNP nach RRD- und <acronym title="Extensible Markup Language">XML</acronym>-Dateien in <code>pnp4nagios/var/perfdata/</code> und zeigt alle Graphen des ersten Hosts in der &Uuml;bersicht an.
</p>
<p>
ACHTUNG: Direkt nach dem (Neu-)Start von Nagios nach dem Aktivieren der Verarbeitung von Performance-Daten wird der Aufruf im Browser zu Fehlermeldungen f&uuml;hren, weil zun&auml;chst Performance-Daten gesammelt und in den RRD-Dateien abgelegt werden m&uuml;ssen. Abh&auml;ngig vom Check-Intervall kann es einige Zeit dauern, bis die ersten Graphen angezeigt werden k&ouml;nnen.
</p>
</div>
<h2><a name="logfile" id="logfile">Logfile</a></h2>
<div class="level2">
<p>
W&auml;hrend der Installation wurde durch den Aufruf von <code>make install-config</code> ein Beispiel-Config-File <code>etc/process_perfdata.cfg-sample</code> erzeugt. Die Werte in der sample-Datei entsprechen den Default-Werten, die auch in <code>process_perfdata.pl</code> fest hinterlegt sind, daher ist die <code>process_perfdata.cfg</code> f&uuml;r den Betrieb nicht zwingend notwendig.
</p>
<p>
Die Datei <code>process_perfdata.cfg-sample</code> kann somit als Vorlage f&uuml;r die <code>process_perfdata.cfg</code> dienen, die immer dann notwendig ist, wenn vom Standard abweichende Werte eingestellt werden sollen.
</p>
<p>
In der <code>process_perfdata.<strong>cfg</strong></code> l&auml;sst sich das Verhalten von <code>process_perfdata.pl</code> vielfach beeinflussen.
</p>
<p>
Die wichtigsten Optionen f&uuml;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&ouml;tiges Schreiben von Logfiles zu beeintr&auml;chtigen.
</p>
<p>
W&auml;hrend der Inbetriebnahme sollte man jedoch den <code>LOG_LEVEL</code> auf “2” setzen, um zu sehen, was process_perfdata.pl bei der Verarbeitung der Performance-Daten so alles anstellt.
</p>
<p>
Sp&auml;testens bei <a href="/de/pnp-0.6/about#support" class="wikilink1" title="de:pnp-0.6:about">Support Anfragen</a> im Forum oder auf den Mailinglisten werden wir sowohl nach Ausz&uuml;gen aus dem perfdata.log als auch nach der Ausgabe des <a href="/de/pnp-0.6/verify_pnp_config" class="wikilink1" title="de:pnp-0.6:verify_pnp_config">verify_pnp_config-Scripts</a> fragen. Es empfiehlt sich also, diese Angaben gleich mitzuliefern <img src="/lib/images/smileys/icon_wink.gif" class="middle" alt=";-)" />.
</p>
</div>
<h2><a name="was_aber_wenn_nicht" id="was_aber_wenn_nicht">Was aber wenn nicht ?</a></h2>
<div class="level2">
<p>
Einige grundlegende Einstellungen sind zu pr&uuml;fen.
</p>
<p>
1. Sind RRD- und <acronym title="Extensible Markup Language">XML</acronym>-Files erzeugt worden ?
</p>
<p>
<code>process_perfdata.pl</code> legt f&uuml;r jeden Host unter var/perfdata ein neues Verzeichnis an. In diesem Verzeichnis wird wiederum f&uuml;r jeden Service eine RRD-Datenbank und ein <acronym title="Extensible Markup Language">XML</acronym>-File erstellt. F&uuml;r den Host-Check lautet der Dateinamen <code>_HOST_.xml</code> bzw. <code>_HOST_.rrd</code>.<br/>
Falls Graphen urpl&ouml;tzlich nicht mehr weitergef&uuml;hrt werden, dann hilft vielleicht ein Blick in die betroffene <acronym title="Extensible Markup Language">XML</acronym>-Datei. Dort gibt es u.a. die Tags &lt;RC&gt; und &lt;TXT&gt;. &lt;RC&gt; zeigt den Return-Code des RRDtool-Updates der RRD-Datei, &lt;TXT&gt; eine textuelle Beschreibung.<br/>
Allerdings liefern nicht alle Checks Performance-Daten, das gilt u.a. f&uuml;r “check_ping”, die Alternative “check_icmp” dagegen erzeugt Daten (ab Nagios-Plugin-Version 1.4.12 liefert auch check_ping Performance-Daten).<br/>
Teilweise muss man zus&auml;tzliche Optionen aktivieren, damit Performance-Daten ausgegeben werden. Evtl. kann das auch durch ein <a href="/de/pnp-0.6/wrapper" class="wikilink1" title="de:pnp-0.6:wrapper">Wrapper-Script</a> ge&auml;ndert werden.<br/>
In den Detailinformationen zu jedem Host/Service gibt es das Feld “Performance-Data”. Wenn dort keine Daten stehen, dann werden im jeweiligen Verzeichnis keine Dateien erzeugt und PNP kann deshalb auch keine grafischen Auswertungen liefern!<br/>
Das folgende Bild zeigt die Informationen zu einem “PING”-Service. Das blaue Feld enth&auml;lt den vom Plugin gelieferten Text, das rote die Performance-Daten, die Nagios erkannt hat.<br/>
<a href="/_detail/srv_info.png?id=de%3Apnp-0.6%3Adoc_complete" class="media" title="srv_info.png"><img src="/_media/srv_info.png?w=250" class="media" title="Informationen zu &quot;PING&quot;" alt="Informationen zu &quot;PING&quot;" width="250" /></a>
</p>
<p>
2. Hat Nagios <code>process_perfdata.pl</code> aufgerufen ?
</p>
<p>
In der Config-Datei f&uuml;r process_perfdata.pl, der <code>etc/process_perfdata.<strong>cfg</strong></code> l&auml;sst sich der Debug-Level erh&ouml;hen. Die Verarbeitung der Daten wird nun in <code>var/perfdata.log</code> bzw. im Syslog protokolliert.
</p>
<p>
3. Grafiken werden ohne Text angezeigt ?
</p>
<p>
siehe <a href="/de/pnp-0.6/about#anforderungen" class="wikilink1" title="de:pnp-0.6:about">Anforderungen</a>
</p>
<p>
4. Einige Graphen werden angezeigt, andere melden den Fehler <code>“parser error: Input is not proper UTF-8”</code> oder etwas &auml;hnliches. Bitte pr&uuml;fen Sie, ob die Daten “spezielle” Zeichen enthalten, die nicht im <acronym title="American Standard Code for Information Interchange">ASCII</acronym>-Zeichensatz vorhanden sind (Umlaute, etc). Versuchen Sie, in <code>process_perfdata.cfg</code> den Wert von <code><acronym title="Extensible Markup Language">XML</acronym>_ENC</code> auf <code><acronym title="International Organization for Standardization">ISO</acronym>-8859-1</code> oder einen anderen passenden Wert zu setzen. Warten Sie, bis die xml-Datei neu erzeugt wurde und probieren Sie es nochmal.
</p>
<p>
5. Bei aktiviertem npcdmod-Modul muss der Wert von <code>event_broker_options</code> in der nagios.cfg ggf. angepasst werden. Hinweise gibt es <a href="/de/pnp-0.6/config#bulk_mode_with_npcd_und_npcdmod" class="wikilink1" title="de:pnp-0.6:config">hier</a>.
</p>
<p>
6. verify_pnp_config
Das <acronym title="Practical Extraction and Report Language">Perl</acronym>-Script <a href="/de/pnp-0.6/verify_pnp_config" class="wikilink1" title="de:pnp-0.6:verify_pnp_config">verify_pnp_config.pl</a> erm&ouml;glicht die Pr&uuml;fung von Konfigurationseinstellungen und zeigt, ob Performance-Daten vorhanden sind.
</p>
<p>
7. Es scheint zu funktionieren, aber es bleiben einige Dateien Spool-Verzeichnis stehen (/usr/local/pnp4nagios/var/spool/&lt;perfdata_filename&gt;-PID-&lt;process_perfdata_pid&gt;). Wenn <code>process_perdata.pl</code> nicht in das Zielverzeichnis (/usr/local/pnp4nagios/share/perfdata/&lt;host&gt;) schreiben kann, wird es anhalten und die Quelldatei nicht l&ouml;schen. Das erh&ouml;ht die Gr&ouml;ße des Spool-Verzeichnisses und die Verarbeitung der Performance-Daten verlangsamen. Dieses Problem kann auftreten, wenn Sie Verzeichnisse aus einer vorherigen Installation kopiert und/oder manuell Verzeichnisse angelegt haben und dabei die falschen Benutzer/Berechtigungen verwendet haben.
</p>
<p>
<a href="/de/pnp-0.6/start" class="wikilink1" title="de:pnp-0.6:start">zur&uuml;ck zur &Uuml;bersicht</a> | <a href="/de/pnp-0.6/verify_pnp_config" class="wikilink1" title="de:pnp-0.6:verify_pnp_config">verify_pnp_config.pl</a>
</p>
</div>
<div class="inclmeta level1">
<a href="/de/pnp-0.6/verify" class="wikilink1 permalink" title="de:pnp-0.6:verify" rel="bookmark">de:pnp-0.6:verify</a>
</div>
</div>
<div class="plugin_include_content" id="plugin_include__de:pnp-0.6:verify_pnp_config">
<h1><a name="verify_pnp_config" id="verify_pnp_config" href="/de/pnp-0.6/verify_pnp_config" title="verify_pnp_config">verify_pnp_config</a></h1>
<div class="level1">
<p>
Bei Problemen kann das <acronym title="Practical Extraction and Report Language">Perl</acronym>-Script <code>verify_pnp_config</code> von <a href="http://verify.pnp4nagios.org" class="urlextern" title="http://verify.pnp4nagios.org" rel="nofollow">http://verify.pnp4nagios.org</a> helfen die aktuelle Nagios/Icinga Konfiguration zu pr&uuml;fen und entsprechend Hinweise zur L&ouml;sung liefern.
</p>
<p>
Bei <a href="/de/pnp-0.6/about#support" class="wikilink1" title="de:pnp-0.6:about">Support Anfragen</a> sollte immer die Ausgabe dieses Scripts mit angegeben werden, da die Entwickler sich so einen besseren &Uuml;berblick &uuml;ber das verwendete System machen k&ouml;nnen.
</p>
<p>
Feedback, Verbesserungsvorschl&auml;ge oder Patches bitte per Mail an support@pnp4nagios.org
</p>
</div>
<h2><a name="download1" id="download1">Download</a></h2>
<div class="level2">
<p>
Das Verify Script ist unter <a href="http://verify.pnp4nagios.org" class="urlextern" title="http://verify.pnp4nagios.org" rel="nofollow">http://verify.pnp4nagios.org</a> verf&uuml;gbar.
</p>
<pre class="code">
wget http://verify.pnp4nagios.org/verify_pnp_config
</pre>
</div>
<h2><a name="test" id="test">Test</a></h2>
<div class="level2">
<p>
Das Verify Script ben&ouml;tigt drei Optionen um die Funktion von PNP4Nagios zu pr&uuml;fen
</p>
<pre class="code">
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]
</pre>
<p>
Die wichtigste Infos ist der zu pr&uuml;fende Modus, welcher mit der Option <code>--mode</code> angegeben wird.<br/>
Weitere Infos &uuml;ber die einzelnen Modi und deren Konfiguration unter <a href="/de/pnp-0.6/modes" class="wikilink1" title="de:pnp-0.6:modes">&quot;Welcher Modus ist f&uuml;r mich richtig ?&quot;</a> und <a href="/de/pnp-0.6/config" class="wikilink1" title="de:pnp-0.6:config">&quot;Konfiguration&quot;</a>
</p>
<p>
Weiterhin ist der Pfad zur Nagios Config Datei (nagios.cfg) &uuml;ber die Option <code>--config</code> zu &uuml;bergeben. Auf einem Icinga System ist es entsprechend der Pfad zur icinga.cfg.
</p>
<p>
&Uuml;ber <code>--pnpcfg</code> wird der Pfad zum <code>etc</code> Verzeichnis der PNP4Nagios Installation &uuml;bergeben.<br/>
</p>
<p>
Beim Aufruf von <code>perl verify_pnp_config</code> werden die verf&uuml;gbaren Optionen ausgegeben.
</p>
<pre class="code">
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 &#039;nagios&#039;
[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 &quot;0.6.14&quot;
[OK  ]  Effective User is &#039;nagios&#039;
[OK  ]  User nagios exists with ID &#039;1000&#039;
[OK  ]  Effective group is &#039;nagios&#039;
[OK  ]  Group nagios exists with ID &#039;1000&#039;
[INFO]  ========== Checking npcdmod Mode Config  ============
[OK  ]  process_performance_data is 1 compared with &#039;/1/&#039;
[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 &lt;tobi@oetiker.ch&gt;
[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 &#039;/usr/local/pnp4nagios/var/perfdata&#039; exists
[WARN]  62 hosts/services are not providing performance data
[WARN]  &#039;process_perf_data 1&#039; is set for 43 hosts/services which are not providing performance data!
[WARN]  &#039;process_perf_data 0&#039; is set for 27 of your hosts/services
[OK  ]  &#039;process_perf_data 1&#039; 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...
</pre>
</div>
<h2><a name="performance_data" id="performance_data">Performance data</a></h2>
<div class="level2">
<p>
Beginnend mit <code>0.6.19-R.37</code> (2013-02-17) akzeptiert das Skript die Option<code>--object</code> (oder <code>-o</code>) gefolgt von einer Zeichenkette, die einen Host und/oder einen Service angibt. F&uuml;r diese/s Objekt(e) werden die Performance-Daten angegeben (falls vorhanden). Die Daten werden von eckigen Klammern begrenzt, gefolgt vom Wert der Direktive <code>process_performance_data</code> (<code>ppd</code>=n).
</p>
<p>
<code>host</code> = Performance-Informationen f&uuml;r den Host <code>host</code> zeigen<br/>
<code>;service</code> = Performance-Informationen f&uuml;r Service <code>service</code> zeigen<br/>
<code>host;service</code> = Performance-Informationen f&uuml;r Service <code>service</code> auf Host <code>host</code> zeigen
</p>
<p>
Die Zeichenketten werden als regul&auml;re Ausdr&uuml;cke angesehen (<acronym title="Practical Extraction and Report Language">Perl</acronym>-Syntax).
</p>
</div>
<div class="inclmeta level1">
<a href="/de/pnp-0.6/verify_pnp_config" class="wikilink1 permalink" title="de:pnp-0.6:verify_pnp_config" rel="bookmark">de:pnp-0.6:verify_pnp_config</a>
</div>
</div>
<div class="plugin_include_content" id="plugin_include__de:pnp-0.6:webfe">
<h1><a name="das_nagios_web_frontend" id="das_nagios_web_frontend" href="/de/pnp-0.6/webfe" title="Das Nagios Web Frontend">Das Nagios Web Frontend</a></h1>
<div class="level1">
<p>
PNP soll nat&uuml;rlich schnell erreichbar sein. Man m&ouml;chte nicht lange nach den richtigen Graphen suchen.
</p>
<p>
Nagios selbst bietet die M&ouml;glichkeit, externe URLs &uuml;ber die sogenannte Extended Info Config einzubinden.
Da es in diesem Bereich eine &Auml;nderung zwischen Nagios 2.x und der Version 3.0 gibt, wird anschließend auf beide Versionen getrennt eingegangen.
</p>
</div>
<h2><a name="nagios_2x" id="nagios_2x">Nagios 2.x</a></h2>
<div class="level2">
<p>
Bis Nagios 2.x erfolgt die Einbindung externer URLs in das Nagios-Web-Interface &uuml;ber die <a href="http://www.nagios-wiki.de/nagios/doku3/objectdefinitions#serviceextinfo" class="urlextern" title="http://www.nagios-wiki.de/nagios/doku3/objectdefinitions#serviceextinfo" rel="nofollow">Extended-Info-Objekte</a>. F&uuml;r PNP verwenden wir die Option action_url, um das PNP-Web-Frontend mit den passenden Optionen aufzurufen.
</p>
<pre class="code">
define serviceextinfo {
name srv-pnp
action_url /pnp4nagios/index.php/graph?host=$HOSTNAME$&amp;srv=$SERVICEDESC$
register 0
}
</pre>
<p>
Dieses Template kann nun &uuml;ber “use srv-pnp” in der serviceextinfo-Definition verwendet werden. Wenn Sie die Schnellstart-Installationsanleitungen benutzt haben, k&ouml;nnen Sie beispielsweise in der Datei localhost.cfg die Definitionen wie folgt erweitern:
</p>
<pre class="code">
define serviceextinfo {
use srv-pnp ; Name of service templates to use
host_name localhost
service_description load
}
</pre>
</div>
<h2><a name="nagios_3x" id="nagios_3x">Nagios 3.x</a></h2>
<div class="level2">
<p>
Seit Nagios 3.0 ist die Direktive action_url in die <a href="http://www.nagios-wiki.de/nagios/doku3/objectdefinitions#host" class="urlextern" title="http://www.nagios-wiki.de/nagios/doku3/objectdefinitions#host" rel="nofollow">Host</a>- bzw. <a href="http://www.nagios-wiki.de/nagios/doku3/objectdefinitions#service" class="urlextern" title="http://www.nagios-wiki.de/nagios/doku3/objectdefinitions#service" rel="nofollow">Service</a>-Definition verschoben worden. Die <a href="http://www.nagios-wiki.de/nagios/doku3/objectdefinitions#serviceextinfo" class="urlextern" title="http://www.nagios-wiki.de/nagios/doku3/objectdefinitions#serviceextinfo" rel="nofollow">serviceextinfo</a>- und <a href="http://www.nagios-wiki.de/nagios/doku3/objectdefinitions#hostextinfo" class="urlextern" title="http://www.nagios-wiki.de/nagios/doku3/objectdefinitions#hostextinfo" rel="nofollow">hostextinfo</a>-Definitionen sind entfallen. Damit wird die Definition der URLs zum PNP-Interface wesentlich vereinfacht.
</p>
<p>
Zuerst definieren wir zwei Nagios-Templates. Falls Sie die <a href="http://www.nagios-wiki.de/nagios/doku3/quickstart" class="urlextern" title="http://www.nagios-wiki.de/nagios/doku3/quickstart" rel="nofollow">Schnellstart-Installationsanleitungen</a> f&uuml;r Nagios benutzt haben, k&ouml;nnen Sie die folgenden Zeilen der Datei templates.cfg hinzuf&uuml;gen:
</p>
<pre class="code">
define host {
name host-pnp
action_url /pnp4nagios/index.php/graph?host=$HOSTNAME$&amp;srv=_HOST_
register 0
}
define service {
name srv-pnp
action_url /pnp4nagios/index.php/graph?host=$HOSTNAME$&amp;srv=$SERVICEDESC$
register 0
}
</pre>
<p>
Diese beiden Templates k&ouml;nnen nun &uuml;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&ouml;nnen Sie beispielsweise in der Datei localhost.cfg die Definitionen wie folgt erweitern:
</p>
<pre class="code">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
}
</pre>
<pre class="code">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%
}
</pre>
<p>
Die Links auf die richtigen URLs werden automagisch erstellt.
</p>
</div>
<h2><a name="preview_popup" id="preview_popup">Preview Popup</a></h2>
<div class="level2">
<p>
Außerdem gibt es die M&ouml;glichkeit, die Graphen bereits in der Status&uuml;bersicht beim &Uuml;berfahren des “Action Url Icons” mit der Maus einzublenden.
</p>
<p>
Erm&ouml;glicht wird dies durch die <a href="http://nagios.sourceforge.net/docs/3_0/cgiincludes.html" class="urlextern" title="http://nagios.sourceforge.net/docs/3_0/cgiincludes.html" rel="nofollow">CGI Includes</a>, die es uns erlauben, Javascript-Code an geeigneter Stelle im Seitenkopf der Status&uuml;bersicht einzubinden ( status.cgi ).
</p>
<p>
In den PNP-Quellen ist die Datei <code>contrib/ssi/status-header.ssi</code> bereits enthalten, die verwendeten URLs m&uuml;ssen aber unter Umst&auml;nden angepasst werden. Wir gehen hier davon aus, dass PNP &uuml;ber <code>/pnpnagios/index.php</code> erreichbar ist.
</p>
<p>
Die besagte Datei muss in das Verzeichnis <code>/usr/local/nagios/share/ssi/</code> kopiert werden und darf <strong>NICHT</strong> ausf&uuml;hrbar sein. Nagios w&uuml;rde die Datei sonst wirklich wie ein <acronym title="Common Gateway Interface">CGI</acronym> behandeln und ausf&uuml;hren, was aber in diesem Fall zu Fehlern f&uuml;hren w&uuml;rde. Die Apache-Admins m&ouml;gen bitte “Nagios <acronym title="Server Side Includes">SSI</acronym>” nicht mit “Apache <acronym title="Server Side Includes">SSI</acronym>” in Verbindung bringen. Beides hat nichts miteinander zu tun.
</p>
<p>
Die action_url ist entsprechend anzupassen:
</p>
<pre class="code">
define host {
name host-pnp
register 0
action_url /pnp4nagios/index.php/graph?host=$HOSTNAME$&amp;srv=_HOST_&#039; class=&#039;tips&#039; rel=&#039;/pnp4nagios/index.php/popup?host=$HOSTNAME$&amp;srv=_HOST_
}
define service {
name srv-pnp
register 0
action_url /pnp4nagios/index.php/graph?host=$HOSTNAME$&amp;srv=$SERVICEDESC$&#039; class=&#039;tips&#039; rel=&#039;/pnp4nagios/index.php/popup?host=$HOSTNAME$&amp;srv=$SERVICEDESC$
}
</pre>
<p>
Nach einem Restart von Nagios (nach Anpassung der Definitionen) sieht das Ergebnis ungef&auml;hr so aus:<br/>
<a href="/_detail/popup.png?id=de%3Apnp-0.6%3Adoc_complete" class="media" title="popup.png"><img src="/_media/popup.png?w=200" class="media" alt="" width="200" /></a>
</p>
<p>
<a href="/de/pnp-0.6/start" class="wikilink1" title="de:pnp-0.6:start">Zur&uuml;ck zur &Uuml;bersicht</a> | <a href="/de/pnp-0.6/webfe_cfg" class="wikilink1" title="de:pnp-0.6:webfe_cfg">Konfiguration Web-Frontend</a>
</p>
</div>
<div class="inclmeta level1">
<a href="/de/pnp-0.6/webfe" class="wikilink1 permalink" title="de:pnp-0.6:webfe" rel="bookmark">de:pnp-0.6:webfe</a>
</div>
</div>
<div class="plugin_include_content" id="plugin_include__de:pnp-0.6:webfe_cfg">
<h1><a name="pnp_web_frontend" id="pnp_web_frontend" href="/de/pnp-0.6/webfe_cfg" title="PNP Web Frontend">PNP Web Frontend</a></h1>
<div class="level1">
<p>
Das Verhalten des PNP-Web-Frontend l&auml;sst sich &uuml;ber die Config-Datei <code>etc/config.php</code> beeinflussen.
Diese Datei wird bei Updates von PNP immer wieder &uuml;berschrieben, da die meisten Pfade und Optionen bereits durch <code>./configure</code> ermittelt werden.
</p>
<p>
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.
</p>
</div>
<h2><a name="etcpnpconfigphp" id="etcpnpconfigphp">etc/pnp/config.php</a></h2>
<div class="level2">
<p>
Im folgenden die wichtigsten Parameter:
</p>
<p>
Der Pfad zum RRDtool-Binary. Wird von <code>./configure</code> ermittelt.
</p>
<pre class="code"> $conf[&#039;rrdtool&#039;] = &quot;/usr/bin/rrdtool&quot;;</pre>
<hr />
<p>
H&ouml;he und Breite der RRD-Graphen
</p>
<pre class="code"> $conf[&#039;graph_width&#039;] = &quot;500&quot;;
$conf[&#039;graph_height&#039;] = &quot;100&quot;;</pre>
<hr />
<p>
Bildschirmdimensionen &auml;ndern sich, Blattgr&ouml;ßen nicht. Um unterschiedliche Einstellungen zu erm&ouml;glichen, k&ouml;nnen f&uuml;r die Generierung von <acronym title="Portable Document Format">PDF</acronym>-Dateien eigene Werte definiert werden. Wenn diese Variablen nicht definiert sind, werden die Werte der Graphen benutzt.
H&ouml;he und Breite der RRD-Graphen bei PDFs
</p>
<pre class="code"> $conf[&#039;pdf_width&#039;] = &quot;675&quot;;
$conf[&#039;pdf_height&#039;] = &quot;100&quot;;</pre>
<hr />
<p>
Zus&auml;tzliche Optionen, die bei jedem Aufruf von RRDTool mit &uuml;bergeben werden. Beispielsweise <code>--slope-mode</code>, um die Graphen etwas zu gl&auml;tten.
</p>
<pre class="code"> $conf[&#039;graph_opt&#039;] = &quot;&quot;;</pre>
<hr />
<p>
Der Pfad zu den von <code>process_perfdata.pl</code> erstellten RRD- und <acronym title="Extensible Markup Language">XML</acronym>-Dateien
</p>
<pre class="code"> $conf[&#039;rrdbase&#039;] = &quot;/usr/local/pnp4nagios/var/perfdata/&quot;;</pre>
<hr />
<p>
Pfad zu den Config-Files f&uuml;r die <a href="/de/pnp-0.6/pages" class="wikilink1" title="de:pnp-0.6:pages">Pages</a>.
</p>
<pre class="code"> $conf[&#039;page_dir&#039;] = &quot;/usr/local/pnp4nagios/etc/pages/&quot;;</pre>
<hr />
<p>
Wert in Sekunden, nachdem die PNP-Seiten neu geladen werden sollen.
</p>
<pre class="code"> $conf[&#039;refresh&#039;] = &quot;90&quot;;</pre>
<hr />
<p>
Maximales Alter der RRD-Files in Sekunden. Nach Erreichen dieses Wertes werden Links zu den Graphen als “inactive” gekennzeichnet.
</p>
<pre class="code"> $conf[&#039;max_age&#039;] = 60*60*6;</pre>
<hr />
<p>
Basis-<acronym title="Uniform Resource Locator">URL</acronym> zu den Nagios CGIs.
</p>
<pre class="code"> $conf[&#039;nagios_base&#039;] = &quot;/nagios/cgi-bin&quot;;</pre>
<hr />
<p>
Liste von Usern, f&uuml;r die Links zu den Services des aktuellen Hosts angezeigt werden sollen.
</p>
<pre class="code"> $conf[&#039;allowed_for_service_links&#039;] = &quot;EVERYONE&quot;;</pre>
<hr />
<p>
Liste von Usern, f&uuml;r die das Host-Suchfeld angezeigt werden soll.
</p>
<pre class="code"> $conf[&#039;allowed_for_host_search&#039;] = &quot;EVERYONE&quot;;</pre>
<hr />
<p>
Wird PNP nur mit der Angabe eines Hosts ( index.php?host=&lt;myserver&gt; ) aufgerufen, so wird eine &Uuml;bersicht aller Services angezeigt, wenn der User in dieser Liste enthalten ist.
</p>
<pre class="code"> $conf[&#039;allowed_for_host_overview&#039;] = &quot;EVERYONE&quot;;</pre>
<hr />
<p>
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.
</p>
<pre class="code">
$views[] = array(&#039;title&#039; =&gt; &#039;One Hour&#039;, &#039;start&#039; =&gt; (60*60) );
$views[] = array(&#039;title&#039; =&gt; &#039;4 Hours&#039;, &#039;start&#039; =&gt; (60*60*4) );
$views[] = array(&#039;title&#039; =&gt; &#039;25 Hours&#039;, &#039;start&#039; =&gt; (60*60*25) );
$views[] = array(&#039;title&#039; =&gt; &#039;One Week&#039;, &#039;start&#039; =&gt; (60*60*25*7) );
$views[] = array(&#039;title&#039; =&gt; &#039;One Month&#039;, &#039;start&#039; =&gt; (60*60*24*32) );
$views[] = array(&#039;title&#039; =&gt; &#039;One Year&#039;, &#039;start&#039; =&gt; (60*60*24*380) );
</pre>
<p>
Sie k&ouml;nnen hier auch weitere Views definieren, sollten aber dabei ber&uuml;cksichtigen, dass im Normalfall ALLE definierten Views angezeigt werden.
</p>
<p>
<a href="/de/pnp-0.6/start" class="wikilink1" title="de:pnp-0.6:start">zur&uuml;ck zur &Uuml;bersicht</a> | <a href="/de/pnp-0.6/timeranges" class="wikilink1" title="de:pnp-0.6:timeranges">Timeranges</a>
</p>
</div>
<div class="inclmeta level1">
<a href="/de/pnp-0.6/webfe_cfg" class="wikilink1 permalink" title="de:pnp-0.6:webfe_cfg" rel="bookmark">de:pnp-0.6:webfe_cfg</a>
</div>
</div>
<div class="plugin_include_content" id="plugin_include__de:pnp-0.6:timeranges">
<h1><a name="timeranges" id="timeranges" href="/de/pnp-0.6/timeranges" title="Timeranges">Timeranges</a></h1>
<div class="level1">
<p>
In der &Uuml;bersicht zeigt PNP f&uuml;nf Zeitbereiche, die frei in der config.php definiert werden k&ouml;nnen.
</p>
<p>
Es gibt aber auch die M&ouml;glichkeit, die Zeitbereiche &uuml;ber die <acronym title="Uniform Resource Locator">URL</acronym> zu beeinflussen. Dies ist hilfreich, wenn z.B. automatisch <acronym title="Portable Document Format">PDF</acronym>-Dokumente erstellt werden sollen
</p>
<p>
Die Zeitbereiche werden &uuml;ber die Optionen <code>start</code> und <code>end</code> definiert.
</p>
<p>
Beispiel:
</p>
<pre class="code"> pnp4nagios/graph?host=&lt;hostname&gt;&amp;srv=&lt;servicedesc&gt;&amp;start=-1week</pre>
<pre class="code"> pnp4nagios/graph?host=&lt;hostname&gt;&amp;srv=&lt;servicedesc&gt;&amp;start=2011102322:50:00&amp;end=2011102409:50:00</pre>
<p>
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 <code>end</code> l&auml;sst sich &uuml;ber diesen Weg beeinflussen, wobei beide Optionen auch einzeln manipuliert werden d&uuml;rfen.
</p>
<table class="inline">
<tr class="row0">
<th class="col0"> start </th><th class="col1"> end </th><th class="col2"> view </th><th class="col3"> Ergebnis </th>
</tr>
<tr class="row1">
<td class="col0 leftalign"> </td><td class="col1 leftalign"> </td><td class="col2 leftalign"> </td><td class="col3">Alle Ansichten enden mit der aktuellen Zeit </td>
</tr>
<tr class="row2">
<td class="col0 centeralign"> x </td><td class="col1 leftalign"> </td><td class="col2 leftalign"> </td><td class="col3">Alle Ansichten beginnen mit dem angegebenen Datum </td>
</tr>
<tr class="row3">
<td class="col0 leftalign"> </td><td class="col1 centeralign"> x </td><td class="col2 leftalign"> </td><td class="col3">Alle Ansichten enden mit dem angegebenen Datum </td>
</tr>
<tr class="row4">
<td class="col0 centeralign"> x </td><td class="col1 centeralign"> x </td><td class="col2 leftalign"> </td><td class="col3">Eine Ansicht zwischen den beiden Zeitangaben </td>
</tr>
<tr class="row5">
<td class="col0 leftalign"> </td><td class="col1 leftalign"> </td><td class="col2 centeralign"> x </td><td class="col3">Eine Ansicht endet mit der aktuellen Zeit </td>
</tr>
<tr class="row6">
<td class="col0 centeralign"> x </td><td class="col1 leftalign"> </td><td class="col2 centeralign"> x </td><td class="col3">Eine Ansicht beginnt mit dem angegebenen Datum </td>
</tr>
<tr class="row7">
<td class="col0 leftalign"> </td><td class="col1 centeralign"> x </td><td class="col2 centeralign"> x </td><td class="col3">Eine Ansicht endet mit dem angegebenen Datum </td>
</tr>
</table>
<p>
Beispiele zur Datumsangabe:
</p>
<table class="inline">
<tr class="row0">
<th class="col0 centeralign"> Format </th><th class="col1 leftalign"> Beschreibung </th>
</tr>
<tr class="row1">
<td class="col0 leftalign"> 2009W04 </td><td class="col1"> 4. KW 2009 </td>
</tr>
<tr class="row2">
<td class="col0 leftalign"> 1.5.2009 </td><td class="col1"> 1. Mai 2009 </td>
</tr>
<tr class="row3">
<td class="col0 leftalign"> -1 day </td><td class="col1"> Einen Tag zur&uuml;ck </td>
</tr>
<tr class="row4">
<td class="col0 leftalign"> -3 weeks </td><td class="col1 leftalign"> 3 Wochen zur&uuml;ck </td>
</tr>
<tr class="row5">
<td class="col0 leftalign"> -1 year </td><td class="col1 leftalign"> Ein Jahr zur&uuml;ck </td>
</tr>
<tr class="row6">
<td class="col0"> yesterday </td><td class="col1"> Gestern </td>
</tr>
<tr class="row7">
<td class="col0"> 2011102322:50:00 </td><td class="col1"> 23.10.2011 ab 22:50:00 Uhr</td>
</tr>
</table>
<p>
<a href="/de/pnp-0.6/start" class="wikilink1" title="de:pnp-0.6:start">zur&uuml;ck zur &Uuml;bersicht</a> | <a href="/de/pnp-0.6/pages" class="wikilink1" title="de:pnp-0.6:pages">Pages</a>
</p>
</div>
<div class="inclmeta level1">
<a href="/de/pnp-0.6/timeranges" class="wikilink1 permalink" title="de:pnp-0.6:timeranges" rel="bookmark">de:pnp-0.6:timeranges</a>
</div>
</div>
<div class="plugin_include_content" id="plugin_include__de:pnp-0.6:pages">
<h1><a name="pages" id="pages" href="/de/pnp-0.6/pages" title="Pages">Pages</a></h1>
<div class="level1">
<p>
„pages“ bieten die M&ouml;glichkeit, Grafiken von verschiedenen Hosts/Services auf einer Seite zusammenzufassen. Auf diese Weise k&ouml;nnen z.B. die &Uuml;bertragungsraten der Netzwerk-Interfaces aller Tape-Libraries dargestellt werden. Innerhalb der Definitionen sind regul&auml;re Ausdr&uuml;cke m&ouml;glich, so dass entsprechende Namen vorausgesetzt - mit wenig Aufwand viel erreicht werden kann.
Das Verzeichnis, das in <code>config.php</code> durch den Konfigurationseintrag „$conf[&#039;page_dir&#039;]“ angegeben wurde, enth&auml;lt ein oder mehrere Dateien mit der Endung „.cfg“.
</p>
<p>
Kommentare beginnen mit einem &#039;#&#039; und sind auch innerhalb einer Zeile m&ouml;glich.
Jede Datei enth&auml;lt eine „page“-Definition, die neben dem Namen der Seite festlegt, ob die nachfolgenden Grafikdefinitionen regul&auml;re Ausdr&uuml;cke enthalten.<br/>
Die Bezeichnung hinter <code>page_name</code> erscheint in der Liste der verf&uuml;gbaren Seiten und wird als Titel im Browser angezeigt.
<strong>Achtung:</strong> “host_name” und “service_desc” beziehen sich auf die Namen der Dateien im perfdata-Ordner, nicht auf die Nagios-Bezeichnungen. Leerzeichen werden durch Unterstriche (“_”) ersetzt.
</p>
<pre class="code">define page {
use_regex 1 # 0 = keine regul&auml;ren Ausdr&uuml;cke, 1 = regul&auml;re Ausdr&uuml;cke
page_name Test-Seite # Beschreibung der Seite
}</pre>
<p>
Danach folgen ein oder mehrere „graph“-Definitionen:
</p>
<pre class="code">define graph {
host_name host1,host2,host3
service_desc Current_Load
}</pre>
<p>
<strong>Achtung:</strong> Damit die oben gezeigte Liste von Host-Namen funktioniert, muss <code>use_regex 0</code> gesetzt sein!
</p>
<pre class="code">define graph {
host_name host4
service_desc Current_Users
}</pre>
<p>
Und jetzt mit regul&auml;ren Ausdr&uuml;cken. Zuerst alle Hosts, deren Name mit „Tape“ beginnen:
</p>
<pre class="code">define graph {
host_name ^Tape
service_desc Traffic
}</pre>
<p>
alle Hosts, deren Namen mit “00” enden
</p>
<pre class="code">define graph {
host_name 00$
service_desc Load
}</pre>
<p>
alle Services des localhost, deren Namen ein „a“ oder „o“ enthalten:
</p>
<pre class="code">define graph {
host_name localhost
service_desc a|o
}</pre>
<p>
alle Services, die im Namen nach einem „_“ (mindestens) drei Ziffern haben auf allen Hosts, deren Namen mit „UX“ beginnen:
</p>
<pre class="code">define graph {
host_name ^UX
service_desc _\d{3}
}</pre>
<p>
In einigen F&auml;llen m&ouml;chten Sie vielleicht die Anzeige auf einen Graphen beschr&auml;nken. Um dies zu erreichen, k&ouml;nnen Sie die optionale Direktive “source” benutzen, gefolgt von einer Zahl, die die Position in der RRD-Datei angibt. Die Z&auml;hlung beginnt ab 0
</p>
<pre class="code">define graph {
host_name host1,host2,host3
service_desc PING
source 1
}</pre>
<p>
<a href="/de/pnp-0.6/start" class="wikilink1" title="de:pnp-0.6:start">zur&uuml;ck zur &Uuml;bersicht</a> | <a href="/de/pnp-0.6/xport" class="wikilink1" title="de:pnp-0.6:xport">Datenexport</a>
</p>
</div>
<div class="inclmeta level1">
<a href="/de/pnp-0.6/pages" class="wikilink1 permalink" title="de:pnp-0.6:pages" rel="bookmark">de:pnp-0.6:pages</a>
</div>
</div>
<div class="plugin_include_content" id="plugin_include__de:pnp-0.6:xport">
<h1><a name="datenexport" id="datenexport" href="/de/pnp-0.6/xport" title="Datenexport">Datenexport</a></h1>
<div class="level1">
<p>
PNP bietet &uuml;ber den <code>xport</code> Controller Zugriff auf die RRD-Daten. Dabei kann das Ausgabeformat gew&auml;hlt werden. Zur Zeit sind die Formate <code>xml</code>, <code>json</code> und <code>csv</code> realisiert.
</p>
<p>
Aufgerufen wird der Controller &uuml;ber die <acronym title="Uniform Resource Locator">URL</acronym>
</p>
<pre class="code">/pnp4nagios/xport/&lt;format&gt;?host=&lt;hostname&gt;&amp;srv=&lt;servicedesc&gt;</pre>
<p>
wobei &lt;format&gt; durch das jeweils gew&uuml;nschte Format zu ersetzen ist.
</p>
<p>
Sie k&ouml;nnen außerdem <code>wget</code> benutzen, um Bilder zu erzeugen und diese in regelm&auml;ßigen Reports einzuf&uuml;gen. Ein Beispiel:
</p>
<pre class="code">wget -O image.png &#039;http://&lt;user&gt;:&lt;pass&gt;@&lt;nagios-server&gt;/pnp4nagios/image?host=&lt;hostname&gt;&amp;srv=&lt;service&gt;&amp;view=2&amp;source=0&#039;</pre>
<p>
<code>view=&lt;n&gt;</code> begrenzt den Graphen auf die Zeitperiode, die in <code>config.php</code> definiert ist<br/>
<code>source=&lt;n&gt;</code> zeigt nur eine Data-Source, wenn mehrere in der RRD-Datei vorhanden sind
</p>
<p>
Anstatt <code>view</code> k&ouml;nnen Sie auch <code>start</code> und/oder <code>end</code> benutzen, um die Zeitspanne anzugeben. Details finden Sie in den <a href="/de/pnp-0.6/timeranges" class="wikilink1" title="de:pnp-0.6:timeranges">&quot;time ranges&quot;</a>.
</p>
<p>
<a href="/de/pnp-0.6/start" class="wikilink1" title="de:pnp-0.6:start">zur&uuml;ck zur &Uuml;bersicht</a> | <a href="/de/pnp-0.6/tpl" class="wikilink1" title="de:pnp-0.6:tpl">Templates</a>
</p>
</div>
<div class="inclmeta level1">
<a href="/de/pnp-0.6/xport" class="wikilink1 permalink" title="de:pnp-0.6:xport" rel="bookmark">de:pnp-0.6:xport</a>
</div>
</div>
<div class="plugin_include_content" id="plugin_include__de:pnp-0.6:tpl">
<h1><a name="was_sind_templates" id="was_sind_templates" href="/de/pnp-0.6/tpl" title="Was sind Templates ?">Was sind Templates ?</a></h1>
<div class="level1">
<p>
PNP benutzt Templates, um das Aussehen der RRD-Graphen zu beeinflussen.
</p>
<p>
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&uuml;r das “richtige” Template getroffen wird.
</p>
</div>
<h2><a name="wann_wird_welches_template_verwendet" id="wann_wird_welches_template_verwendet">Wann wird welches Template verwendet ?</a></h2>
<div class="level2">
<p>
Templates werden an zwei Stellen im Dateisystem gespeichert.
</p>
<ul>
<li class="level1"><div class="li"> share/templates.dist - f&uuml;r Templates, die im PNP-Paket bereits enthalten sind.</div>
</li>
<li class="level1"><div class="li"> share/templates - f&uuml;r selbst erstellte Templates. Diese werden bei Updates nicht ver&auml;ndert.</div>
</li>
</ul>
<p>
Weiterhin k&ouml;nnen seit Version 0.6.5 weitere Template Verzeichnisse in der Config Datei <code>pnp4nagios/etc/config.php</code> hinzugef&uuml;gt werden.
</p>
<p>
Soll der Graph f&uuml;r den Service “http” auf Host “localhost” angezeigt werden, so sucht PNP zuerst nach der <acronym title="Extensible Markup Language">XML</acronym>-Datei <code>perfdata/localhost/http.xml</code> und liest diese ein. Diese <acronym title="Extensible Markup Language">XML</acronym>-Dateien werden automatisch erstellt und enthalten Informationen zum jeweiligen Host und Service. Weiterhin enth&auml;lt der Kopf Informationen &uuml;ber das Plugin und die Performance-Daten. Im folgenden Beispiel erkennt man anhand des <acronym title="Extensible Markup Language">XML</acronym>-Tags <code>&lt;TEMPLATE&gt;</code>, welches PNP-Template f&uuml;r diesen Graphen verwendet werden soll.
</p>
<p>
<code><strong>/localhost/http.xml</strong></code>
</p>
<pre class="code xml"><span class="sc3"><span class="re1">&lt;NAGIOS<span class="re2">&gt;</span></span></span>
<span class="sc3"><span class="re1">&lt;DATASOURCE<span class="re2">&gt;</span></span></span>
<span class="sc3"><span class="re1">&lt;TEMPLATE<span class="re2">&gt;</span></span></span>check_http<span class="sc3"><span class="re1">&lt;/TEMPLATE<span class="re2">&gt;</span></span></span>
<span class="sc3"><span class="re1">&lt;DS<span class="re2">&gt;</span></span></span>1<span class="sc3"><span class="re1">&lt;/DS<span class="re2">&gt;</span></span></span>
<span class="sc3"><span class="re1">&lt;NAME<span class="re2">&gt;</span></span></span>time<span class="sc3"><span class="re1">&lt;/NAME<span class="re2">&gt;</span></span></span>
<span class="sc3"><span class="re1">&lt;UNIT<span class="re2">&gt;</span></span></span>s<span class="sc3"><span class="re1">&lt;/UNIT<span class="re2">&gt;</span></span></span>
<span class="sc3"><span class="re1">&lt;ACT<span class="re2">&gt;</span></span></span>0.006721<span class="sc3"><span class="re1">&lt;/ACT<span class="re2">&gt;</span></span></span>
<span class="sc3"><span class="re1">&lt;WARN<span class="re2">&gt;</span></span></span>1.000000<span class="sc3"><span class="re1">&lt;/WARN<span class="re2">&gt;</span></span></span>
<span class="sc3"><span class="re1">&lt;CRIT<span class="re2">&gt;</span></span></span>2.000000<span class="sc3"><span class="re1">&lt;/CRIT<span class="re2">&gt;</span></span></span>
<span class="sc3"><span class="re1">&lt;MIN<span class="re2">&gt;</span></span></span>0.000000<span class="sc3"><span class="re1">&lt;/MIN<span class="re2">&gt;</span></span></span>
<span class="sc3"><span class="re1">&lt;MAX<span class="re2">&gt;</span></span><span class="re1">&lt;/MAX<span class="re2">&gt;</span></span></span>
<span class="sc3"><span class="re1">&lt;/DATASOURCE<span class="re2">&gt;</span></span></span>
<span class="sc3"><span class="re1">&lt;DATASOURCE<span class="re2">&gt;</span></span></span>
<span class="sc3"><span class="re1">&lt;TEMPLATE<span class="re2">&gt;</span></span></span>check_http<span class="sc3"><span class="re1">&lt;/TEMPLATE<span class="re2">&gt;</span></span></span>
<span class="sc3"><span class="re1">&lt;DS<span class="re2">&gt;</span></span></span>2<span class="sc3"><span class="re1">&lt;/DS<span class="re2">&gt;</span></span></span>
<span class="sc3"><span class="re1">&lt;NAME<span class="re2">&gt;</span></span></span>size<span class="sc3"><span class="re1">&lt;/NAME<span class="re2">&gt;</span></span></span>
<span class="sc3"><span class="re1">&lt;UNIT<span class="re2">&gt;</span></span></span>B<span class="sc3"><span class="re1">&lt;/UNIT<span class="re2">&gt;</span></span></span>
<span class="sc3"><span class="re1">&lt;ACT<span class="re2">&gt;</span></span></span>263<span class="sc3"><span class="re1">&lt;/ACT<span class="re2">&gt;</span></span></span>
<span class="sc3"><span class="re1">&lt;WARN<span class="re2">&gt;</span></span><span class="re1">&lt;/WARN<span class="re2">&gt;</span></span></span>
<span class="sc3"><span class="re1">&lt;CRIT<span class="re2">&gt;</span></span><span class="re1">&lt;/CRIT<span class="re2">&gt;</span></span></span>
<span class="sc3"><span class="re1">&lt;MIN<span class="re2">&gt;</span></span></span>0<span class="sc3"><span class="re1">&lt;/MIN<span class="re2">&gt;</span></span></span>
<span class="sc3"><span class="re1">&lt;MAX<span class="re2">&gt;</span></span><span class="re1">&lt;/MAX<span class="re2">&gt;</span></span></span>
<span class="sc3"><span class="re1">&lt;/DATASOURCE<span class="re2">&gt;</span></span></span>
...
<span class="sc3"><span class="re1">&lt;/NAGIOS<span class="re2">&gt;</span></span></span></pre>
<p>
PNP h&auml;ngt <code>.php</code> an und sucht nun nach einem Template mit dem Namen <code>check_http.php</code> in folgender Reihenfolge:
</p>
<ol>
<li class="level1"><div class="li"> templates/check_http.php</div>
</li>
<li class="level1"><div class="li"> templates.dist/check_http.php</div>
</li>
<li class="level1"><div class="li"> templates/default.php</div>
</li>
<li class="level1"><div class="li"> templates.dist/default.php</div>
</li>
</ol>
<p>
Das Template default.php nimmt somit eine Sonderstellung ein und wird immer verwendet, wenn vorher kein anderes Template gefunden wird.
</p>
</div>
<h2><a name="eigene_templates_erstellen" id="eigene_templates_erstellen">Eigene Templates erstellen</a></h2>
<div class="level2">
<p>
PNP-Templates sind <acronym title="Hypertext Preprocessor">PHP</acronym>-Dateien, die zur Laufzeit von PNP &uuml;ber die <acronym title="Hypertext Preprocessor">PHP</acronym>-Funktion include() eingebunden werden.
Dies bedeutet, dass jeder <acronym title="Hypertext Preprocessor">PHP</acronym>-Code in Templates interpretiert wird. Daher ist die Manipulation aller Werte &uuml;ber <acronym title="Hypertext Preprocessor">PHP</acronym> m&ouml;glich.
</p>
<p>
PNP-Templates m&uuml;ssen folgende Eigenschaften besitzen:
</p>
<ol>
<li class="level1"><div class="li"> Templates m&uuml;ssen g&uuml;ltigen <acronym title="Hypertext Preprocessor">PHP</acronym>-Code enthalten.</div>
</li>
<li class="level1"><div class="li"> Templates d&uuml;rfen keine Ausgabe erzeugen.</div>
</li>
<li class="level1"><div class="li"> innerhalb der Templates werden die zwei Arrays $opt[] und $def[] gef&uuml;llt.</div>
</li>
</ol>
<p>
Die beiden <acronym title="Hypertext Preprocessor">PHP</acronym>-Arrays $opt[] und $def[] zusammen bilden den Aufruf von <code>&#039;rrdtool graph</code>&#039;. Somit sind alle Optionen m&ouml;glich, die RRDtool bietet. Die Optionen von RRDtool sind auf der <a href="http://oss.oetiker.ch/rrdtool/doc/rrdgraph.en.html" class="urlextern" title="http://oss.oetiker.ch/rrdtool/doc/rrdgraph.en.html" rel="nofollow">RRDtool Homepage</a> genauestens beschrieben.
</p>
<p>
Wenn beide Arrays mehrere Datens&auml;tze enthalten, so wird f&uuml;r jeden Datensatz ein Graph erstellt.
</p>
<p>
Weiterhin stehen innerhalb der Templates die Daten aus dem zugeh&ouml;rigen <acronym title="Extensible Markup Language">XML</acronym>-File zur Verf&uuml;gung, die zum Erstellen der Graphen wieder verwendet werden k&ouml;nnen.
</p>
<p>
Am Beispiel des recht einfachen Templates response.php lassen sich die wichtigsten Optionen recht gut beschreiben.
</p>
<pre class="code php"><span class="kw2">&lt;?php</span>
<span class="co2">#
</span><span class="re0">$opt</span><span class="br0">&#91;</span><span class="nu0">1</span><span class="br0">&#93;</span> <span class="sy0">=</span> <span class="st0">&quot;--title <span class="es1">\&quot;</span>Response Time For <span class="es4">$hostname</span> / <span class="es4">$servicedesc</span><span class="es1">\&quot;</span> &quot;</span><span class="sy0">;</span>
<span class="co2">#
</span><span class="re0">$def</span><span class="br0">&#91;</span><span class="nu0">1</span><span class="br0">&#93;</span> <span class="sy0">=</span> <span class="st0">&quot;DEF:var1=<span class="es4">$RRDFILE[1]</span>:<span class="es4">$DS[1]</span>:AVERAGE &quot;</span> <span class="sy0">;</span>
<span class="re0">$def</span><span class="br0">&#91;</span><span class="nu0">1</span><span class="br0">&#93;</span> <span class="sy0">.=</span> <span class="st0">&quot;AREA:var1#00FF00:<span class="es1">\&quot;</span>Response Times <span class="es1">\&quot;</span> &quot;</span> <span class="sy0">;</span>
<span class="re0">$def</span><span class="br0">&#91;</span><span class="nu0">1</span><span class="br0">&#93;</span> <span class="sy0">.=</span> <span class="st0">&quot;LINE1:var1#000000 &quot;</span> <span class="sy0">;</span>
<span class="re0">$def</span><span class="br0">&#91;</span><span class="nu0">1</span><span class="br0">&#93;</span> <span class="sy0">.=</span> <span class="st0">&quot;GPRINT:var1:LAST:<span class="es1">\&quot;</span>%3.4lg <span class="es6">%s</span><span class="es4">$UNIT[1]</span> LAST <span class="es1">\&quot;</span> &quot;</span><span class="sy0">;</span>
<span class="re0">$def</span><span class="br0">&#91;</span><span class="nu0">1</span><span class="br0">&#93;</span> <span class="sy0">.=</span> <span class="st0">&quot;GPRINT:var1:MAX:<span class="es1">\&quot;</span>%3.4lg <span class="es6">%s</span><span class="es4">$UNIT[1]</span> MAX <span class="es1">\&quot;</span> &quot;</span><span class="sy0">;</span>
<span class="re0">$def</span><span class="br0">&#91;</span><span class="nu0">1</span><span class="br0">&#93;</span> <span class="sy0">.=</span> <span class="st0">&quot;GPRINT:var1:AVERAGE:<span class="es1">\&quot;</span>%3.4lg <span class="es6">%s</span><span class="es4">$UNIT[1]</span> AVERAGE <span class="es1">\&quot;</span> &quot;</span><span class="sy0">;</span>
<span class="sy1">?&gt;</span></pre>
<p>
<strong><code>$opt[1] = ”--title …”</code></strong> setzt RRDtool-Optionen f&uuml;r den ersten Datensatz im Array. Hier ist das der Titel des Graphen.
Wie man sieht, werden eingebettete Anf&uuml;hrungszeichen durch einen Backslash (\) maskiert.
Die beiden Variablen <code>$hostname</code> und <code>$servicedesc</code> sind durch den Aufruf von PNP ermittelt worden und stehen nun auch im Template zur Verf&uuml;gung.
</p>
<p>
<strong><code>$def[1] = “DEF:var1=$RRDFILE[1]:$DS[1]:AVERAGE ”;</code></strong> definiert, welche Daten aus welchem RRD-File gelesen werden sollen. $RRDFILE[1] enth&auml;lt den Pfad zur RRD-Datei dieses Services. $DS[1] verweist auf die Datenreihe eins aus der RRD-Datei.
</p>
<p>
<strong><code>$def[1] .= “AREA:var1#00FF00:\”Response Times \” ”;</code></strong> durch den Operator ”.=” werden weitere Daten an das Array $def[1] angeh&auml;ngt. Gezeichnet wird eine Fl&auml;che (AREA) mit den Daten der Variable var1. Die Farbe wird im HEX-Code #00FF00 definiert. Als Beschriftung wird “Response Times” verwendet.
</p>
<p>
<strong><code>$def[1] .= “LINE1:var1#000000 ”;</code></strong> Als Abschluss der eben gezeichneten Fl&auml;che wird eine Linie (LINE1) in Schwarz (#000000) gezeichnet.
</p>
<p>
<strong><code>$def[1] .= “GPRINT:var1:LAST:\”%3.4lg %s$UNIT[1] LAST \” ”; <br/>
$def[1] .= “GPRINT:var1:MAX:\”%3.4lg %s$UNIT[1] MAX \” ”; <br/>
$def[1] .= “GPRINT:var1:AVERAGE:\”%3.4lg %s$UNIT[1] AVERAGE \” ”;</code></strong>
</p>
<p>
Die drei GPRINT Zeilen bilden die Legende des Graphen. Die aktuellen Werte werden dabei &uuml;ber die <a href="http://en.wikipedia.org/wiki/printf" class="interwiki iw_wp" title="http://en.wikipedia.org/wiki/printf">printf</a> Syntax formatiert.
</p>
</div>
<h2><a name="verfuegbare_variablen" id="verfuegbare_variablen">Verf&uuml;gbare Variablen</a></h2>
<div class="level2">
<p>
PNP speichert &uuml;ber den Datensammler <code>process_perfdata.pl</code> zur Laufzeit nicht nur Performancedaten, sondern auch weitere von Nagios exportierte Werte. Diese Werte werden in der jeweils f&uuml;r den Service g&uuml;ltigen <acronym title="Extensible Markup Language">XML</acronym>-Datei gespeichert.
</p>
<p>
Im ersten Teil der <acronym title="Extensible Markup Language">XML</acronym>-Datei werden die Performancedaten in ihre Einzelteile zerlegt gespeichert.
</p>
<pre class="code xml"><span class="sc3"><span class="re1">&lt;NAGIOS<span class="re2">&gt;</span></span></span>
<span class="sc3"><span class="re1">&lt;DATASOURCE<span class="re2">&gt;</span></span></span>
<span class="sc3"><span class="re1">&lt;TEMPLATE<span class="re2">&gt;</span></span></span>check_http<span class="sc3"><span class="re1">&lt;/TEMPLATE<span class="re2">&gt;</span></span></span>
<span class="sc3"><span class="re1">&lt;DS<span class="re2">&gt;</span></span></span>1<span class="sc3"><span class="re1">&lt;/DS<span class="re2">&gt;</span></span></span>
<span class="sc3"><span class="re1">&lt;NAME<span class="re2">&gt;</span></span></span>time<span class="sc3"><span class="re1">&lt;/NAME<span class="re2">&gt;</span></span></span>
<span class="sc3"><span class="re1">&lt;UNIT<span class="re2">&gt;</span></span></span>s<span class="sc3"><span class="re1">&lt;/UNIT<span class="re2">&gt;</span></span></span>
<span class="sc3"><span class="re1">&lt;ACT<span class="re2">&gt;</span></span></span>0.006721<span class="sc3"><span class="re1">&lt;/ACT<span class="re2">&gt;</span></span></span>
<span class="sc3"><span class="re1">&lt;WARN<span class="re2">&gt;</span></span></span>1.000000<span class="sc3"><span class="re1">&lt;/WARN<span class="re2">&gt;</span></span></span>
<span class="sc3"><span class="re1">&lt;CRIT<span class="re2">&gt;</span></span></span>2.000000<span class="sc3"><span class="re1">&lt;/CRIT<span class="re2">&gt;</span></span></span>
<span class="sc3"><span class="re1">&lt;MIN<span class="re2">&gt;</span></span></span>0.000000<span class="sc3"><span class="re1">&lt;/MIN<span class="re2">&gt;</span></span></span>
<span class="sc3"><span class="re1">&lt;MAX<span class="re2">&gt;</span></span><span class="re1">&lt;/MAX<span class="re2">&gt;</span></span></span>
<span class="sc3"><span class="re1">&lt;/DATASOURCE<span class="re2">&gt;</span></span></span>
...
<span class="sc3"><span class="re1">&lt;/NAGIOS<span class="re2">&gt;</span></span></span></pre>
<p>
Das Feld &lt;DS&gt; bezeichnet die DataSource und dient der Identifizierung der Datenreihen innerhalb der RRD-Dateien, ist aber auch der Schl&uuml;ssel der folgenden Arrays.
</p>
<p>
Im Array <code>$UNIT[1]</code> ist somit die Einheit der ersten Datenreihe gespeichert.
</p>
<p>
Die <acronym title="Extensible Markup Language">XML</acronym>-Datei enth&auml;lt jedoch noch weitere Informationen. Wird <code>process_perdata.pl</code> im sync-Mode verwendet, so sind alle verf&uuml;gbaren Makros mit den aktuellen Werten verf&uuml;gbar. Der folgende Ausschnitt ist jedoch zu Gunsten der Lesbarkeit gek&uuml;rzt.
</p>
<pre class="code xml"><span class="sc3"><span class="re1">&lt;NAGIOS<span class="re2">&gt;</span></span></span>
...
<span class="sc3"><span class="re1">&lt;NAGIOS_SERVICENOTIFICATIONID<span class="re2">&gt;</span></span></span>8418<span class="sc3"><span class="re1">&lt;/NAGIOS_SERVICENOTIFICATIONID<span class="re2">&gt;</span></span></span>
<span class="sc3"><span class="re1">&lt;NAGIOS_SERVICENOTIFICATIONNUMBER<span class="re2">&gt;</span></span></span>0<span class="sc3"><span class="re1">&lt;/NAGIOS_SERVICENOTIFICATIONNUMBER<span class="re2">&gt;</span></span></span>
<span class="sc3"><span class="re1">&lt;NAGIOS_SERVICEOUTPUT<span class="re2">&gt;</span></span></span>HTTP OK HTTP/1.1 200 OK - 10087 bytes in 0.125 seconds<span class="sc3"><span class="re1">&lt;/NAGIOS_SERVICEOUTPUT<span class="re2">&gt;</span></span></span>
<span class="sc3"><span class="re1">&lt;NAGIOS_SERVICEPERCENTCHANGE<span class="re2">&gt;</span></span></span>0.00<span class="sc3"><span class="re1">&lt;/NAGIOS_SERVICEPERCENTCHANGE<span class="re2">&gt;</span></span></span>
<span class="sc3"><span class="re1">&lt;NAGIOS_SERVICEPERFDATA<span class="re2">&gt;</span></span></span>time=0.124811s;;;0.000000 size=10087B;;;0<span class="sc3"><span class="re1">&lt;/NAGIOS_SERVICEPERFDATA<span class="re2">&gt;</span></span></span>
<span class="sc3"><span class="re1">&lt;NAGIOS_SERVICEPERFDATAFILE<span class="re2">&gt;</span></span><span class="re1">&lt;/NAGIOS_SERVICEPERFDATAFILE<span class="re2">&gt;</span></span></span>
<span class="sc3"><span class="re1">&lt;NAGIOS_SERVICEPROBLEMID<span class="re2">&gt;</span></span></span>0<span class="sc3"><span class="re1">&lt;/NAGIOS_SERVICEPROBLEMID<span class="re2">&gt;</span></span></span>
<span class="sc3"><span class="re1">&lt;NAGIOS_SERVICESTATE<span class="re2">&gt;</span></span></span>OK<span class="sc3"><span class="re1">&lt;/NAGIOS_SERVICESTATE<span class="re2">&gt;</span></span></span>
<span class="sc3"><span class="re1">&lt;NAGIOS_SERVICESTATEID<span class="re2">&gt;</span></span></span>0<span class="sc3"><span class="re1">&lt;/NAGIOS_SERVICESTATEID<span class="re2">&gt;</span></span></span>
<span class="sc3"><span class="re1">&lt;NAGIOS_SERVICESTATETYPE<span class="re2">&gt;</span></span></span>HARD<span class="sc3"><span class="re1">&lt;/NAGIOS_SERVICESTATETYPE<span class="re2">&gt;</span></span></span>
<span class="sc3"><span class="re1">&lt;NAGIOS_SHORTDATETIME<span class="re2">&gt;</span></span></span>27-12-2007 13:51:23<span class="sc3"><span class="re1">&lt;/NAGIOS_SHORTDATETIME<span class="re2">&gt;</span></span></span>
...
<span class="sc3"><span class="re1">&lt;/NAGIOS<span class="re2">&gt;</span></span></span></pre>
<p>
Die einzelnen <acronym title="Extensible Markup Language">XML</acronym>-Felder sind als Variablen in den PNP-Templates verwendbar, wobei jedes Feld als Variable gleichen Namens verf&uuml;gbar ist.
</p>
<p>
Aus <code>&lt;NAGIOS_SERVICEOUTPUT&gt;</code> wird die Variable <code>$NAGIOS_SERVICEOUTPUT</code>.
</p>
<p>
<a href="/de/pnp-0.6/start" class="wikilink1" title="de:pnp-0.6:start">zur&uuml;ck zur &Uuml;bersicht</a> | <a href="/de/pnp-0.6/tpl_custom" class="wikilink1" title="de:pnp-0.6:tpl_custom">Custom Templates</a>
</p>
</div>
<div class="inclmeta level1">
<a href="/de/pnp-0.6/tpl" class="wikilink1 permalink" title="de:pnp-0.6:tpl" rel="bookmark">de:pnp-0.6:tpl</a>
</div>
</div>
<div class="plugin_include_content" id="plugin_include__de:pnp-0.6:tpl_custom">
<h1><a name="custom_templates" id="custom_templates" href="/de/pnp-0.6/tpl_custom" title="Custom Templates">Custom Templates</a></h1>
<div class="level1">
<p>
Wie bereits unter ”<a href="/de/pnp-0.6/tpl" class="wikilink1" title="de:pnp-0.6:tpl">Was sind Templates ?</a>” beschrieben, ist die Darstellung der Graphen abh&auml;ngig vom verwendeten Check-Command.
</p>
<p>
Es gibt jedoch Situationen, in denen dieses Verhalten &uuml;bersteuert werden muss, zum Beispiel dann wenn allgemeing&uuml;ltige Commands definiert wurden.
</p>
<p>
PNP, speziell process_perfdata.pl, sucht zur Laufzeit f&uuml;r jedes check_command im Verzeichnis etc/check_commands nach einer Config-Datei (&lt;check_command&gt;.cfg) und liest diese, wenn vorhanden, ein.
Folgende Optionen k&ouml;nnen darin definiert werden:
</p>
</div>
<h2><a name="custom_template" id="custom_template">CUSTOM_TEMPLATE</a></h2>
<div class="level2">
<p>
Geht man von folgendem Beispiel einer Nagios command-Definition aus:
</p>
<pre class="code">
define command {
command_name check_nrpe
command_line $USER1$/check_nrpe -H $HOSTADDRESS$ -c $ARG1$ -a &quot;$ARG2$&quot;
}
</pre>
<p>
Die Folge w&auml;re, dass immer das Template check_nrpe.php verwendet werden w&uuml;rde, auch wenn auf dem zu &uuml;berwachenden Server via NRPE ein ganz anderes Plugin aufgerufen wurde.
</p>
<p>
Da unser Beispiel-Command check_nrpe lautet, wird nach etc/check_commands/check_nrpe.cfg gesucht.
</p>
<p>
Eine Beispiel-Config wird bereits w&auml;hrend der Installation mit der Dateierweiterung .cfg-sample in etc/check_commands gespeichert.
</p>
<pre class="code">
# check_command check_nrpe!load!-w 4,4,4 -c 5,5,5
# ________0__________| | |
# ________1__________________| |
# ________2__________________________|
#
CUSTOM_TEMPLATE = 1
</pre>
<p>
<code>CUSTOM_TEMPLATE = 1</code> sorgt daf&uuml;r, dass nur der Inhalt von $ARG1$ als Template-Name verwendet wird. Da in diesem Beispiel $ARG1$ mit dem Wert “load” gef&uuml;llt ist, ergibt sich als Template-Name “load.php”
</p>
<p>
<code>CUSTOM_TEMPLATE = 0,1</code> ergibt → “check_nrpe_load.php”
</p>
<p>
<code>CUSTOM_TEMPLATE = 1,0</code> ergibt → “load_check_nrpe.php”
</p>
<p>
Diese Option hat nur Einfluss, wenn die RRD Datenbank neu erstellt wird.
</p>
</div>
<h2><a name="datatype" id="datatype">DATATYPE</a></h2>
<div class="level2">
<p>
&Uuml;ber die Option “DATATYPE” kann beeinflusst werden, mit welchem Datentyp die RRD-Datenbank angelegt werden soll.
Default ist in diesem Fall “GAUGE”. F&uuml;r fortlaufende Werte wird aber hier der Datentyp COUNTER ben&ouml;tigt.
Normalerweise sollten Plugin-Entwickler f&uuml;r Daten von Typ Counter die Einheit “c” verwenden. Dies ist jedoch nicht immer der Fall.
</p>
<p>
Alle Datenreihen auf Typ COUNTER einstellen.
</p>
<pre class="code">DATATYPE = COUNTER</pre>
<p>
Einzelnen Datenreihen spezielle Datentypen zuweisen
</p>
<pre class="code">DATATYPE = GAUGE,GAUGE,COUNTER,COUNTER</pre>
<p>
Weitere Datentypen sind in der RRDTool-Dokumentation unter <a href="http://oss.oetiker.ch/rrdtool/doc/rrdcreate.en.html" class="urlextern" title="http://oss.oetiker.ch/rrdtool/doc/rrdcreate.en.html" rel="nofollow">rrdcreate</a> erkl&auml;rt.
</p>
<p>
Diese Option hat nur Einfluss, wenn die RRD Datenbank neu erstellt wird.
</p>
</div>
<h2><a name="use_min_on_create_und_use_max_on_create" id="use_min_on_create_und_use_max_on_create">USE_MIN_ON_CREATE und USE_MAX_ON_CREATE</a></h2>
<div class="level2">
<p>
In einigen wenigen Situationen ist es notwendig, die f&uuml;r RRDTool g&uuml;ltigen Daten zu begrenzen.
</p>
<p>
RRD-Datenbanken lassen sich mit definierten Minimum- und Maximum-Werten anlegen.
Weitere Infos unter <a href="http://oss.oetiker.ch/rrdtool/doc/rrdcreate.en.html" class="urlextern" title="http://oss.oetiker.ch/rrdtool/doc/rrdcreate.en.html" rel="nofollow">http://oss.oetiker.ch/rrdtool/doc/rrdcreate.en.html</a>
</p>
<p>
Ber&uuml;cksichtigen des Maximum-Wertes aus den Performance-Daten
</p>
<pre class="code">USE_MAX_ON_CREATE = 1</pre>
<p>
Ber&uuml;cksichtigen des Minimum-Wertes aus den Performance-Daten
</p>
<pre class="code">USE_MIN_ON_CREATE = 1</pre>
<p>
Diese Option hat nur Einfluss, wenn die RRD Datenbank neu erstellt wird.
</p>
</div>
<h2><a name="rrd_storage_type" id="rrd_storage_type">RRD_STORAGE_TYPE</a></h2>
<div class="level2">
<pre class="code">RRD_STORAGE_TYPE = SINGLE</pre>
<p>
Die Option RRD_STORAGE_TYPE definiert die Art der Datenhaltung.
</p>
<p>
M&ouml;gliche Werte sind MULTIPLE und SINGLE
</p>
<p>
SINGLE: Eine RRD-Datenbank pro Service
</p>
<p>
MULTIPLE: Ein oder mehrere RRD-Datenbanken pro Service. F&uuml;r jede Datenreihe wird eine eigene RRD-Datenbank erstellt.
</p>
<p>
<strong>ACHTUNG:</strong> Daten werden nicht automatisch migriert!<br/>
Ein Konvertierungs-Script finden Sie <a href="/de/pnp-0.6/rrd_convert" class="wikilink1" title="de:pnp-0.6:rrd_convert">hier</a>.
</p>
<p>
Diese Option hat nur Einfluss, wenn die RRD Datenbank neu erstellt wird.
</p>
</div>
<h2><a name="rrd_heartbeat" id="rrd_heartbeat">RRD_HEARTBEAT</a></h2>
<div class="level2">
<p>
<strong>G&uuml;ltig ab PNP 0.6.1</strong>
</p>
<pre class="code">RRD_HEARTBEAT = 305</pre>
<p>
Nach &lt;RRD_HEARTBEAT&gt; Sekunden erwartet RRDtool neue Daten.
</p>
<p>
Mehr dazu unter <a href="http://oss.oetiker.ch/rrdtool/doc/rrdcreate.en.html" class="urlextern" title="http://oss.oetiker.ch/rrdtool/doc/rrdcreate.en.html" rel="nofollow">http://oss.oetiker.ch/rrdtool/doc/rrdcreate.en.html</a>
</p>
<p>
Diese Option hat nur Einfluss, wenn die RRD Datenbank neu erstellt wird.
</p>
</div>
<h2><a name="hints_on_template_names" id="hints_on_template_names">Hints on Template Names</a></h2>
<div class="level2">
<p>
In den meisten Situationen, kann man erw&uuml;nsche Template Namen relativ einfach, durch die Verwendung geeignter command Objekt Definitionen, erhalten.
</p>
<p>
Man betrachte folgendes Beispiel:
</p>
<pre class="code">
define command {
command_name check_by_ssh
command_line /usr/bin/ssh $HOSTADDRESS$ $ARG1$
}
</pre>
<p>
mit commands wie diesem:
</p>
<pre class="code">
check_command check_by_ssh!/usr/lib/nagios/plugins/check_load -w 4,4,4 -c 5,5,5
</pre>
<p>
Selbst wenn man “CUSTOM_TEMPLATE = 1” benutz, w&uuml;rde man template Namen wie diesen “_usr_lib_nagios_plugins_check_load_-w_4,4,4_-c_5,5,5” erhalten, was h&ouml;chst unerw&uuml;nscht ist, insbesondere wegen den darin enthaltenen Parametern.
</p>
<p>
<strong>L&ouml;sung 1: Die Parameter in eigenst&auml;ndige $ARGn$ auslagern</strong>
</p>
<p>
Eine einfache L&ouml;sung ist die Verwendung der folgenden command Objekt Definition:
</p>
<pre class="code">
define command {
command_name check_by_ssh
command_line /usr/bin/ssh $HOSTADDRESS$ $ARG1$ $ARG2$
}
</pre>
<p>
mit commands wie diesem:
</p>
<pre class="code">
check_command check_by_ssh!/usr/lib/nagios/plugins/check_load!-w 4,4,4 -c 5,5,5
</pre>
<p>
(man beachte das hinzugekommene “!”)
</p>
<p>
Dies funktioniert selbst dann, wann $ARG2$ leer bleibt.
</p>
<p>
Selbstverst&auml;ndlich m&uuml;sste man immer noch “CUSTOM_TEMPLATE = 1” setzen.
</p>
<p>
<strong>L&ouml;sung 2: Den remote executor in der command Objekt Definition verstecken</strong>
</p>
<p>
Eine andere L&ouml;sung ist es, den remote excutor in den jeweiligen command Objekt Definitionen zu verstekcne.
</p>
<p>
Anstatt folgender Definition:
</p>
<pre class="code">
define command {
command_name check_by_ssh
command_line /usr/bin/ssh $HOSTADDRESS$ $ARG1$ $ARG2$
}
</pre>
<p>
w&uuml;rde man dies f&uuml;r <strong>jeden</strong> fern auszuf&uuml;hrenden command definieren:
</p>
<pre class="code">
define command {
command_name check_load_by_ssh
command_line /usr/bin/ssh $HOSTADDRESS$ /usr/lib/nagios/plugins/check_load $ARG1$
}
</pre>
<p>
mit commands wie diesem:
</p>
<pre class="code">
check_load_by_ssh!-w 4,4,4 -c 5,5,5
</pre>
<p>
Nat&uuml;rlich darf “CUSTOM_TEMPLATE = 1” bei dieser L&ouml;sung nicht mehr gesetzt werden.
</p>
<p>
Welche der obigen L&ouml;sungen verwendet wird, ist weitgehend Geschmacksache.
</p>
<p>
<a href="/de/pnp-0.6/start" class="wikilink1" title="de:pnp-0.6:start">zur&uuml;ck zur &Uuml;bersicht</a> | <a href="/de/pnp-0.6/advanced" class="wikilink1" title="de:pnp-0.6:advanced">PNP in verteilten Umgebungen</a>
</p>
</div>
<div class="inclmeta level1">
<a href="/de/pnp-0.6/tpl_custom" class="wikilink1 permalink" title="de:pnp-0.6:tpl_custom" rel="bookmark">de:pnp-0.6:tpl_custom</a>
</div>
</div>
<div class="plugin_include_content" id="plugin_include__de:pnp-0.6:advanced">
<h1><a name="advanced" id="advanced" href="/de/pnp-0.6/advanced" title="Advanced">Advanced</a></h1>
<div class="level1">
</div>
<h2><a name="verteilte_systeme" id="verteilte_systeme">Verteilte Systeme</a></h2>
<div class="level2">
<p>
Ist Nagios als verteiltes System implementiert, stellt sich die Frage, wo PNP installiert wird.
</p>
<p>
Rein technisch ist diese Frage nicht wichtig. PNP kann auf den Slaves sowie auf dem Master-Server installiert sein. Oder nur auf dem Master?
</p>
<p>
Wird PNP auf dem Master betrieben, ist jedoch bei der &Uuml;bergabe der Daten via send_nsca von den Slave-Servern zum Master darauf zu achten, dass auch die Performance-Daten &uuml;bergeben werden. Weiterhin kommt auf dem Master oft nicht das Original-Check-Command zum Einsatz.
</p>
<p>
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&auml;tzliches Feld am Ende der Performance-Daten.
</p>
<pre class="code">OK - 127.0.0.1: rta 2.687ms, lost 0% | rta=2.687ms;3000.000;5000.000;0; pl=0%;80;100;; [check_icmp]</pre>
<p>
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.
</p>
<p>
Die Nagios-Dokumentation zu diesem Thema ist <a href="http://www.nagios-wiki.de/nagios/doku3/distributed" class="urlextern" title="http://www.nagios-wiki.de/nagios/doku3/distributed" rel="nofollow">hier</a> zu finden. Das in der Doku verwendete Command ist leicht anzupassen.
</p>
<p>
Aus
</p>
<pre class="code">
define command{
command_name submit_check_result
command_line /usr/local/nagios/libexec/eventhandlers/submit_check_result $HOSTNAME$ &#039;$SERVICEDESC$&#039; $SERVICESTATE$ &#039;$SERVICEOUTPUT$&#039;
}
</pre>
<p>
wird
</p>
<pre class="code">
define command{
command_name submit_check_result
command_line /usr/local/nagios/libexec/eventhandlers/submit_check_result $HOSTNAME$ &#039;$SERVICEDESC$&#039; $SERVICESTATE$ &#039;$SERVICEOUTPUT$ | $SERVICEPERFDATA$ [$SERVICECHECKCOMMAND$]&#039;
}
</pre>
</div>
<h2><a name="das_check_multi-plugin" id="das_check_multi-plugin">Das check_multi-Plugin</a></h2>
<div class="level2">
<p>
Das Plugin <a href="http://my-plugin.de/wiki/projects/check_multi/start" class="urlextern" title="http://my-plugin.de/wiki/projects/check_multi/start" rel="nofollow">check_multi</a> ist eines der ersten Plugins, das die Funktionen von Nagios 3.0 richtig aussch&ouml;pft. Check_Multi ist in der Lage, mehrere Nagios-Plugins auszuf&uuml;hren, aber f&uuml;r Nagios als einen Service darzustellen. Die Ausgabe von check_multi erfolgt &uuml;ber mehrere Zeilen, um die Masse an Informationen wieder darstellen zu k&ouml;nnen.
</p>
<p>
Daraus ergaben sich jedoch einige Schwierigkeiten f&uuml;r PNP. PNP muss aus den Performance-Daten wieder die Daten der einzelnen Plugins ermitteln k&ouml;nnen. Zusammen mit Matthias Flacke, dem Entwickler von check_multi, haben wir jedoch recht schnell eine M&ouml;glichkeit gefunden, die Daten wieder sauber den einzelnen Plugins zuzuordnen.
</p>
<p>
<a href="/lib/exe/fetch.php?hash=a9e001&amp;media=http%3A%2F%2Fmy-plugin.de%2Fwiki%2F_media%2Fcheck_multi%2Fperformance%2Fmulti_labels.png" class="media" title="http://my-plugin.de/wiki/_media/check_multi/performance/multi_labels.png"><img src="/lib/exe/fetch.php?hash=a9e001&amp;w=300&amp;media=http%3A%2F%2Fmy-plugin.de%2Fwiki%2F_media%2Fcheck_multi%2Fperformance%2Fmulti_labels.png" class="media" alt="" width="300" /></a>
</p>
<p>
<a href="/de/pnp-0.6/start" class="wikilink1" title="de:pnp-0.6:start">Zur&uuml;ck zur &Uuml;bersicht</a> | <a href="/de/pnp-0.6/rrdcached" class="wikilink1" title="de:pnp-0.6:rrdcached">rrdcached-Unterst&uuml;tzung</a>
</p>
</div>
<div class="inclmeta level1">
<a href="/de/pnp-0.6/advanced" class="wikilink1 permalink" title="de:pnp-0.6:advanced" rel="bookmark">de:pnp-0.6:advanced</a>
</div>
</div>
<div class="plugin_include_content" id="plugin_include__de:pnp-0.6:rrdcached">
<h1><a name="rrdtool_cache_daemon" id="rrdtool_cache_daemon" href="/de/pnp-0.6/rrdcached" title="RRDtool Cache Daemon">RRDtool Cache Daemon</a></h1>
<div class="level1">
<p>
In großen Installationen wird man &uuml;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.
</p>
<p>
Eine Optimierung stellt das Sammeln und Sortieren der Daten dar. Es ist f&uuml;r das System effektiver, viele Updates im Block in eine RRD-Datenbank zu schreiben. Der Disk-Cache kann dabei effektiver genutzt werden.
</p>
<p>
In der aktuellen RRDtool-Version ( <a href="http://oss.oetiker.ch/rrdtool-trac/browser/trunk/program" class="urlextern" title="http://oss.oetiker.ch/rrdtool-trac/browser/trunk/program" rel="nofollow">SVN trunk 1550+</a> ) ist der rrdcached enthalten, der genau diese Situation verbessern soll.
</p>
<p>
An dieser Stelle m&ouml;chte ich mich bei Florian octo Forster, Kevin Brintnall und Tobi Oetiker bedanken. Die Entwicklung dieses Daemons wurde vorbildlich auf der <a href="http://www.mail-archive.com/rrd-developers@lists.oetiker.ch/index.html" class="urlextern" title="http://www.mail-archive.com/rrd-developers@lists.oetiker.ch/index.html" rel="nofollow">rrd-developers</a> Mailingliste koordiniert.
</p>
</div>
<h2><a name="arbeitsweise" id="arbeitsweise">Arbeitsweise</a></h2>
<div class="level2">
<p>
Der rrdcached arbeitet als Daemon im Hintergrund und &ouml;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&ouml;glich absolute Pfadangaben (wie bei pnp4nagios &uuml;blich) bei Netzwerkzugriffen zu verwenden, daher ist derzeit nur Nutzung von UNIX-Sockets m&ouml;glich.
</p>
</div>
<h3><a name="rrdcached" id="rrdcached">rrdcached</a></h3>
<div class="level3">
<p>
Der rrdcached kennt einige wichtige Optionen, die beim Start &uuml;bergeben werden.
</p>
<p>
Option -l definiert den Socket, auf dem der rrdcached Requests annimmt. Der Default-UDP-Port ist 42217, der Default-UNIX-Socket /tmp/rrdcached.sock.
</p>
<pre class="code">
-l unix:/pfad/zum/rrdcached.sock
-l /pfad/zum/rrdcached.sock
-l 127.0.0.1
-l 127.0.0.1:8888
</pre>
<p>
Option -P gibt die f&uuml;r die nachfolgenden Sockets (mit -l spezifiziert) erlaubten Befehle an, welche auf die RRD-Datenbanken angewendet werden k&ouml;nnen.
</p>
<pre class="code">-P FLUSH,PENDING</pre>
<p>
Option -s erlaubt es die Gruppenzugeh&ouml;rigkeit der nachfolgenden UNIX-Sockets zu &auml;ndern.
</p>
<pre class="code">-s nagios</pre>
<p>
Option -m setzt die Zugriffsrechte f&uuml;r die nachfolgenden UNIX-Sockets auf die (in oktal) angegebenen Werte.
</p>
<pre class="code">-m 0660</pre>
<p>
Option -w bestimmt den Intervall in Sekunden, in dem die Daten auf Disk geschrieben werden sollen.
</p>
<pre class="code">-w 1800</pre>
<p>
Option -z definiert einen Delay, der die &uuml;ber die Option -w definierten Schreibzyklen in einen zuf&auml;lligen Bereich [0-delay] verteilt, um gleichzeitige Schreibzugriffe zu verhindern. Der Wert der Option -z darf nicht gr&ouml;ßer gew&auml;hlt werden als -w.
</p>
<pre class="code">-z 1800</pre>
<p>
Option -p definiert ein PID File
</p>
<pre class="code">-p /var/run/rrdcached.pid</pre>
<p>
Option -j definiert den Pfad zu einem Journal-Verzeichnis. Dort werden alle Auftr&auml;ge protokolliert und ggf. beim n&auml;chsten Start nachgefahren, falls der rrdcached-Daemon abst&uuml;rzt.
</p>
<pre class="code">-j /var/cache/rrdcached</pre>
<p>
Daraus ergibt sich beispielsweise ein Aufruf von rrdached mit folgenden Parametern
</p>
<pre class="code"> rrdcached -w 1800 -z 1800 -p /tmp/rrdcached.pid -j /tmp -s nagios -m 0660 -l unix:/tmp/rrdcached.sock</pre>
</div>
<h3><a name="rrdtool" id="rrdtool">rrdtool</a></h3>
<div class="level3">
<p>
RRDtool selbst wird die Existenz des Daemons &uuml;ber die Option --daemon=&lt;socket&gt; mitgeteilt.
</p>
<pre class="code"> rrdtool --daemon=unix:/tmp/rrdcached.sock update ...</pre>
<p>
Dies muss nat&uuml;rlich mit den Startoptionen des rrdcached &uuml;bereinstimmen!
</p>
</div>
<h2><a name="integration_in_pnp" id="integration_in_pnp">Integration in PNP</a></h2>
<div class="level2">
<p>
Da zwei Bestandteile von PNP auf den rrdcached vorbereitet werden m&uuml;ssen, ergeben sich &Auml;nderungen in zwei Config-Files. Außerdem muß der User unter welchem der Webserver l&auml;uft zur Gruppe unter der Nagios l&auml;uft hinzugef&uuml;gt werden.
</p>
<p>
1. Anpassen der <code>process_perfdata.cfg</code> f&uuml;r den Datensammler <code>process_perfdata.pl</code>
</p>
<pre class="code">
# EXPERIMENTAL rrdcached Support
# Use only with rrdtool svn revision 1511+
#
RRD_DAEMON_OPTS = unix:/var/run/rrdcached.sock
</pre>
<p>
2. Anpassen der <code>config_local.php</code> (bzw. config.php) f&uuml;r das Webinterface
</p>
<pre class="code">
#
# EXPERIMENTAL rrdcached Support
# Use only with rrdtool svn revision 1511+
#
# $conf[&#039;RRD_DAEMON_OPTS&#039;] = &#039;unix:/tmp/rrdcached.sock&#039;;
$conf[&#039;RRD_DAEMON_OPTS&#039;] = &#039;unix:/var/run/rrdcached.sock&#039;;
</pre>
<p>
Die passenden Optionen sind bereits in den Beispieldateien enthalten.
</p>
<p>
<a href="/de/pnp-0.6/start" class="wikilink1" title="de:pnp-0.6:start">zur&uuml;ck zur &Uuml;bersicht</a> | <a href="/de/pnp-0.6/rrd_convert" class="wikilink1" title="de:pnp-0.6:rrd_convert">migrieren von RRD-Dateien</a>
</p>
</div>
<div class="inclmeta level1">
<a href="/de/pnp-0.6/rrdcached" class="wikilink1 permalink" title="de:pnp-0.6:rrdcached" rel="bookmark">de:pnp-0.6:rrdcached</a>
</div>
</div>
<div class="plugin_include_content" id="plugin_include__de:pnp-0.6:npcd">
<h1><a name="npcd" id="npcd" href="/de/pnp-0.6/npcd" title="NPCD">NPCD</a></h1>
<div class="level1">
<p>
NPCD (Nagios-Perfdata-C-Daemon) wurde geschrieben, um die asynchrone Bearbeitung von Nagios Performance-Daten zu erm&ouml;glichen.
</p>
</div>
<h2><a name="einleitung" id="einleitung">Einleitung</a></h2>
<div class="level2">
<p>
In großen Nagios-Installationen kann es zu nicht akzeptierbaren Versp&auml;tungen seitens der Checks kommen. Das bedeutet, dass Nagios einen Check zum Zeitpunkt <code>x</code> ausf&uuml;hren soll, diesen aber erst <code>y</code> Sekunden sp&auml;ter tats&auml;chlich ausf&uuml;hrt.
</p>
<p>
Wenn man dem Nagios-Daemon mitteilt, dass man nach jedem einzelnen Check auch die Performance-Daten verarbeiten m&ouml;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.
</p>
<p>
Um die Anzahl der Aktionen pro Check zu verringern, kann man nun PNP im <a href="/de/pnp-0.6/modes#bulk_mode" class="wikilink1" title="de:pnp-0.6:modes">Bulk-Mode</a> verwenden, wobei die Performance-Daten zun&auml;chst vom Nagios-Prozess gesammelt und anschließend ebenfalls vom Nagios-Prozess selbst verarbeitet werden.
</p>
<p>
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&uuml;r den Nagios-Prozess selbst eine sehr schnelle Aktion ist und die Performance nicht nennenswert beeinflusst und somit dem Core mehr Zeit f&uuml;r seine eigentliche Arbeit l&auml;sst: weitere Checks ausf&uuml;hren, Alamierungen bereitstellen, etc.
</p>
</div>
<h2><a name="wie_npcd_arbeitet" id="wie_npcd_arbeitet">Wie NPCD arbeitet</a></h2>
<div class="level2">
<p>
Wie bereits erw&auml;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.
</p>
<p>
Um den Transport der Performance-Daten-Dateien k&uuml;mmert sich nun der NPCD-Daemon, unabh&auml;ngig vom Nagios-Prozess, indem er regelm&auml;ßig in das Spool-Verzeichnis guckt und f&uuml;r jede dort gefundene Datei eine Aktion ausf&uuml;hrt.
</p>
<p>
Nachdem NPCD gestartet wurde, erstellt er sich eine Liste von Dateinamen des Spool-Verzeichnisses und startet f&uuml;r jede gefundene Datei einen Thread zur weiteren Verarbeitung mit Hilfe des <code>perfdata_file_run_cmd</code> und dem optionalen <code>perfdata_file_run_cmd_arg</code> als zus&auml;tzlichem Argument.
</p>
<p>
Da das Format der Performance-Daten-Dateien dem Format der &#039;normalen&#039; PNP-Bulk-Modus-Dateien gleicht, kann NPCD nun f&uuml;r jede gefundene Datei also <code>process_perfdata.pl</code> im <a href="/de/pnp-0.6/modes#bulk_mode" class="wikilink1" title="de:pnp-0.6:modes">Bulk Modus</a> aufrufen.
</p>
</div>
<h2><a name="vor-_und_nachteile" id="vor-_und_nachteile">Vor- und Nachteile</a></h2>
<div class="level2">
<p>
<strong>Pro:</strong>
</p>
<ul>
<li class="level1"><div class="li"> bessere Performance f&uuml;r Nagios</div>
<ul>
<li class="level2"><div class="li"> aufgrund der vom Nagios-Prozess getrennten Verarbeitung der Performance-Daten hat Nagios mehr Zeit f&uuml;r die wichtigen Dinge</div>
</li>
</ul>
</li>
<li class="level1"><div class="li"> kein Datenverlust</div>
<ul>
<li class="level2"><div class="li"> solange Nagios Performance-Daten-Dateien im Spool-Verzeichnis ablegt, gehen keine Daten verloren. Selbst wenn der NPCD mal nicht laufen sollte (Bsp. nach Neustart des Systems), werden die Dateien nach Wiederanlauf in chronologischer Reihenfolge bearbeitet ($TIMET$ Makro beim verschieben ins Spool-Verzeichnis)</div>
</li>
</ul>
</li>
</ul>
<p>
<strong>Kontra:</strong>
</p>
<ul>
<li class="level1"><div class="li"> Keine Echtzeitverarbeitung der Performance-Daten</div>
<ul>
<li class="level2"><div class="li"> aufgrund des Rhythmusses, wann Nagios die Performance-Daten-Dateien verschiebt (<code>service_perfdata_file_processing_interval</code>)</div>
</li>
<li class="level2"><div class="li"> nach jedem Lauf durch alle Dateien des Spool-Verzeichnisses wartet NPCD 10 Sekunden lang auf neue Dateien</div>
</li>
</ul>
</li>
</ul>
</div>
<h1><a name="npcd_config" id="npcd_config">NPCD Config</a></h1>
<div class="level1">
<p>
NPCD muss zwangsl&auml;ufig &uuml;ber eine Konfigurationsdatei gesteuert werden. Eine Beispielkonfiguration liegt der PNP-Installation als <code>npcd.cfg-sample</code> bei.
</p>
<p>
Nach Umbenennen der <code>-sample</code> Datei zu <code>npcd.cfg</code> kann NPCD nun wie folgt gestartet werden:
</p>
<pre class="code _bash">/usr/local/pnp4nagios/bin/npcd -f /usr/local/pnp4nagios/etc/npcd.cfg</pre>
<p>
oder
</p>
<pre class="code _bash">/usr/local/pnp4nagios/bin/npcd -d -f /usr/local/pnp4nagios/etc/npcd.cfg</pre>
<p>
um NPCD im Hintergrund als Daemon laufen zu lassen.
</p>
<p>
<strong>Hinweis:</strong>
Die <code>-sample</code> Datei sollte in jedem Fall in <code>npcd.cfg</code> umbenannt werden, da sie sonst bei einem Update von PNP &uuml;berschrieben werden k&ouml;nnte.
</p>
</div>
<h2><a name="npcdcfg-sample" id="npcdcfg-sample">npcd.cfg-sample</a></h2>
<div class="level2">
<p>
Dies sind die essentiellen Konfigurationsdirektiven f&uuml;r NPCD:
</p>
<pre class="code"># 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
</pre>
</div>
<h2><a name="die_direktiven" id="die_direktiven">Die Direktiven</a></h2>
<div class="level2">
<ul>
<li class="level1"><div class="li"> <strong>Privilege-Optionen</strong></div>
<ul>
<li class="level2"><div class="li"> user &lt;username&gt; </div>
<ul>
<li class="level3"><div class="li"> NPCD versucht die Userberechtigung zu diesem User zu wechseln.</div>
</li>
<li class="level3"><div class="li"> <strong>Default:</strong> nagios</div>
</li>
</ul>
</li>
<li class="level2"><div class="li"> group &lt;groupname&gt;</div>
<ul>
<li class="level3"><div class="li"> NPCD versucht die Gruppenberechtigung zu dieser Gruppe zu wechseln.</div>
</li>
<li class="level3"><div class="li"> <strong>Default:</strong> nagios</div>
</li>
</ul>
</li>
</ul>
</li>
<li class="level1"><div class="li"> <strong>Logging-Optionen</strong></div>
<ul>
<li class="level2"><div class="li"> log_type &lt;syslog&gt; oder &lt;file&gt; </div>
<ul>
<li class="level3"><div class="li"> Log-Type, den NPCD zum Loggen verwenden wird</div>
</li>
<li class="level3"><div class="li"> <strong>Default:</strong> syslog</div>
</li>
</ul>
</li>
<li class="level2"><div class="li"> log_file &lt;/pfad/zu/datei&gt; </div>
<ul>
<li class="level3"><div class="li"> Falls <code>log_type = file</code> wird diese Logdatei verwendet</div>
</li>
<li class="level3"><div class="li"> <strong>Default:</strong> /usr/local/pnp4nagios/var/npcd.log</div>
</li>
</ul>
</li>
<li class="level2"><div class="li"> max_logfile_size &lt;bytes&gt; </div>
<ul>
<li class="level3"><div class="li"> NPCD wird nach Erreichen der hier angegebenen Dateigr&ouml;ße eigenst&auml;ndig eine Logrotation durchf&uuml;hren</div>
</li>
<li class="level3"><div class="li"> <strong>Default:</strong> 10485760 = 10 MByte</div>
</li>
</ul>
</li>
<li class="level2"><div class="li"> log_level &lt;integer&gt;</div>
<ul>
<li class="level3"><div class="li"> Wie viel soll aufgezeichnet werden, m&ouml;glich ist:</div>
<ul>
<li class="level4"><div class="li"> 0 = Kein Log - außer Fehlern</div>
</li>
<li class="level4"><div class="li"> 1 = wenig Log - etwas mehr Aufzeichnen</div>
</li>
<li class="level4"><div class="li"> 2 = Mehr Log (aktuell ALLES)</div>
</li>
<li class="level4"><div class="li"> -1 = DEBUG Mode - Es wird alles aufgezeichnet und die Bearbeitung wird verlangsamt</div>
</li>
</ul>
</li>
<li class="level3"><div class="li"> <strong>Default:</strong> 0</div>
</li>
</ul>
</li>
</ul>
</li>
<li class="level1"><div class="li"> <strong>Bearbeitungs-Optionen</strong></div>
<ul>
<li class="level2"><div class="li"> perfdata_spool_dir &lt;/path/to/spool/dir/&gt;</div>
<ul>
<li class="level3"><div class="li"> Das Verzeichnis, in das Nagios die Dateien verschiebt</div>
</li>
<li class="level3"><div class="li"> <strong>Default:</strong> /usr/local/pnp4nagios/var/spool/</div>
</li>
</ul>
</li>
<li class="level2"><div class="li"> perfdata_file_run_cmd &lt;/path/to/bin/filename&gt;</div>
<ul>
<li class="level3"><div class="li"> Das Programm, welches Nagios f&uuml;r jede Datei aufrufen soll</div>
</li>
<li class="level3"><div class="li"> <strong>Default:</strong> /usr/local/pnp4nagios/libexec/process_perfdata.pl</div>
</li>
</ul>
</li>
<li class="level2"><div class="li"> perfdata_file_run_cmd_args &lt;option&gt; </div>
<ul>
<li class="level3"><div class="li"> Das Argument, welches optional an <code>perfdata_file_run_cmd</code> angeh&auml;ngt wird</div>
</li>
<li class="level3"><div class="li"> <strong>Default:</strong> ”-b”</div>
</li>
<li class="level3"><div class="li"> <img src="/lib/images/smileys/icon_exclaim.gif" class="middle" alt=":!:" /> Die Kommandozeile wird nach folgendem Schema aufgebaut: <pre class="code">&lt;perfdata_file_run_cmd&gt; &lt;perfdata_file_run_cmd_args&gt; &lt;filename_from_perfdata_spool_dir&gt;</pre>
</div>
</li>
</ul>
</li>
</ul>
</li>
<li class="level1"><div class="li"> <strong>Thread-Optionen</strong></div>
<ul>
<li class="level2"><div class="li"> npcd_max_threads &lt;integer value&gt;</div>
<ul>
<li class="level3"><div class="li"> Anzahl der maximal zu startenden parallelen Threads</div>
</li>
<li class="level3"><div class="li"> <strong>Default:</strong> 5</div>
</li>
</ul>
</li>
</ul>
</li>
<li class="level1"><div class="li"> <strong>Greedy-Optionen</strong></div>
<ul>
<li class="level2"><div class="li"> use_load_threshold &lt;0 oder 1&gt;</div>
<ul>
<li class="level3"><div class="li"> definiert, ob NPCD bei Erreichen des load_thresholds die Anzahl der Threads begrenzen soll</div>
<ul>
<li class="level4"><div class="li"> 0 = ausschalten (weitere Threads starten)</div>
</li>
<li class="level4"><div class="li"> 1 = einschalten</div>
</li>
</ul>
</li>
<li class="level3"><div class="li"> <strong>Default:</strong> 0</div>
</li>
</ul>
</li>
<li class="level2"><div class="li"> load_threshold &lt;float value&gt;</div>
<ul>
<li class="level3"><div class="li"> wenn <code>use_load_threshold</code> auf 1 gesetzt ist, werden bei Erreichen dieses load limits keine neuen Threads gestartet</div>
</li>
<li class="level3"><div class="li"> <strong>Default:</strong> 10.0</div>
</li>
</ul>
</li>
</ul>
</li>
<li class="level1"><div class="li"> <strong>Process-Optionen</strong></div>
<ul>
<li class="level2"><div class="li"> pid_file &lt;/path/to/pid.file&gt;</div>
<ul>
<li class="level3"><div class="li"> Pfad zum PID File</div>
</li>
<li class="level3"><div class="li"> <strong>Default:</strong> /var/run/npcd.pid</div>
</li>
</ul>
</li>
</ul>
</li>
</ul>
<p>
<a href="/de/pnp-0.6/start" class="wikilink1" title="de:pnp-0.6:start">zur&uuml;ck zur &Uuml;bersicht</a> | <a href="/de/pnp-0.6/wrapper" class="wikilink1" title="de:pnp-0.6:wrapper">Wrapper-Script</a>
</p>
</div>
<div class="inclmeta level1">
<a href="/de/pnp-0.6/npcd" class="wikilink1 permalink" title="de:pnp-0.6:npcd" rel="bookmark">de:pnp-0.6:npcd</a>
</div>
</div>
<div class="plugin_include_content" id="plugin_include__de:pnp-0.6:wrapper">
<p>
check_procs ist ein Beispiel f&uuml;r ein Plugin, das keine Performance-Daten ausgibt:
</p>
<pre class="code">./check_procs -a ndo2db -w 1: -c 0:
PROCS OK: 2 processes with args &#039;ndo2db&#039;</pre>
<p>
Mit dem folgenden Wrapper-Script kann das ge&auml;ndert werden
</p>
<p>
<strong>check_procs.sh</strong>
</p>
<pre class="code">#!/bin/bash
LINE=`/usr/local/nagios/libexec/check_procs $*`
RC=$?
COUNT=`echo $LINE | awk &#039;{print $3}&#039;`
PROCS=`expr $COUNT - 1`
LINE=`echo $LINE | sed &quot;s/: $COUNT /: $PROCS /&quot;`
echo $LINE \| procs=$PROCS
exit $RC</pre>
<p>
Nun wird die Zahl zusammen mit einer Bezeichnung ausgegeben.
</p>
<pre class="code">./check_procs.sh -a ndo2db -w 1: -c 0:
PROCS OK: 2 processes with args &#039;ndo2db&#039;| procs=2</pre>
<div class="inclmeta level">
<a href="/de/pnp-0.6/wrapper" class="wikilink1 permalink" title="de:pnp-0.6:wrapper" rel="bookmark">de:pnp-0.6:wrapper</a>
</div>
</div>
<div class="plugin_include_content" id="plugin_include__de:pnp-0.6:perfdata_format">
<table class="inline">
<tr class="row0">
<th class="col0">2.6. Performance-Daten</th>
</tr>
<tr class="row1">
</tr>
</table>
<p>
&#039;Bezeichnung&#039;=Wert[UOM];[warn];[crit];[min];[max]
</p>
<p>
Anmerkungen:
</p>
<ol>
<li class="level1"><div class="li"> Leerzeichen trennen Listen von Bezeichnung/Werte-Paaren</div>
</li>
<li class="level1"><div class="li"> Bezeichnungen k&ouml;nnen beliebige Zeichen enthalten</div>
</li>
<li class="level1"><div class="li"> die Bezeichnung muss in Apostrophe eingeschlossen sein, wenn diese Gleichheitszeichen (<code>=</code>), Apostroph (<code></code>&#039;) oder Leerzeichen (<code> </code>) enth&auml;lt, ansonsten sind die Apostrophe optional</div>
</li>
<li class="level1"><div class="li"> die L&auml;nge der Bezeichnung ist beliebig, aber idealerweise sind die ersten 19 Zeichen eindeutig (aufgrund einer Beschr&auml;nkung in RRD). Bitte beachten Sie, dass es eine L&auml;ngenbegrenzung bei der Menge von Daten gibt, die von NRPE an Nagios geliefert werden kann</div>
</li>
<li class="level1"><div class="li"> um ein Apostroph darzustellen, nutzen Sie zwei einzelne Apostrophe</div>
</li>
<li class="level1"><div class="li"> <em>warn</em>, <em>crit</em>, <em>min</em> und/oder <em>max</em> k&ouml;nnen leer sein (z.B. wenn der Schwellwert nicht definiert ist oder wenn min oder max nicht zutreffen). Nachfolgende, nicht gef&uuml;llte Semikola k&ouml;nnen entfallen</div>
</li>
<li class="level1"><div class="li"> <em>min</em> und <em>max</em> sind nicht erforderlich, wenn UOM = %</div>
</li>
<li class="level1"><div class="li"> <em>Wert</em>, <em>min</em> und <em>max</em> sind aus der Klasse [-0-9.] (Ziffern, Minuszeichen und Dezimalpunkt). Alle m&uuml;ssen das gleiche UOM benutzen</div>
</li>
<li class="level1"><div class="li"> <em>warn</em> und <em>crit</em> sind im “Range”-Format (siehe Abschnitt 2.5 der Original-Dokumentation). Alle m&uuml;ssen das gleiche UOM benutzen.</div>
</li>
<li class="level1"><div class="li"> UOM (unit of measurement, Maßeinheit) ist eins von:</div>
<ul>
<li class="level3"><div class="li"> keine Einheit angegeben - angenommen wird eine Zahl (int oder float) von Dingen (z.B. Benutzer, Prozesse, Load)</div>
</li>
<li class="level3"><div class="li"> s - Sekunden (auch us, ms)</div>
</li>
<li class="level3"><div class="li"> % - Prozent</div>
</li>
<li class="level3"><div class="li"> B - Bytes (auch KB, <acronym title="Megabyte">MB</acronym>, TB; <acronym title="Gigabyte">GB</acronym>?)</div>
</li>
<li class="level3"><div class="li"> c - ein fortlaufender Z&auml;hler (z.B. Bytes, die &uuml;ber ein Interface &uuml;bertragen werden)</div>
</li>
</ul>
</li>
</ol>
<p>
Es bleibt Drittanbietern &uuml;berlassen, aus den Performance-Daten Graphen zu erzeugen.|
</p>
<p>
Quelle: <a href="https://www.monitoring-plugins.org/doc/guidelines.html#AEN200" class="urlextern" title="https://www.monitoring-plugins.org/doc/guidelines.html#AEN200" rel="nofollow">https://www.monitoring-plugins.org/doc/guidelines.html#AEN200</a>
</p>
<div class="inclmeta level">
<a href="/de/pnp-0.6/perfdata_format" class="wikilink1 permalink" title="de:pnp-0.6:perfdata_format" rel="bookmark">de:pnp-0.6:perfdata_format</a>
</div>
</div>