Installation et configuration de Pnp4Nagios en “mode bulk”

Date: 9/09/2010 | Catégories: Nagios,Open-source,Planet-libre | Tags: ,

Hier, j'ai installé un nouveau serveur Nagios en utilisant mon script automatique. J'ai ensuite voulu lui ajouter Pnp4Nagios, le plugin permettant de générer des graphes sur les hosts et services surveillés par Nagios. Malheureusement, la procédure que j'avais écrite à l'époque pour la version 0.4.x de Pnp4Nagios n'est plus valable pour la version 0.6.x.

Voici donc un billet permettant l'installation de Pnp4Nagios 0.6.6 (dernière version disponible aujourd'hui) sur un serveur Nagios opérationnel (procédure validée pour Nagios 3.2.2).

Installation de pré-requis système

Sous un serveur "Debian like", il faut installer les librairies suivantes:

sudo aptitude install rrdtool librrds-perl php5-gd

On doit avant l'installation configurer une variable posant problème dans le module PHP d'apache en éditant le fichier /etc/php5/apache2/php.ini:

; Magic quotes for incoming GET/POST/Cookie data.

magic_quotes_gpc = Off

Compilation de Pnp4Nagios

On récupère l'archive de la version 0.6.6 puis on lance la configuration:

wget https://downloads.sourceforge.net/project/pnp4nagios/PNP-0.6/pnp4nagios-0.6.6.tar.gz

tar zxvf pnp4nagios-0.6.6.tar.gz

cd pnp4nagios-0.6.6

./configure

On doit obtenir le résumé suivant (si ce n'est pas le cas, il doit y avoir d'autres dépendances système à installer):

General Options:

------------------------- -------------------

Nagios user/group: nagios nagios

Install directory: /usr/local/pnp4nagios

HTML Dir: /usr/local/pnp4nagios/share

Config Dir: /usr/local/pnp4nagios/etc

Location of rrdtool binary: /usr/bin/rrdtool Version 1.3.1

RRDs Perl Modules: FOUND (Version 1.3001)

RRD Files stored in: /usr/local/pnp4nagios/var/perfdata

process_perfdata.pl Logfile: /usr/local/pnp4nagios/var/perfdata.log

Perfdata files (NPCD) stored in: /usr/local/pnp4nagios/var/spool

Web Interface Options: ------------------------- -------------------

HTML URL: http://localhost/pnp4nagios

Apache Config File: /etc/apache2/conf.d/pnp4nagios.conf

Puis on compile/installe:

make all

sudo make install

sudo make install-webconf

sudo make install-config

sudo /etc/init.d/apache2 restart

Configuration de Nagios pour prendre en compte Pnp4Nagios

On commence par éditer le fichier /usr/local/nagios/etc/nagios.cfg:

process_performance_data=1

service_perfdata_file=/usr/local/nagios/var/service-perfdata

service_perfdata_file_template=DATATYPE::SERVICEPERFDATAtTIMET::$TIMET$tHOSTNA

ME::$HOSTNAME$tSERVICEDESC::$SERVICEDESC$tSERVICEPERFDATA::$SERVICEPERFDATA$t

SERVICECHECKCOMMAND::$SERVICECHECKCOMMAND$tHOSTSTATE::$HOSTSTATE$tHOSTSTATETYP

E::$HOSTSTATETYPE$tSERVICESTATE::$SERVICESTATE$tSERVICESTATETYPE::$SERVICESTAT

ETYPE$

service_perfdata_file_mode=a

service_perfdata_file_processing_interval=15

service_perfdata_file_processing_command=process-service-perfdata-file

host_perfdata_file=/usr/local/nagios/var/host-perfdata

host_perfdata_file_template=DATATYPE::HOSTPERFDATAtTIMET::$TIMET$tHOSTNAME::$H

OSTNAME$tHOSTPERFDATA::$HOSTPERFDATA$tHOSTCHECKCOMMAND::$HOSTCHECKCOMMAND$tHO

