243 lines
19 KiB
HTML
243 lines
19 KiB
HTML
|
|
|
|
|
|
<h1><a name="was_sind_templates" id="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ür das “richtige” Template getroffen wird.
|
|
</p>
|
|
|
|
</div>
|
|
<!-- SECTION "Was sind Templates ?" [1-340] -->
|
|
<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ür Templates, die im PNP-Paket bereits enthalten sind.</div>
|
|
</li>
|
|
<li class="level1"><div class="li"> share/templates - für selbst erstellte Templates. Diese werden bei Updates nicht verändert.</div>
|
|
</li>
|
|
</ul>
|
|
|
|
<p>
|
|
|
|
Weiterhin können seit Version 0.6.5 weitere Template Verzeichnisse in der Config Datei <code>pnp4nagios/etc/config.php</code> hinzugefügt werden.
|
|
</p>
|
|
|
|
<p>
|
|
Soll der Graph fü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ält der Kopf Informationen über das Plugin und die Performance-Daten. Im folgenden Beispiel erkennt man anhand des <acronym title="Extensible Markup Language">XML</acronym>-Tags <code><TEMPLATE></code>, welches PNP-Template fü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"><NAGIOS<span class="re2">></span></span></span>
|
|
<span class="sc3"><span class="re1"><DATASOURCE<span class="re2">></span></span></span>
|
|
<span class="sc3"><span class="re1"><TEMPLATE<span class="re2">></span></span></span>check_http<span class="sc3"><span class="re1"></TEMPLATE<span class="re2">></span></span></span>
|
|
<span class="sc3"><span class="re1"><DS<span class="re2">></span></span></span>1<span class="sc3"><span class="re1"></DS<span class="re2">></span></span></span>
|
|
<span class="sc3"><span class="re1"><NAME<span class="re2">></span></span></span>time<span class="sc3"><span class="re1"></NAME<span class="re2">></span></span></span>
|
|
<span class="sc3"><span class="re1"><UNIT<span class="re2">></span></span></span>s<span class="sc3"><span class="re1"></UNIT<span class="re2">></span></span></span>
|
|
<span class="sc3"><span class="re1"><ACT<span class="re2">></span></span></span>0.006721<span class="sc3"><span class="re1"></ACT<span class="re2">></span></span></span>
|
|
<span class="sc3"><span class="re1"><WARN<span class="re2">></span></span></span>1.000000<span class="sc3"><span class="re1"></WARN<span class="re2">></span></span></span>
|
|
<span class="sc3"><span class="re1"><CRIT<span class="re2">></span></span></span>2.000000<span class="sc3"><span class="re1"></CRIT<span class="re2">></span></span></span>
|
|
<span class="sc3"><span class="re1"><MIN<span class="re2">></span></span></span>0.000000<span class="sc3"><span class="re1"></MIN<span class="re2">></span></span></span>
|
|
<span class="sc3"><span class="re1"><MAX<span class="re2">></span></span><span class="re1"></MAX<span class="re2">></span></span></span>
|
|
<span class="sc3"><span class="re1"></DATASOURCE<span class="re2">></span></span></span>
|
|
<span class="sc3"><span class="re1"><DATASOURCE<span class="re2">></span></span></span>
|
|
<span class="sc3"><span class="re1"><TEMPLATE<span class="re2">></span></span></span>check_http<span class="sc3"><span class="re1"></TEMPLATE<span class="re2">></span></span></span>
|
|
<span class="sc3"><span class="re1"><DS<span class="re2">></span></span></span>2<span class="sc3"><span class="re1"></DS<span class="re2">></span></span></span>
|
|
<span class="sc3"><span class="re1"><NAME<span class="re2">></span></span></span>size<span class="sc3"><span class="re1"></NAME<span class="re2">></span></span></span>
|
|
<span class="sc3"><span class="re1"><UNIT<span class="re2">></span></span></span>B<span class="sc3"><span class="re1"></UNIT<span class="re2">></span></span></span>
|
|
<span class="sc3"><span class="re1"><ACT<span class="re2">></span></span></span>263<span class="sc3"><span class="re1"></ACT<span class="re2">></span></span></span>
|
|
<span class="sc3"><span class="re1"><WARN<span class="re2">></span></span><span class="re1"></WARN<span class="re2">></span></span></span>
|
|
<span class="sc3"><span class="re1"><CRIT<span class="re2">></span></span><span class="re1"></CRIT<span class="re2">></span></span></span>
|
|
<span class="sc3"><span class="re1"><MIN<span class="re2">></span></span></span>0<span class="sc3"><span class="re1"></MIN<span class="re2">></span></span></span>
|
|
<span class="sc3"><span class="re1"><MAX<span class="re2">></span></span><span class="re1"></MAX<span class="re2">></span></span></span>
|
|
<span class="sc3"><span class="re1"></DATASOURCE<span class="re2">></span></span></span>
|
|
...
|
|
<span class="sc3"><span class="re1"></NAGIOS<span class="re2">></span></span></span></pre>
|
|
|
|
<p>
|
|
PNP hä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>
|
|
<!-- SECTION "Wann wird welches Template verwendet ?" [341-2179] -->
|
|
<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 ü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 über <acronym title="Hypertext Preprocessor">PHP</acronym> möglich.
|
|
</p>
|
|
|
|
<p>
|
|
PNP-Templates müssen folgende Eigenschaften besitzen:
|
|
</p>
|
|
<ol>
|
|
<li class="level1"><div class="li"> Templates müssen gültigen <acronym title="Hypertext Preprocessor">PHP</acronym>-Code enthalten.</div>
|
|
</li>
|
|
<li class="level1"><div class="li"> Templates dürfen keine Ausgabe erzeugen.</div>
|
|
</li>
|
|
<li class="level1"><div class="li"> innerhalb der Templates werden die zwei Arrays $opt[] und $def[] gefüllt.</div>
|
|
</li>
|
|
</ol>
|
|
|
|
<p>
|
|
|
|
Die beiden <acronym title="Hypertext Preprocessor">PHP</acronym>-Arrays $opt[] und $def[] zusammen bilden den Aufruf von <code>'rrdtool graph</code>'. Somit sind alle Optionen mö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ätze enthalten, so wird für jeden Datensatz ein Graph erstellt.
|
|
</p>
|
|
|
|
<p>
|
|
Weiterhin stehen innerhalb der Templates die Daten aus dem zugehörigen <acronym title="Extensible Markup Language">XML</acronym>-File zur Verfügung, die zum Erstellen der Graphen wieder verwendet werden kö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"><?php</span>
|
|
<span class="co2">#
|
|
</span><span class="re0">$opt</span><span class="br0">[</span><span class="nu0">1</span><span class="br0">]</span> <span class="sy0">=</span> <span class="st0">"--title <span class="es1">\"</span>Response Time For <span class="es4">$hostname</span> / <span class="es4">$servicedesc</span><span class="es1">\"</span> "</span><span class="sy0">;</span>
|
|
<span class="co2">#
|
|
</span><span class="re0">$def</span><span class="br0">[</span><span class="nu0">1</span><span class="br0">]</span> <span class="sy0">=</span> <span class="st0">"DEF:var1=<span class="es4">$RRDFILE[1]</span>:<span class="es4">$DS[1]</span>:AVERAGE "</span> <span class="sy0">;</span>
|
|
<span class="re0">$def</span><span class="br0">[</span><span class="nu0">1</span><span class="br0">]</span> <span class="sy0">.=</span> <span class="st0">"AREA:var1#00FF00:<span class="es1">\"</span>Response Times <span class="es1">\"</span> "</span> <span class="sy0">;</span>
|
|
<span class="re0">$def</span><span class="br0">[</span><span class="nu0">1</span><span class="br0">]</span> <span class="sy0">.=</span> <span class="st0">"LINE1:var1#000000 "</span> <span class="sy0">;</span>
|
|
<span class="re0">$def</span><span class="br0">[</span><span class="nu0">1</span><span class="br0">]</span> <span class="sy0">.=</span> <span class="st0">"GPRINT:var1:LAST:<span class="es1">\"</span>%3.4lg <span class="es6">%s</span><span class="es4">$UNIT[1]</span> LAST <span class="es1">\"</span> "</span><span class="sy0">;</span>
|
|
<span class="re0">$def</span><span class="br0">[</span><span class="nu0">1</span><span class="br0">]</span> <span class="sy0">.=</span> <span class="st0">"GPRINT:var1:MAX:<span class="es1">\"</span>%3.4lg <span class="es6">%s</span><span class="es4">$UNIT[1]</span> MAX <span class="es1">\"</span> "</span><span class="sy0">;</span>
|
|
<span class="re0">$def</span><span class="br0">[</span><span class="nu0">1</span><span class="br0">]</span> <span class="sy0">.=</span> <span class="st0">"GPRINT:var1:AVERAGE:<span class="es1">\"</span>%3.4lg <span class="es6">%s</span><span class="es4">$UNIT[1]</span> AVERAGE <span class="es1">\"</span> "</span><span class="sy0">;</span>
|
|
<span class="sy1">?></span></pre>
|
|
|
|
<p>
|
|
<strong><code>$opt[1] = ”--title …”</code></strong> setzt RRDtool-Optionen für den ersten Datensatz im Array. Hier ist das der Titel des Graphen.
|
|
Wie man sieht, werden eingebettete Anfü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ü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ä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ängt. Gezeichnet wird eine Flä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ä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 ü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>
|
|
<!-- SECTION "Eigene Templates erstellen" [2180-5177] -->
|
|
<h2><a name="verfuegbare_variablen" id="verfuegbare_variablen">Verfügbare Variablen</a></h2>
|
|
<div class="level2">
|
|
|
|
<p>
|
|
|
|
PNP speichert ü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ür den Service gü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"><NAGIOS<span class="re2">></span></span></span>
|
|
<span class="sc3"><span class="re1"><DATASOURCE<span class="re2">></span></span></span>
|
|
<span class="sc3"><span class="re1"><TEMPLATE<span class="re2">></span></span></span>check_http<span class="sc3"><span class="re1"></TEMPLATE<span class="re2">></span></span></span>
|
|
<span class="sc3"><span class="re1"><DS<span class="re2">></span></span></span>1<span class="sc3"><span class="re1"></DS<span class="re2">></span></span></span>
|
|
<span class="sc3"><span class="re1"><NAME<span class="re2">></span></span></span>time<span class="sc3"><span class="re1"></NAME<span class="re2">></span></span></span>
|
|
<span class="sc3"><span class="re1"><UNIT<span class="re2">></span></span></span>s<span class="sc3"><span class="re1"></UNIT<span class="re2">></span></span></span>
|
|
<span class="sc3"><span class="re1"><ACT<span class="re2">></span></span></span>0.006721<span class="sc3"><span class="re1"></ACT<span class="re2">></span></span></span>
|
|
<span class="sc3"><span class="re1"><WARN<span class="re2">></span></span></span>1.000000<span class="sc3"><span class="re1"></WARN<span class="re2">></span></span></span>
|
|
<span class="sc3"><span class="re1"><CRIT<span class="re2">></span></span></span>2.000000<span class="sc3"><span class="re1"></CRIT<span class="re2">></span></span></span>
|
|
<span class="sc3"><span class="re1"><MIN<span class="re2">></span></span></span>0.000000<span class="sc3"><span class="re1"></MIN<span class="re2">></span></span></span>
|
|
<span class="sc3"><span class="re1"><MAX<span class="re2">></span></span><span class="re1"></MAX<span class="re2">></span></span></span>
|
|
<span class="sc3"><span class="re1"></DATASOURCE<span class="re2">></span></span></span>
|
|
...
|
|
<span class="sc3"><span class="re1"></NAGIOS<span class="re2">></span></span></span></pre>
|
|
|
|
<p>
|
|
Das Feld <DS> bezeichnet die DataSource und dient der Identifizierung der Datenreihen innerhalb der RRD-Dateien, ist aber auch der Schlüssel der folgenden Arrays.
|
|
</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ält jedoch noch weitere Informationen. Wird <code>process_perdata.pl</code> im sync-Mode verwendet, so sind alle verfügbaren Makros mit den aktuellen Werten verfügbar. Der folgende Ausschnitt ist jedoch zu Gunsten der Lesbarkeit gekürzt.
|
|
</p>
|
|
<pre class="code xml"><span class="sc3"><span class="re1"><NAGIOS<span class="re2">></span></span></span>
|
|
...
|
|
<span class="sc3"><span class="re1"><NAGIOS_SERVICENOTIFICATIONID<span class="re2">></span></span></span>8418<span class="sc3"><span class="re1"></NAGIOS_SERVICENOTIFICATIONID<span class="re2">></span></span></span>
|
|
<span class="sc3"><span class="re1"><NAGIOS_SERVICENOTIFICATIONNUMBER<span class="re2">></span></span></span>0<span class="sc3"><span class="re1"></NAGIOS_SERVICENOTIFICATIONNUMBER<span class="re2">></span></span></span>
|
|
<span class="sc3"><span class="re1"><NAGIOS_SERVICEOUTPUT<span class="re2">></span></span></span>HTTP OK HTTP/1.1 200 OK - 10087 bytes in 0.125 seconds<span class="sc3"><span class="re1"></NAGIOS_SERVICEOUTPUT<span class="re2">></span></span></span>
|
|
<span class="sc3"><span class="re1"><NAGIOS_SERVICEPERCENTCHANGE<span class="re2">></span></span></span>0.00<span class="sc3"><span class="re1"></NAGIOS_SERVICEPERCENTCHANGE<span class="re2">></span></span></span>
|
|
<span class="sc3"><span class="re1"><NAGIOS_SERVICEPERFDATA<span class="re2">></span></span></span>time=0.124811s;;;0.000000 size=10087B;;;0<span class="sc3"><span class="re1"></NAGIOS_SERVICEPERFDATA<span class="re2">></span></span></span>
|
|
<span class="sc3"><span class="re1"><NAGIOS_SERVICEPERFDATAFILE<span class="re2">></span></span><span class="re1"></NAGIOS_SERVICEPERFDATAFILE<span class="re2">></span></span></span>
|
|
<span class="sc3"><span class="re1"><NAGIOS_SERVICEPROBLEMID<span class="re2">></span></span></span>0<span class="sc3"><span class="re1"></NAGIOS_SERVICEPROBLEMID<span class="re2">></span></span></span>
|
|
<span class="sc3"><span class="re1"><NAGIOS_SERVICESTATE<span class="re2">></span></span></span>OK<span class="sc3"><span class="re1"></NAGIOS_SERVICESTATE<span class="re2">></span></span></span>
|
|
<span class="sc3"><span class="re1"><NAGIOS_SERVICESTATEID<span class="re2">></span></span></span>0<span class="sc3"><span class="re1"></NAGIOS_SERVICESTATEID<span class="re2">></span></span></span>
|
|
<span class="sc3"><span class="re1"><NAGIOS_SERVICESTATETYPE<span class="re2">></span></span></span>HARD<span class="sc3"><span class="re1"></NAGIOS_SERVICESTATETYPE<span class="re2">></span></span></span>
|
|
<span class="sc3"><span class="re1"><NAGIOS_SHORTDATETIME<span class="re2">></span></span></span>27-12-2007 13:51:23<span class="sc3"><span class="re1"></NAGIOS_SHORTDATETIME<span class="re2">></span></span></span>
|
|
...
|
|
<span class="sc3"><span class="re1"></NAGIOS<span class="re2">></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ügbar ist.
|
|
</p>
|
|
|
|
<p>
|
|
Aus <code><NAGIOS_SERVICEOUTPUT></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ück zur Übersicht</a> | <a href="/de/pnp-0.6/tpl_custom" class="wikilink1" title="de:pnp-0.6:tpl_custom">Custom Templates</a>
|
|
|
|
</p>
|
|
|
|
</div>
|
|
<!-- SECTION "Verfügbare Variablen" [5178-] --> |