Des graphes dans Nagios avec PNP

Date: 6/12/2007 | Catégories: Open-source,Reseau,Systeme | Tags: ,

---

Cette procédure est obsolète (écrite pour la version 0.4.x de Pnp4Nagios).

=> Merci de consulter cette procédure

---

PNP is not PerfParse est un module permettant à Nagios de stocker dans une base RRD et d'afficher via une interface Web des données provenant de vos plugins Nagios. Actuellement en version de développement (0.4.14 au moment de l'écriture de ce billet), PNP comble un manque important dans Nagios: la génération de graphiques personnalisés intégrés à l'interface Web.

Nous allons dans ce billet installer PNP sur une configuration Nagios existante (cliquez ici pour accèder à des tutoriels d'installation de Nagios).

Update du 24/08/2009: Mise à jour de la procédure pour PNP version 0.4.14 et suppression des informations concernant la version 2.x de Nagios.

Compilation de PNP

On récupère la dernière version des sources et on décompresse (en root):

# cd /usr/src
# wget http://downloads.sourceforge.net/pnp4nagios/pnp-0.4.14.tar.gz
# tar zxvf pnp-0.4.14.tar.gz
# cd pnp-0.4.14

Puis on configure:

# ./configure
General Options:
-------------------------         -------------------
Nagios user/group:                nagios nagios
Install directory:                /usr/local/nagios
HTML Dir:                         /usr/local/nagios/share/pnp
Config Dir:                       /usr/local/nagios/etc/pnp
Location of rrdtool binary:       /usr/bin/rrdtool Version 1.2.15
RRDs Perl Modules:                FOUND (Version 1.2015)
RRD Files stored in:              /usr/local/nagios/share/perfdata
process_perfdata.pl Logfile:      /usr/local/nagios/var/perfdata.log
Perfdata files (NPCD) stored in:  /usr/local/nagios/var/spool/perfdata/

Il faut vérifier que le résultat de cette configuration correspond à votre système, puis ensuite seulement lancer la compilation:

# make all
# make install
# make install-config

Configuration initiale de PNP

Il existe 3 méthodes pour intégrer PNP à Nagios. Dans ce billet, nous allons aborder la seconde (appelée "bulk-mode") qui est un bon compromis entre la complexité d'installation et les performances obtenues.

Dans cette installation "bulk-mode", les données de vos futurs graphes sont collectés dans un fichier temporaire. Ce fichier est traité de manière à intervalles réguliers par le script perl process_perfdata.pl.

La première chose à faire est d'éditer le fichier nagios.cfg et de modifier la configuration:

# sudo vi /usr/local/nagios/etc/nagios.cfg

process_performance_data=1

#
# service performance data
#service_perfdata_file=/usr/local/nagios/var/service-perfdata
service_perfdata_file_template=DATATYPE::SERVICEPERFDATAtTIMET::$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 data
#

host_perfdata_file=/usr/local/nagios/var/hostperfdata
host_perfdata_file_template=DATATYPE::HOSTPERFDATAtTIMET::$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

Reste à éditer le fichier commands.cfg (/usr/local/nagios/etc/objects/commands.cfg sous Nagios 3):

# sudo vi commands.cfg
define command{
command_name    process-service-perfdata
command_line    $USER1$/process_perfdata.pl --bulk=/usr/local/nagios/var/service-perfdata
}

define command{
command_name process-host-perfdata-file
command_line $USER1$/process_perfdata.pl --bulk=/usr/local/nagios/var/host-perfdata
}

Reste à vérifier votre configuration et à relancer Nagios:

# /usr/local/nagios/bin/nagios -v /usr/local/nagios/etc/nagios.cfg
# /etc/init.d/nagios restart

Remarque, si vous rencontrez l'erreur suivant:

Error: Unable to write to temp_path ('/usr/local/nagios/var/spool/checkresults') - Permission denied
Error: Unable to write to check_result_path ('/usr/local/nagios/var/spool/checkresults') - Permission denied

Il faut modifier les droits sur le répertoire en faisant:

# sudo chmod -R 777 /usr/local/nagios/var/spool/checkresults

Puis pour Nagios 3:

# sudo chown -R nagios:nagios /usr/local/nagios/var/hostperfdata

Comment accéder à PNP

Maintenant que l'installation est terminé, vous pouvez accéder à l'interface Web via l'URL suivante: http://AdresseServeurNagios/nagios/pnp/

Voici un aperçu de l'interface:

 

Intégrer PNP à Nagios

Après installation on a donc deux interfaces Web distinctes: celle de Nagios et celle de PNP. Pour intégrer PNP dans Nagios, il faut utiliser les action_url.

 

Sous Nagios 3, c'est dans le fichier template.cfg qu'il faut faire les ajouts:

define host {
name nomdutemplatehost
...
action_url /nagios/pnp/index.php?host=$HOSTNAME$
}

define host {
name nomdutemplateservice
...
action_url /nagios/pnp/index.php?host=$HOSTNAME$&srv=$SERVICEDESC$
}

 

Une fois Nagios redémarré, une nouvelle icône ( ) devrait apparaître à coté des hosts et services concernés:

Vous avez donc maintenant un nouvel outil bien utile intégré à Nagios. Pour aller plus loin (notamment si vous souhaitez écrire vos propres templates), le mieux est de se rendre sur le site officiel de PNP.