STSTATE::$HOSTSTATE$tHOSTSTATETYPE::$HOSTSTATETYPE$

host_perfdata_file_mode=a

host_perfdata_file_processing_interval=15

host_perfdata_file_processing_command=process-host-perfdata-file

Puis on prends en compte le répertoire des plugins Pnp4Nagios en ajoutant la ligne suivante (à adapté si USER2 est déjà configuré) dans le fichier /usr/local/nagios/etc/objects/resource.cfg:

# Sets $USER2$ to be the path to the PNP4Nagios plugins

$USER2$=/usr/local/pnp4nagios/libexec

Enfin on configure le plugin dans le fichier /usr/local/nagios/etc/objects/commands.cfg (attention il y à deux - avant le bulk... Wodpress n'en affiche qu'un...):

# PNP4nagios

define command{

command_name process-service-perfdata-file

command_line $USER2$/process_perfdata.pl --bulk=/usr/local/nagios/var/service-perfdata

}

define command{

command_name process-host-perfdata-file

command_line $USER2$/process_perfdata.pl --bulk=/usr/local/nagios/var/host-perfdata

}

On relance enfin Nagios pour prendre en compte la configuration:

sudo /etc/init.d/nagios restart

Configuration de Pnp4Nagios

La configuration se fait en accèdant à l'URL suivante: http://monserveurweb.com/pnp4nagios/

Le script install.php devrait être executé. Il fait un check de votre configuration. Si tout est vert, tout est ok :)

Dans ce cas, il est prudent de supprimer ce script:

sudo rm /usr/local/pnp4nagios/share/install.php

Utilisation de Pnp4Nagios

On accède à Pnp4Nagios à partir de la même URL: http://monserveurweb.com/pnp4nagios/

Après quelques minutes, les graphes devrait se mettre à jour.

Que faire en cas de problème ?

Pnp4Nagios fourni un outil pour investiguer les erreurs éventuelles de configuration. Il suffit de lancer la commande suivante:

/usr/local/pnp4nagios/libexec/verify_pnp_config.pl -e -m bulk

