Inhaltsverzeichnis

Pnp4nagios

PNP4Nagios ist ein grafisches Anzeigetool, welches Verläufe verschiedener Stati der einzelnen Hosts und deren Services zeigt.
Es können nicht nur auf der PNP-Website die Graphen angezeigt werden, es werden auch Moushover-Graphen auf der Nagios-Website angezeigt.

PNP4Nagios zeichnet grundsätzlich alle PerformanceData fähigen Checks auf.

Installation

Zunächst Voraussetzungen installieren.

apt-get install rrdtool

Nun pnp4nagios herunterladen und installieren.

wget http://downloads.sourceforge.net/project/pnp4nagios/PNP-0.6/pnp4nagios-<VERSION>tar.gz
tar -xvzf pnp4nagios-<VERSION>.tar.gz
cd pnp4nagios
./configure
make all
make fullinstall

Danach unbendingt den Apache2 konfigurieren und neustarten.

Zunächst die Apache-Konfig von PNP4Nagios anpassen, da sonst die Seite nicht aufgerufen werden kann.

vi /etc/apache/conf.d/pnp4nagios.conf

Hier folgende Zeile ersetzen:

--- RewriteRule "^.*$" "index.php/$0" [PT]
+++ RewriteRule .* index.php?kohana_uri=$0 [PT,L,QSA]

Danach noch folgendes ausführen.

a2enmod rewrite
service apache2 restart

Eine passende nginx Konfiguration findet man unter Konfigurationsbeispiele
Die neue Website lautet http://<HOST>/pnp4nagios

Um Popups im Nagios (Moushover über das Graph-Icon) anzuzeigen, muss noch eine Datei kopiert werden.

cp <PFAD_ZU_PNP4Nagios_QUELLEN>/contrib/ssi/status-header.ssi /usr/local/nagios/share/ssi

Nach dem nächsten Nagios Restart können PopUps eingeblendet werden.

Die Popup-Größe kann hier angepasst werden (z.B. auf „auto“):

vi /usr/local/pnp4nagios/etc/config_local.php
$conf['popup-width'] = "auto";

Die Nagios Templates erweitert man um folgende Einträge:

define host {
   name       graphed-host
   action_url /pnp4nagios/index.php/graph?host=$HOSTNAME$&srv=_HOST_' class='tips' rel='/pnp4nagios/index.php/popup?host=$HOSTNAME$&srv=_HOST_
   register   0
}

define service {
   name       graphed-service
   action_url /pnp4nagios/graph?host=$HOSTNAME$&srv=$SERVICEDESC$' class='tips' rel='/pnp4nagios/popup?host=$HOSTNAME$&srv=$SERVICEDESC$
   register   0
}

Konfiguration

PNP4Nagios kann auf verschiedene Weise konfiguriert und benutzt werden. Hier nur zwei Möglichkeiten der Konfiguration.
Weitere Infos sind zu finden unter http://docs.pnp4nagios.org.

Gundsätzlich muss in der nagios.cfg folgende Direktiven aktiviert sein:

process_performance_data=1

Synchronous Mode

Vorteil: Einfach Einrichtung
Nachteil: Eher für kleine Nagios installationen gedacht, da hier jeder check einen weiteren Perfdata-Check (also einen weiteren Command) ausführt. Dies führt zu höherer Auslastung.

service_perfdata_command=process_service_perfdata_file
host_perfdata_command=process_host_perfdata_file

Danach müssen diese Befehle in Nagios konfiguriert werden, um darüber die RRD-Datenbank zu füllen.

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
}

Bulk Mode

Vorteil: CPU-Freundlich, da hier nicht bei jedem Check der Perfdata-Check angeworfen wird. Nagios sammelt erst die Daten und führt selbstständig um die Verarbeitung dieser.
Nachteil: Aufwändigere Konfiguration.
Hier muss folgendes in der nagios.cfg konfiguriert werden.

process_performance_data=1
#
# 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

Auch die Commands sehen etwas anders aus:

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
}

ACHTUNG
Evtl. muss der Timeout-Wert in der process_perfdata.cfg erhöht werden.
Im Bulk-Mode werden ja erst Daten gesammelt und danach gemeinsam verarbeitet. Dies kann zu längeren Verarbeitungszeiten führen.

Datenformat

WICHTIG: Die Ausgabe für einen PerformanceData fähigen Check muss ohne Leerzeichen ausgegeben werden.
Wenn man also folgenden Befehl ausführt:

/usr/local/nagios/libexec/check_snmp -H <HOSTADRESSE> -P <PROTOKOLL> -C <COMMUNITYNAME> -o <OID> -l 'Beschreibung_für_Wert'

sollte dies so ausgegeben werden

SNMP OK - <OID> <AUSGELESENER_WERT> | <OID>=<AUSGELESENER_WERT>

Es sind hier also keine Anführungs- oder Leerzeichen o.ä. enthalten.

Wrappingscript

Ein Wrapping-Script für nicht PerformanceData fähigen Checks gibt es unter http://docs.pnp4nagios.org/de/pnp-0.6/wrapper.
Hier das Beispiel-Script für check_procs.

Prüfung