326 lines
8.5 KiB
HTML
326 lines
8.5 KiB
HTML
|
|
|
|
|
|
<h1><a name="custom_templates" id="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ängig vom verwendeten Check-Command.
|
|
</p>
|
|
|
|
<p>
|
|
Es gibt jedoch Situationen, in denen dieses Verhalten übersteuert werden muss, zum Beispiel dann wenn allgemeingültige Commands definiert wurden.
|
|
</p>
|
|
|
|
<p>
|
|
PNP, speziell process_perfdata.pl, sucht zur Laufzeit für jedes check_command im Verzeichnis etc/check_commands nach einer Config-Datei (<check_command>.cfg) und liest diese, wenn vorhanden, ein.
|
|
Folgende Optionen können darin definiert werden:
|
|
</p>
|
|
|
|
</div>
|
|
<!-- SECTION "Custom Templates" [1-565] -->
|
|
<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 "$ARG2$"
|
|
}
|
|
</pre>
|
|
|
|
<p>
|
|
Die Folge wäre, dass immer das Template check_nrpe.php verwendet werden würde, auch wenn auf dem zu überwachenden Server via NRPE ein ganz anderes Plugin aufgerufen wurde.
|
|
</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ä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ür, dass nur der Inhalt von $ARG1$ als Template-Name verwendet wird. Da in diesem Beispiel $ARG1$ mit dem Wert “load” gefü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>
|
|
<!-- SECTION "CUSTOM_TEMPLATE" [566-1811] -->
|
|
<h2><a name="datatype" id="datatype">DATATYPE</a></h2>
|
|
<div class="level2">
|
|
|
|
<p>
|
|
|
|
Über die Option “DATATYPE” kann beeinflusst werden, mit welchem Datentyp die RRD-Datenbank angelegt werden soll.
|
|
Default ist in diesem Fall “GAUGE”. Für fortlaufende Werte wird aber hier der Datentyp COUNTER benötigt.
|
|
Normalerweise sollten Plugin-Entwickler für Daten von Typ Counter die Einheit “c” verwenden. Dies ist jedoch nicht immer der Fall.
|
|
</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ärt.
|
|
</p>
|
|
|
|
<p>
|
|
Diese Option hat nur Einfluss, wenn die RRD Datenbank neu erstellt wird.
|
|
</p>
|
|
|
|
</div>
|
|
<!-- SECTION "DATATYPE" [1812-2580] -->
|
|
<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ür RRDTool gü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ücksichtigen des Maximum-Wertes aus den Performance-Daten
|
|
|
|
</p>
|
|
<pre class="code">USE_MAX_ON_CREATE = 1</pre>
|
|
|
|
<p>
|
|
Berü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>
|
|
<!-- SECTION "USE_MIN_ON_CREATE und USE_MAX_ON_CREATE" [2581-3154] -->
|
|
<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ö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ü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>
|
|
<!-- SECTION "RRD_STORAGE_TYPE" [3155-3680] -->
|
|
<h2><a name="rrd_heartbeat" id="rrd_heartbeat">RRD_HEARTBEAT</a></h2>
|
|
<div class="level2">
|
|
|
|
<p>
|
|
|
|
<strong>Gültig ab PNP 0.6.1</strong>
|
|
</p>
|
|
<pre class="code">RRD_HEARTBEAT = 305</pre>
|
|
|
|
<p>
|
|
Nach <RRD_HEARTBEAT> 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>
|
|
<!-- SECTION "RRD_HEARTBEAT" [3681-3970] -->
|
|
<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ü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ürde man template Namen wie diesen “_usr_lib_nagios_plugins_check_load_-w_4,4,4_-c_5,5,5” erhalten, was höchst unerwünscht ist, insbesondere wegen den darin enthaltenen Parametern.
|
|
</p>
|
|
|
|
<p>
|
|
<strong>Lösung 1: Die Parameter in eigenständige $ARGn$ auslagern</strong>
|
|
</p>
|
|
|
|
<p>
|
|
Eine einfache Lö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ändlich müsste man immer noch “CUSTOM_TEMPLATE = 1” setzen.
|
|
</p>
|
|
|
|
<p>
|
|
|
|
<strong>Lösung 2: Den remote executor in der command Objekt Definition verstecken</strong>
|
|
</p>
|
|
|
|
<p>
|
|
Eine andere Lö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ürde man dies für <strong>jeden</strong> fern auszufü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ürlich darf “CUSTOM_TEMPLATE = 1” bei dieser Lösung nicht mehr gesetzt werden.
|
|
</p>
|
|
|
|
<p>
|
|
|
|
Welche der obigen Lösungen verwendet wird, ist weitgehend Geschmacksache.
|
|
</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/advanced" class="wikilink1" title="de:pnp-0.6:advanced">PNP in verteilten Umgebungen</a>
|
|
|
|
</p>
|
|
|
|
</div>
|
|
<!-- SECTION "Hints on Template Names" [3971-] --> |