Et voili, que les graphes soient !

  • Yoko74

    Hum à tester. Mais quel apport quand on a cacti? Merci pour ton Billet

  • http://www.nicolargo.com NicoLargo

    @Yoko74: Cacti est système de graphe complétement indépendant de Nagios. Il utilise ses propres BD et ne propose pas une “intégration dans Nagios”. Il est beaucoup plus complet et paramétrable que Pnp4Nagios.
    Ce dernier se contente de grapher l’ensemble des services et hosts supervisé par Nagios. Il n’y a aucune action spécifique à faire pour que Pnp4Nagios prennent en compte de nouvelles données à grapher. Pour un serveur de supervision léger, c’est la solution à privilégier.

  • Bf

    Tout d’abord, bonjour et merci de toutes vos contributions !
    Avant de passer des heures à tester ce produit, peut être que l’un d’entre vous pourra m’aiguiller : Quel fonctionnalitées peut apporter cacti, ou pnp4nagios lorsque centreon est déja en place ? Même si ce n’est pas son rôle premier, centreon propose une génération graphique des données récoltées par Nagios, non ?

  • http://www.nicolargo.com NicoLargo

    @Bt: encore une fois il ne faut pas mélanger ces outils. Centreon est une surcouche à Nagios permettant de faire beaucoup (trop ?) plus que Cacti. Cacti est un grapheur indépendant de Nagios permettant de grapher tout et n’importe quoi sans rapport direct avec Nagios. Enfin Pnp4Nagios est un addon de Nagios permettant de grapher uniquement les données supervisées par Nagios.
    Le choix dépend de vos besoins. Pnp4Nagios est parfaitement adapté dans certains cas…

  • Yoko74

    Merci pour l’éclaircissement ;)

  • MSMS

    Excellent article,

    Est-il possible d’intégrer Pnp4Nagios à Centreon ou d’intégrer Cacti à Centreon ?

  • Christophe

    j’ai installé l’addon Pnp4nagios sur une version FAN (centos virtualisée sur une Ubuntu via VMware)
    Après la compilation pas de souci, intégration des différents paramètres, mais ensuite impossible de se connecter : les utilisateurs nagios standard ne fonctionnent pas, root, non plus, nagiosadmin non plus.

    la conf de /ressource.cfg

    # Sets $USER1$ to be the path to the plugins
    $USER1$=/usr/lib/nagios/plugins

    # Sets $USER2$ to be the path to event handlers
    #$USER2$=/usr/lib/nagios/plugins/eventhandlers

    # ajout pour le plugin pnp4nagios
    # Sets $USER2$ to be the path to the PNP4Nagios plugins

    $USER2$=/usr/local/pnp4nagios/libexec

    # Store some usernames and passwords (hidden from the CGIs)
    $USER2$=nagiosadmin
    $USER2=nagiosadmin

    Je ne trouve pas de piste dans la doc ni sur les forums

    l’ajout dans commands.cfg (les chemins dans nagios sont un peu différent de ce qui est indiqué sur la doc)
    define command{

    command_name process-service-perfdata-file

    command_line $USER2$/process_perfdata.pl –bulk=/usr/local/nagios/var/service-perfdata

    }

    define command{

    command_name process-host-perfdata-file

    command_line $USER2$/process_perfdata.pl –bulk=/usr/local/nagios/var/host-perfdata

    }

    le système de test ne renvoie pas d’information pertinente et s’arrête sans avoir fini :
    ./verify_pnp_config.pl -e -d -m bulk

    Check Nagios/Icinga/PNP integration, v0.1.21

    [I] option -e
    [I] OS: CentOS release 5.5 (Final)Kernel on an
    [I] Perl: 5.008008
    [I] Package Manager: /usr/bin/yum
    [D] key:”nagios”

    je seche…
    quelqu’un a une idée pour m’aider?
    Comment et où on configure les utilisateurs qui accèdent à pnp4nagios? Il me semblait que c’était les mêmes que ceux de nagios.

  • stena83

    Bonjour,

    Tout d’abord je tiens à remercier Nico pour ces tutos Nagios qui m’ont bien aidés.

    J’ai installé pnp4nagios et je voulais l’intégrer à Nagios à coté de chaque service.
    J’ai modifié le fichier template.cfg en ajoutant
    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$
    }

    Pour les hosts, cela fonctionne correctement.
    Pour les services, cela ne fonctionne pas car il transforme par exemple $SERVICEDESC$ en “Current Load”, or pnp4nagios remplace les espaces par des “_”.
    Comment modifier la variable $SERVICEDESC$ afin qu’elle remplace les espaces par les “_” ou inversement comment modifier pnp4nagios pour qu’il utilise les bonnes variables ?

    Merci

  • ninja21a

    Bonjour, n’y a t’il pas contradiction entre les fichiers ici :
    /usr/local/pnp4nagios/etc dont les fichiers d’exemple de configuration vont dans /usr/local/pnp4nagios/var/perfdata

    et la configuration de nagios.cfg en rapport aux performances qui utilise /usr/local/nagios/var/service-perfdata

    Merci.

  • magicbret

    En ce qui me concerne, j’utilise une architecture distribuée (Centreon + nagios multiples). Sur les nagios distants, il peut être intéressant pour les clients d’avoir accès au graph (et en cas de rupture du lien avec le central, çà continue à grapher, pour les équipements locaux).
    Est-ce que la modification du nagios.cfg n’entrainera pas d’effet indésirables avec centreon (arrêt des graphs centreon ou autre)

    Et merci pour le très bon tuto ;-)

  • kambs95

    peut-on ajouter pnp4nagios au serveur de supervision nagios-centreon ?