PNP4Nagios : pourquoi faire ?
Shinken (ou autres fork de Nagios) récupère les données de performance (perfdata) à chaque exécution de contrôle. Le traitement des perfdata n'est pas intégré dans le noyau, mais externalisé via des commandes externes : host_perfdata_command et service_perfdata_command, ou via un module (NEB pour Nagios, ou un module du broker pour Shinken).Pnp4Nagios permet de stocker ces données en base RRD (Round-Robin Database) et propose une interface web de visualisation pour les afficher en couleur sur de jolis graphs.
Pnp4Nagios propose plusieurs mode d'interfaçage avec Nagios, très bien décrit sur le site officiel (http://docs.pnp4nagios.org/pnp-0.6/modes). Le plus simple à interfacer avec Shinken étant le 'Bulk Mode with npcdmod', puisque Shinken intègre un module de Broker jouant le même rôle que le NEB npcdmod de Nagios (appelé tout simplement... npcdmod).
Dans ce mode, Nagios (ou Shinken) log les données de performance dans un fichier plat via un Event Broker qui sont ensuite récupérées et traitées par un daemon PNP4Nagios qui consomme ces données. Schématiquement, l'architecture est la suivante :
![]() |
Schéma d'architecture Shinken/PNP4Nagios |
Une fois en place, la console de Pnp4Nagios ressemble à ça :
![]() |
Screenshot PNP4Nagios |
Installation
Les étapes de l'installation de Pnp2Nagios, une fois Shinken fonctionnelle, peuvent dans les 5 suivantes :- Compiler PNP4Nagios
- Configurer PNP4Nagios
- Configurer l'interface web de PNP4Nagios
- Execution du daemon npcd
- Mettre en place le module Shinken npcdmod
1. Compilation de Pnp4Nagios
La configuration est classique : ./configure; make all; make fullinstall.Seule petit détail : les flags du configure à positionner selon la configuration de la machine.
Pour ma part, je n'aime pas trop les installations par défauts dans /usr/local, et j'utilise un user shinken plutôt que nagios, donc à indiquer au configure qui ne le devine pas tout seul :
./configure --prefix=/opt/pnp4nagios --with-nagios-user=shinken --with-nagios-group=shinken --with-rrdtool=/opt/rrdtool-1.4.7/bin/rrdtoolConfigure indique si tout ce passe bien les paramètres utilisées pour la compilation et l'installation :
*** Configuration summary for pnp4nagios-0.6.17 03-25-2012 ***Si tout est bon pour vous, il ne reste plus qu'à compiler et installer.
General Options:
------------------------- -------------------
Nagios user/group: shinken shinken
Install directory: /opt/pnp4nagios
HTML Dir: /opt/pnp4nagios/share
Config Dir: /opt/pnp4nagios/etc
Location of rrdtool binary: /opt/rrdtool-1.4.7/bin/rrdtool Version 1.4.7
RRDs Perl Modules: *** NOT FOUND ***
RRD Files stored in: /opt/pnp4nagios/var/perfdata
process_perfdata.pl Logfile: /opt/pnp4nagios/var/perfdata.log
Perfdata files (NPCD) stored in: /opt/pnp4nagios/var/spool
Web Interface Options:
------------------------- -------------------
HTML URL: http://localhost/pnp4nagios
Apache Config File: /etc/httpd/conf.d/pnp4nagios.conf
Review the options above for accuracy. If they look okay,
type 'make all' to compile.
WARNING: The RRDs Perl Modules are not found on your system
Using RRDs will speedup things in larger installations.
D'abord la compilation des binaires :
Puis l'installation de tout ce qu'il faut :make all
L'installation peut être faite étape par étape en utilisant make install, install-webconf, install-config, install-init, voir la doc du site officielle pour le détail.make fullinstall
2. Configuration de PNP4Nagios
Si tout s'est bien passé jusqu'ici, Pnp4Nagios est installé et prêt à être utilisé dans /opt/pnp4nagios.Toute la configuration est effectuée via le fichier etc/npcd.conf qui contient trois sections :
- Logging (section Logging Options)
- Configuration du daemon (section NEEDED OPTIONS), notamment la directive perfdata_spool_dir qui indique où le daemon va scruter les fichiers à charger
- Configuration du module Nagios ou Shinken (section NPCDMOD OPTIONS), notamment la directive perfdata_file qui indique où Nagios/Shinken va stocker les données de perfdata avant de déplacer à intervalle régulier (perfdata_file_processing_interval) le fichier dans le spool
Le chemin des fichiers RDD est codé en dur dans le script ./process_perfdata.pl : var/perfdata relativement au dossier d'installation de Pnp4Nagios et ne peut pas être modifié.
3 Configuration de l'interface Web de PNP4Nagios
Le fichier de configuration d'Apache fourni par défaut utilise l'authentification de Nagios. l'UI de Shinken n'utilise pas Apache, ces directives doivent donc être adaptées en conséquence. Pour simplement supprimer l'authentification, commenter les lignes suivantes :# AuthName "Nagios Access"L'URL est configurée via la ligne d'alias dans ce même fichier et correspond aux paramètres du ./configure :
# AuthType Basic
# AuthUserFile /usr/local/nagios/etc/htpasswd.users
# Require valid-user
Alias /pnp4nagios "/opt/pnp4nagios/share"Un premier accès au serveur (http://mon_serveur/pnp4nagios) va tomber sur la page de test qui doit être toute verte ;) Si tout est bon, supprimer simplement le fichier share/install.php dans le dossier d'installation de Pnp4Nagios pour accéder au service. Il n'y aura forcement rien à afficher pour l'instant puisque Shinken n'a encore rien envoyé.
4. Execution du daemon npcd
Rien de bien compliqué : le script d'installation a normalement dû déposer un script de démarrage dans /etc/init.d. Lancer donc le daemon classiquement :En fonction de la distribution Linux du serveur, ajoutez si nécessaire le lancement au démarrage à l'aide de chkconfig ou des dossier /etc/rcX.d add-hoc./etc/init.d/npcd start
5. Configuration de Shinken pour alimenter Pnp4Nagios
Il ne reste plus qu'à dire à Shinken de stocker les données de perfdata dans un fichier dump et de l'envoyer dans le spool tel qu'indiqué dans etc/npcd.conf.Le module se configure via le fichier de configuration de l'Arbiter (shinken-specific.cfg par défaut) :
define module{
module_name NPCDMOD
module_type npcdmod
config_file /opt/pnp4nagios/etc/npcd.cfg
}
Puis doit être ajouté dans les modules du broker :
define broker{
broker_name broker-1
...
modules Simple-log,NPCDMOD
}
Stopper Shinken et le redémarrer : si tout va bien, tout marche bien !
Shinken doit enregistrer les perfdata dans le fichier dump de pnp4Nagios (pnp4nagios/var par défaut) puis déplacer ce dump dans le spool à interval régulier (pnp4nagios/var/spool par défaut) pour être consommé par le daemon ncp et finir en fichier RDD dans pnp4nagios/var/perfdata.
Si rien ne se passe, controler le log du broker qui donnera un indice. Par exemple, si le chemin du fichier npcd.conf dans la définition du module NPCDMOD n'est pas bon, on trouvera cette jolie erreur :
2012-05-03 17:34:52,240 [1336059292] [broker-1] Back trace of this remove : Traceback (most recent call last):
File "/opt/shinken/shinken/modulesmanager.py", line 171, in get_instances
inst = module.get_instance(mod_conf)
File "/opt/shinken/shinken/modules/npcdmod_broker.py", line 55, in get_instance
instance = Npcd_broker(plugin, config_file, perfdata_file, perfdata_spool_dir, perfdata_spool_filename, sleep_time)
File "/opt/shinken/shinken/modules/npcdmod_broker.py", line 76, in __init__
raise Exception('npcdmod: An error occurred process your config file. Check your perfdata_file or perfdata_spool_dir')
Exception: npcdmod: An error occurred process your config file. Check your perfdata_file or perfdata_spool_dir
Aucun commentaire:
Enregistrer un commentaire