jeudi 3 mai 2012

Installation de PNP4Nagios sur Shinken

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
Coté Shinken, les étapes 1 et 2 sont le fonctionnement normal et l'étape 3 est réalisée par le module de Broker npcdmod. Coté PNP4Nagios, l'étape 4 est effectuée à intervale de temps régulier par le daemon npcd (ne pas oublier de le lancer !) qui dans la foulée lance le script process_perfdata.pl qui réalise l'étape 5.

Une fois en place, la console de Pnp4Nagios ressemble à ça :

Screenshot PNP4Nagios
Screenshot PNP4Nagios

Installation

Les étapes de l'installation de Pnp2Nagios, une fois Shinken fonctionnelle, peuvent dans les 5 suivantes :

  1. Compiler PNP4Nagios
  2. Configurer PNP4Nagios
  3. Configurer l'interface web de PNP4Nagios
  4. Execution du daemon npcd
  5. 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/rrdtool
Configure 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 ***


  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.
Si tout est bon pour vous, il ne reste plus qu'à compiler et installer.
D'abord la compilation des binaires :
make all
Puis l'installation de tout ce qu'il faut :
make fullinstall
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.

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
Rien n'est vraiment à modifier par rapport aux fichier d'exemple, à part peut être le logging dans un fichier au lieu de syslog selon les goût

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"
#       AuthType Basic
#       AuthUserFile /usr/local/nagios/etc/htpasswd.users
#       Require valid-user
L'URL est configurée via la ligne d'alias dans ce même fichier et correspond aux paramètres du ./configure :
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 :
/etc/init.d/npcd start
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.

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