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
PopUp
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.
- Standardaufruf:
./check_procs -a ndo2db -w 1: -c 0: PROCS OK: 2 processes with args 'ndo2db'
- Wrappingscript Beispiel:
#!/bin/bash LINE=`/usr/local/nagios/libexec/check_procs $*` RC=$? COUNT=`echo $LINE | awk '{print $3}'` PROCS=`expr $COUNT - 1` LINE=`echo $LINE | sed "s/: $COUNT /: $PROCS /"` echo $LINE \| procs=$PROCS exit $RC
- neuer Aufruf:
./check_procs.sh -a ndo2db -w 1: -c 0: PROCS OK: 2 processes with args 'ndo2db'| procs=2
- Wrappingscript Beispiel, bei dem die Anführungszeichen Entfernt werden:
#!/bin/bash CMD=`/usr/local/nagios/libexec/check_snmp $*` RETURNCODE=$? OID=`echo $*|awk '{print $8}'` CMDRESULT=`echo ${CMD} | awk '{print $4}' | tr '"' '\000'` echo ${CMD} ${OID}=${CMDRESULT} exit ${RETURNCODE}
- Wrappingscript Beispiel, bei verwendung von check_snmp (hier werden nur Zahlen, evtl. Minuszeichen und Dezimalpunkte als Performancedata verwendet und die evtl. Beschreibung, die man dem check_snmp mitgibt, nicht berücksichtigt):
#!/bin/bash CMD=`/usr/local/nagios/libexec/check_snmp $*` RETURNCODE=$? OID=`echo $*|awk '{print $8}'` CMDRESULT=`echo ${CMD}|sed "s/\"//g"|egrep -o "(-)?[0-9]+(\.[0-9]+)?"` echo ${CMD} ${OID}=${CMDRESULT} exit ${RETURNCODE}