====== 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-tar.gz tar -xvzf pnp4nagios-.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 [[web:nginx:konfigurationsbeispiele#nagios|Konfigurationsbeispiele]] Die neue Website lautet [[http:///pnp4nagios]] ==== PopUp ==== Um Popups im Nagios (Moushover über das Graph-Icon) anzuzeigen, muss noch eine Datei kopiert werden. cp /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/de/pnp-0.6/config|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 -P -C -o -l 'Beschreibung_für_Wert' sollte dies so ausgegeben werden SNMP OK - | = 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} ==== Prüfung ==== * werden im Nagios die Performance beim Host oder Service angezeigt? \\ {{::nagios-perfdata.png?200|Nagios Performance Daten}} * hat Nagios process_perfdata.pl aufgerufen?