Fork me on GitHub
Translations of this page:

Nouveautés de la version PNP 0.6.x

Prévu PNP 0.6.x

Le travail sur la version 0.6.x est toujours en cours.

Depuis la version 0.6.x nous sommes passés de subversion à GIT. Le code source est disponible chez sourceforge.

Fonctionnalités déjà présentes

  • Affichage web se basant sur Kohana
  • Affichage web se basant sur jQuery Themes
  • Fonctions javascript se basant sur des plugins jQuery
  • process_perfdata.pl est capable d'utiliser une base RRD par source de données
  • Amélioration de l'installateur. Possibilité de spécifier l'emplacement des layout –with-layout
  • Les erreurs RRD sont maintenant affichées en image. Plus d'image manquante.
  • Les templates PNP n'ont plus la possibilité de changer les paramètres internes
  • Les templates en version 0.4.x sont toujours utilisables
  • Fonction de génération du PDF recodées
  • Template par défaut (default.php) mieux optimisée
  • Export des bases RRD au format XML, CSV and JSON à l'aide de la fonction “xport” de RRDtool
  • Fonctions des pages recodées
  • Les pages d'erreurs vous renvoie au page en ligne FAQ
  • Popup au survole de la souris dans nagios via le plugin jQuery.clueTip
  • Support de rrdcached

Retour a l'index | Pré-requis

A propos de PNP

Besoin système

PNP à besoin de données de performance valide de la part des plugins nagios.

Mais qu'appelle t'on les données de performance ?

Les sorties des plugins en nagios jusqu'à la version 2.x sont limitées à une ligne. Quand le plugin donne des données de performance, la sortie se scinde en deux parties. Le pipe (“|”) sert à délimiter ces deux parties.

Exemple check_icmp :

 OK - 127.0.0.1: rta 2.687ms, lost 0% | rta=2.687ms;3000.000;5000.000;0; pl=0%;80;100;;

Voici la partie à gauche du pipe :

 OK - 127.0.0.1: rta 2.687ms, lost 0%

et ci-dessous les données de performance :

  rta=2.687ms;3000.000;5000.000;0; pl=0%;80;100;;

Les données de performance sont conçues pour être traitées automatiquement. Le format est spécifié dans le document Guide du développeur (vous trouverez rapide du format à cet emplacement). Voici néanmoins un petit récapitulatif de la norme :

  rta=2.687ms;3000.000;5000.000;0;
   |    |  |    |         |     | |
   |----|--|----|---------|-----|-|----- * labelle 
        |--|----|---------|-----|-|----- * valeur courante
           |----|---------|-----|-|----- unité (UOM = UNIT of Measurement) 
                |---------|-----|-|----- seuil de l'alerte warning
                          |-----|-|----- seuil de l'alerte critique 
                                |-|----- valeur minimum
                                  |----- valeur maximum
                                  

Les champs marqués avec * sont obligatoire. Tous les autres sont optionnels.

Plusieurs séries de données peuvent être spécifiées en les séparant par des espaces. Si le label contient des blancs, il faut l'entourer de quote simple (').

Prérequis logiciels

  • Perl >= 5.x sans dépendance supplémentaire
  • RRDtool >= 1.x, voir 1.2 mais pas obligatoire
    Attention: l'installation de RRDtool sans gestionnaire de paquet peut mener à des problèmes de fontes dejavu absente. Si vous obtenez des graphiques sans texte, il s'agit peut-être de l'origine de votre problème.
  • PHP >= 5.1.6 pour le moteur web Kohana
  • Nagios >= 2.x ou Icinga
  • Kohana à besoin du module “mod_rewrite”. Pour plus de détails, merci de vous reporter à la documentation spécifique de votre serveur web.

Licence

PNP est sous licence GPL 2

Téléchargement

Le développement de PNP s'organise autour de Sourceforge.Net. PNP est enregistré sous le nom “PNP4nagios”.

La version stable 0.4.x actuelle est disponible à l'emplacement suivant : Sourceforge Download

Vous pouvez également utiliser la dernière version de développement de la 0.4.x qui est généré automatiquement chaque jour depuis notre dépot SVN.

Depuis la version PNP 0.6.x, le code source est passé de SVN à GIT.

La version actuelle de développement peut être consulté à tout moment sur http://pnp4nagios.git.sourceforge.net/. En cliquant sur version de développement PNP téléchargera une archive avec la dernière version.

Support

AVANT de demander du support, merci de vous assurer d'avoir vérifié certaines choses dans l'article vérification de votre installation.

Les développeurs et les contributeurs sont également présent sur http://www.nagios-portal.org et seront tenus au courant de nouveau posts dans la section PNP. Il vous sera demandé de poster en anglais.
Après vous être enregistré en tant qu'utilisateur, compléter votre profil en précisant la version de votre OS ainsi que la version de PNP. Précisé également si vous utilisé un package de la distribution ou si vous avez compilé le programme par vous même. Une fois votre problème résolu, merci de marquer le titre de votre post avec ”[solved]”. Ça aidera les autres utilisateurs à trouver une solution à leur problème.

Les mailing lists sur Sourceforge peuvent-être utilisé pour obtenir du support (merci de formuler vos demandes en anglais) :

pnp4nagios-users: mailing-list des utilisateurs pour les questions sur la configurtion. Merci de bien préciser votre version d'OS ainsi que la version de PNP.

pnp4nagios-devel: mailing-list de développement pour les demandes de fonctionnalitées ou les rapports de bug. Merci de bien préciser votre version d'OS ainsi que la version de PNP.

pnp4nagios-checkins: mailing-list du suivi de l'activité du développement.

Stockage

Les données de performance sont stockées en base RRD (RRDtool). Ceci veut dire que vos vieilles données à la fin du fichier RRD se feront remplacées par de nouvelles valeurs au début du fichier.

Il existe plusieurs intervales avec différentes résolutions. Les valeurs par défaut permettent de stoquer une valeur toutes les minutes pendant deux jours, une valeur toutes les 5 minutes pendant 10 jours, une valeur toutes les 1/2 heures pendant 90 jours et une valeur toutes les 6 heures pendant 4 ans. L'augmentation de l'intervale va provoquer l'agrégation des valeurs ayant pour conséquence de réduire les valeurs max. Ceci n'est pas un bug de PNP.

L'utilisation de ce format garantie que la taille des fichiers ne changera pas au cours du temps. Chaque source de données prendra environ 400 Ko.

Statistiques et lien vers Sourceforge

L'art de collecter des données

PNP supporte plusieurs modes d'insertion des données de performance. Les différences présentent entre les différents modes seront fonction de la complexité ainsi que des besoins de performances.

L'image suivante montre la connection entre nagios, PNP et RRDtool

Nagios appel une commande pour chaque machine et chaque services sur lesquels les données de performances doivent être récupéré. En fonction du mode de fonctionnement, les données seront passées directement à process_perfdata.pl ou seront écrites dans un fichier temporaire pour être traité plus tard. process_perfdata.pl écrit les méta-données dans des fichiers XML et stockent les données de performance dans des fichiers RRD via l'utilisation de RRDtool.

Avant de choisir un mode, veuillez vous référer à la documentation afin de choisir la meilleure solution pour votre installation.

Comparaison des différents modes

Mode synchronisé

Le “mode synchrone” est le plus simple à mettre en œuvre. Nagios appellera le script perl process_perfdata.pl pour traiter les données de chaque service et machine. Le mode synchrone devrait fonctionner correctement jusqu'à environ 1.000 services avec un intervalle de test toutes les 5 minute.

Mode bulk

En mode bulk (par paquet), Nagios écrit les données de performance dans un fichier temporaire. Après un certain laps de temps défini, le fichier sera traité en un seul bloque puis sera supprimé.

Le nombre d'appel à process_perfdata.pl est ainsi grandement réduit. En fonction du temps et du nombre de données à récolter, vous aurez beaucoup moins d'appels. Attention toutefois, process_perfdata.pl mettra plus de temps à se lancer.

NB Si vous utilisez ce mode, gardez un oeil sur le temps pris par process_perfdata.pl pour se lancer. En effet, pendant ce temps, nagios ne lancera aucune exécution.

extrait du fichier var/perfdata.log :

2007-10-18 12:05:01 [21138] 71 Lines processed
2007-10-18 12:05:01 [21138] .../spool/service-perfdata-1192701894-PID-21138 deleted
2007-10-18 12:05:01 [21138] PNP exiting (runtime 0.060969s) ...

71 lignes ont été traitées en 0.06 seconde. Il s'agit ici de la quantité de données générés par 2000 services en utilisant un intervalle d'exécution de 10 secondes. Ça veut dire que nous avons bloqué nagios pendant exactement 0.06 secondes.

Mode bulk avec NPCD

De tous les points de vue, il s'agit de la méthode bloquant le moins le process nagios.

Nagios utilise toujours un fichier temporaire pour stocker ses données et exécute régulièrement une commande. Au lieu de lancer directement le traitement avec process_perfdata.pl, le fichier est déplacé dans un répertoire spool. Comme le déplacement d'un fichier est pour ainsi dire instantané, Nagios peut donc continuer à travailler sur des tâches essentielles.

Le démon NPCD (Nagios Performance C Daemon) surveillera le contenu du répertoire et passera au script process_perfdata.pl les nouveaux fichiers. Dans ce mode, la gestion des données de performance est complétement découplé du fonctionnement de nagios. NPCD est capable de lancer plusieurs threads de traitement afin de traiter les données.

Mode bulk avec npcdmod

Ici npcdmod.o est un module NEB. Ce module réduit la configuration du “mode bulk avec NPCD” de deux lignes dans nagios.cfg

Ce mode est similaire au “mode bulk avec NPCD” et il a exactement les mêmes fonctionnalités avec les mêmes performances.

Gearman Mode

TODO

Votre choix

Le mode à mettre en oeuvre dépendra de la taille de la configuration de votre nagios. Vous trouverez des éléments de réponse tout au long de la documentation.

Retour a l'index | installation

Téléchargement de PNP 0.6.x

Dernière version stable de PNP

Vous avez accès aux derniers changement sur pnp4nagios.git.sourceforge.net

La dernière version est pnp4nagios-0.6.7.tar.gz

Version en cours de développement

pnp4nagios-head.tar.gz

Vous obtiendrez la dernière version de la branche GIT HEAD.


Dernière mise à jour: Vendredi 12 Aout 13:55:01 CEST 2011

ChangeLog

pnp-0.6.15 ??/??/2011

pnp-0.6.14 08/05/2011

  • Feature: Webinterface for mobile devices based on jQuery Mobile
    ( http://jquerymobile.com/ )
  • Feature: Zoom based on jQuery plugin imgAreaSelect
    ( http://odyniec.net/projects/imgareaselect/ )
  • Feature: New template check_mssql_health.php
  • Bugfix: Fixed popups to work under nginx ( Joram Agten )
  • Bugfix: Helper rrd::vdef() fixed
  • Update: jQuery update to 1.6.2
  • Update: jQuery-ui update to 1.8.14

pnp-0.6.13 05/19/2011

  • Feature: New option –ignore-hosts added to check_pnp_rrds.pl ( by Jochen Bern )
  • Feature: New options zgraph_width and zgraph_height in config.php ( Mike Liebsch )
  • Bugfix: rrd_convert.pl: parse_xml_filename() regex fix
  • Info: Version used by OMD-0.48 OMD

pnp-0.6.12 04/22/2011

  • Feature: mod_gearman support added
  • Feature: rrd_convert.pl is now able to convert all RRDs from RRD_STORAGE_TYPE=SINGLE to RRD_STORAGE_TYPE=MULTIPLE
  • Feature: New template check_gearman.php
  • Feature: Install process_perfdata.cfg and npcd.cfg by default
  • Bugfix: rrd_convert.pl is now able to parse xml dumps created by rrdtool 1.4.x
  • Bugfix: process_perfdata.pl default timeout value set to 15 seconds

pnp-0.6.11 01/15/2011

  • Bugfix: urldecoding fixed
  • Bugfix: Zoom in/out is working again ( Reported by Thorben Soehl )
  • Featue: npcd.cfg - New option perfdata_file_processing_interval used by npcdmod
  • Info: Version used by OMD-0.46 OMD

pnp-0.6.10 12/15/2010

  • Feature: Add RRDTool Option –only-graph if graph height is below 32px to create thumbnails
  • Feature: RRDTool Option –width and –height is now allowed in templates
  • Feature: RRDTool DS Type for UOM of “c” changed from COUNTER to DERIVE
  • Feature: Pass query string from special controller to image controller ( Matthew Garrett )
  • Feature: Authorisation against mk_livestatus API added
  • Feature: Sample nginx webserver config added ( by evax@users.sourceforge.net )
  • Feature: Kohana backport to support PHP 5.1.6 ( Kudos to Andreas Ericsson )
  • Bugfix: Sort list of special templates
  • Bugfix: Urlencode hostname and service description ( Reported by Yannick )
  • Bugfix: corrected warning/critical thresholds in ticker/alerter functions

pnp-0.6.7 09/27/2010

  • Bugfix: Page config parser fix (Beau Gunderson)
  • Bugfix: Zoom window size fixed (Report by Rudolf Labuschagne)
  • Bugfix: Fixed undefined offset while using 'ds_name' in templates (Reported by Vladimir Bilik)
  • Bugfix: Npcdmod respects process_perf_data option used in hosts and services definitions ( Reported by Wolfgang Barth )
  • Template: New Template check_nagiostats.php used with check_nagiostats written by Jochen Bern

pnp-0.6.6 08/07/2010

  • Bugfix: Fixed max amount of graphs per template
  • Bugfix: Autodetect PNP base URL
  • Bugfix: Too short npcdmod perfdata_template to take perfdata + overhead, increased +1024byte
  • Bugfix: Ignore files in var/perfdata and check for empty directories
  • Bugfix: Reducing memory usage while parsing page config (Laurent Freval)

pnp-0.6.5 07/09/2010

  • Feature: Special Templates are back tpl_special
  • Feature: New rrdtool helper functions makes template design easier tpl_helper
  • Feature: config.php → 'recursive_template_search' is enabled by default
  • Feature: config.php → 'template_dirs' is now an array of directorys to search for PNP templates

pnp-0.6.4 06/03/2010

  • Update: jQuery Update to 1.4.2
  • Update: jQuery-ui Update to 1.8
  • Feature: New configure Option –with-base-url
  • Template: New template check_ntp_time.php (Mathias Kettner)
  • Feature: New i18n files for fr_FR (Yannig Parre)
  • Feature: New jQuery Theme 'multisite'

pnp-0.6.3 03/16/2010

  • Feature: New helper script libexec/rrd_convert.pl → rrd_convert
  • Bugfix: Ignore old XML files while building the service list
  • Template: New template check_hpasm.php
  • Bugfix: Installer now checks for json_decode()
  • Workaround: Allow “trailing unfilled semicolons”. Workaround for nsclient++
  • Template: Updates for check_openmanage.php, check_hp_bladecenter.php and check_dell_baldecenter.php ( Trond Hasle Amundsen )”

pnp-0.6.2 12/23/2009

  • Feature: XML_WRITE_DELAY option added to process_perfdata.cfg as suggested by Mathias Kettner
  • Feature: New template integer.php
  • Update: FPDI update to 1.3.1
  • Feature: PNP will now work with lighttpd and php-cgi
  • Template: check_mk-ps.perf.php added ( by Mathias Kettner )
  • Feature: PNP will now work without mod_rewrite → webfe
  • Bugfix: Wrong pdf link used on site 'pages' and 'basket'
  • Bugfix: Incorrect group permissions on spool directory

pnp-0.6.1 11/22/2009

  • Feature: RRD heartbeat per check_command → tpl_custom
  • Feature: New config.php option pdf_graph_opt
  • Feature: Recognize the 'background_pdf' option in page definitions → pages
  • Feature: Recognize the 'source' option in page definitions → pages
  • Feature: Array $TIMERANGE now available for templates → timeranges
  • Bugfix: ./configure –sysconfdir no longer ignored
  • Feature: Store internal runtime statistics on a per minute base
  • Feature: Added two widgets views/widget_menu.php and views/widget_graph.php

pnp-0.6.0 10/30/2009

  • Webfrontend based on Kohana
  • Webfrontend based on jQuery Themes
  • Javascript-functions using jQuery plugins
  • process_perfdata.pl will be able to use one RRD database per datasource
  • improved installer. Specification of directory layouts using –with-layout
  • RRDtool errors are now displayed as images. no more missing images
  • PNP templates cannot overwrite internal variables anymore
  • PNP templates of version 0.4.x can still be used
  • PDF functions recoded
  • Template default.php optimized
  • Export from RRD databases into XML, CSV and JSON format using the RRDtool “xport” function
  • Page functions recoded
  • Error pages links to online FAQ
  • Mouseover Popup in Nagios frontend via jQuery.clueTip plugin
  • Full support of rrdcached

Retour a l'index | mode PNP

Mise à jour en version 0.6.x

L'interface web a été complètement réécrite et est maintenant basé sur le gestionnaire PHP Kohana. Ce changement a eu des conséquences sur les dépendances qui doivent être vérifiées avant la mise à jour.

NB: Dans un premier temps, la mise à jour fonctionne comme une nouvelle installation. Ce n'est qu'après que nous verrons les changements spécifiques.

Auparavant, si nous n'utilisions aucune option avec le ./configure, PNP s'installait par défaut dans /usr/local/nagios.

Dorénavant, le ./configure de PNP 0.6.x s'installe dans le répertoire /usr/local/pnp4nagios. Il est donc maintenant vu comme une application à part.

NB: Il suffit simplement de recopier les anciens fichiers rrd de l'ancien emplacement au nouveau. Ce sont eux qui contiennent les données. Pour les fichiers *.xml, c'est dernier sont recréés à chaque mise à jour. Comme la structure interne de ces fichiers a changé, vous ne pourrez pas les utiliser tel quel.

Comparaison des répertoires

SOmmaire d'une installation de PNP 0.4.14 :

./configure
...
*** Configuration summary for pnp 0.4.14 05-02-2009 ***

  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.3.1
  RRDs Perl Modules:                FOUND (Version 1.3001)
  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/

Sommaire d'une installation PNP 0.6.0 :

./configure
...
*** Configuration summary for pnp4nagios-0.6.0 07-30-2009 ***

  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

Regardez bien ces lignes de paramètres et si elles correspondent bien à votre stratégie de migration.

Ajustements

Les paramètres de l'option action_url ont changés. Au lieu de ”/nagios/pnp”, l'URL est devenue ”/pnp4nagios” et au lieu de “index.php”, il faut maintenant utiliser “graph”.

define host {
  name       host-pnp
  register   0
  action_url /pnp4nagios/graph?host=$HOSTNAME$
}

define service {
  name       srv-pnp
  register   0
  action_url /pnp4nagios/graph?host=$HOSTNAME$&srv=$SERVICEDESC$
}

La définition du popup de prévisualisation a changée de la même manière :

define host {
   name       host-pnp
   action_url /pnp4nagios/graph?host=$HOSTNAME$' class='tips' rel='/pnp4nagios/popup?host=$HOSTNAME$
   register   0
}

define service {
   name       srv-pnp
   action_url /pnp4nagios/graph?host=$HOSTNAME$&srv=$SERVICEDESC$' class='tips' rel='/pnp4nagios/popup?host=$HOSTNAME$&srv=$SERVICEDESC$
   register   0
}

Attention: Ce n'est pas une erreur que la chaîne avant et après “class” ne contiennent qu'un seul quote (').

Ceci peut-être utilisé indifféremment avec Nagios 2.x et 3.x.

Les variables dans les fichiers du répertoire template doivent être absolument initialisé avant la première utilisation.

Exemple :

$lower = ""

Auparavant, vous étiez en mesure de concaténer des variables qui n'étaient pas initialisées.

Exemple:

foreach ($DS as $i) {
    $def[1] .= "DEF:var$i=$rrdfile:$DS[$i]:AVERAGE " ;

Il faut maintenant changer ceci en :

$def[1] = "";
foreach ($DS as $i) {
    $def[1] .= "DEF:var$i=$rrdfile:$DS[$i]:AVERAGE " ;


Les constantes dans les fichiers de template ne fonctionnent plus. Il faut maintenant les convertir en variables :

define("_WARNRULE", '#FFFF00');

sera changé en

 $WARNRULE = '#FFFF00';

Il faudra bien sûr à changer toutes les occurrences de votre constante ;-).

Scénario de migration en utilisant NPCD

  1. Configurer la nouvelle plateforme
  2. procéder à une nouvelle installation et préparez vous à ce nouveau fonctionnement
  3. faîte une sauvegarde de l'ancienne installation
  4. installez PNP 0.6.x dans le répertoire /usr/local/pnp4nagios
  5. make install-config
  6. make install-webconf
  7. recharger apache
  8. tester la configuration Apache
    1. l'appel à /pnp4nagios vous renverra que les répertoire de données de performances sont vide
  9. créer /usr/local/pnp4nagios/etc/npcd.cfg depuis npcd.cfg-sample
    1. vérifier les chemins et adapter en fonction de ceux de la version 0.4.x si besoin
  10. ajuster les chemins dans nagios.cfg pour pointer sur la nouvelle installation de PNP
  11. ajuster les chemins dans la définition des commandes
  12. stopper npcd à l'aide de /etc/init.d/npcd stop
  13. make install-init installe le nouveau script init de npcd
  14. /etc/init.d/nagios stop
  15. copier /usr/local/nagios/share/perfdata to /usr/local/pnp4nagios/var/perfdata. Attention: faîtes gaffe aux permissions !
  16. /etc/init.d/npcd start
  17. /etc/init.d/nagios start

Retour a l'index | mode PNP

Installation

Nous allons expliquer comment installer PNP4Nagios ci-dessous. Pour suivre ce document il faut que nagios fonctionne et soit installé dans /usr/local/nagios .
Attention: L'article ci-dessous a été écrit pour la version développeur PNP 0.6.0.
Merci de noter que PNP doit être configuré après l'installation.

Installation et plus

L'installation de PNP est contrôlée par makefiles. Après avoir lancé ./configure, votre système est analysé et les variables sont transférés aux makefiles.

Décompressez PNP en tant qu'utilisateur root:

tar -xvzf pnp4nagios-HEAD.tar.gz
cd pnp4nagios

Lancez ./configure à partir du répertoire pnp4nagios.

./configure

Note: Si l'on ne spécifie aucune option, l'utilisateur et le groupe par défaut seront “nagios”. Si vous avez configuré un autre utilisateur pour faire fonctionné Nagios, vous devez utiliser les paramètres suivants ”–with-nagios-user” et ”–with-nagios-group”, respectivement. Avec un utilisateur et un groupe de nom icinga, la commande est

./configure --with-nagios-user=icinga --with-nagios-group=icinga

Une fois lancé, des lignes vont défiler à l’écran. Les dernières lignes ci-dessous sont importantes.

*** Configuration summary for pnp4nagios-0.6.2 23-12-2009 ***

  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.2.12
  RRDs Perl Modules:                FOUND (Version 1.2012)
  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


  Review the options above for accuracy.  If they look okay,
  type 'make all' to compile.

Les chemin doivent être vérifiés. Si les chemins affichés ne sont pas correct, ils doivent être modifiés en utilisant ./configure avec les options appropriées.
Attention: “Location of rrdtool binary” veut dire le chemin avec le nom de l’exécutable! Si nécessaire, il peut être spécifié en utilisant la syntaxe suivantes:

   ./configure --with-rrdtool=/usr/local/rrdtool-1.2.xx/bin/rrdtool
   ./configure --help 

Montre toutes les options supportés.

Lancer

   make all

compile les composants comme NPCD qui sont écrie en C.

   make install

copie tous les fichiers au bon endroit dans votre système de fichiers. Les chemins utilisés sont ceux qui vous on été montrés lors de l'utilisation de la commande ./configure.

Après l'installation du programme et des fichiers HTML, vous pouvez copier l'exemple de configuration dans le dossier de configuration de votre serveur web

   make install-webconf

Optionnellement, le lancement de make install-config, vous copie les fichiers de configuration pour process_perfdata.pl et npcd dans etc/pnp.

   make install-config

Pour installer le script de lancement automatique d'NPCD lors du démarrage du serveur, lancez:

   make install-init

Pour lancer toutes les commandes précédantes les unes après les autres, lancez:

   make fullinstall

Attention: Après avoir copié les fichiers de configuration du serveur web, vous devez redémarrer votre serveur web (service httpd restart ou /etc/init.d/apache2 restart, selon votre distribution).

Mise à jour

La mise a jour vers la version 0.6.x se passe (a peu prêt) de la même manière que l'installation. Notez que vous devez invoquez ./configure avec les même option que vous aviez utilisé lors de la première installation. Vérifiez si vous avez fait des changement dans share/templates.dist. Vos templates perso doivent être placé dans le dossier share/templates pour ne pas être écrasées.
Attention: Si vous avez changer config.php vous devez en faire une sauvegarde avant qu'il ne soit écrasé par la commande make install-config.

Vous pouvez ignorer make install-webconf et make install-init car rien ne change entre les différentes versions 0.6.x.

Les composants

Après l'installation tous les composants de PNP on été copier dans les emplacements suivant:

Les fichiers PHP pour l'interface web dans

 /usr/local/pnp4nagios/share/pnp

Le script process_perfdata.pl dans

 /usr/local/pnp4nagios/libexec

Les examples de configuration avec le suffixe -sample dans

 /usr/local/pnpnagios/etc

Le fichier de config config.php pour l'interface web dans

 /usr/local/pnp4nagios/etc

Retour a l'index | configuration

Configuration

La configuration des différences modes des traitement des données de performances vas être expliqué ci-dessous.

Mode Synchronisé

Le mode synchronisé est le plus simple pour intégrer le collecteur de donnée process_perfdata.pl dans nagios. Tous les évènement vos déclencher l'exécution de process-service-perfdata.

Dans un premier temps vous devez activer la collecte des données de performance (process_performance_data) dans le fichier nagios.cfg. Notez que cette directive est surement déjà présente et configurer par défaut a “0”.

 process_performance_data=1

La collecte des données de performance doit être désactivé dans la définition de chaque Host ou service pour lequel vous NE SOUHAITER PAS collecter ces données.

define service {
   ...
   process_perf_data 0
   ...
}

Depuis Nagios 3.x il est possible de désactiver l'export des variables d'environnement (Pour optimiser au maximum les performances du system). Malheureusement cette directive doit être activée pour permettre l'utilisation du mode synchronisé. Soit vous utilisez la valeur par défaut (ce qui veux dire que l'export est activé) ou vous pouvez définir la directive dans nagios.cfg

enable_environment_macros=1

En plus de cela, la commande pour traiter les données de performance doit être spécifié dansnagios.cfg

service_perfdata_command=process-service-perfdata

Depuis la version 3.0 de Nagios il peu être utile d'activer également l'analyse des performances pour les Hosts. Due au changement de logique pour la vérification des Hosts Nagios 3 effectue désormais des contrôles réguliers.

host_perfdata_command=process-host-perfdata

La nouvelle commande doit également être référencé dans la configuration de Nagios. Si vous avez utilisé le guide d'installation rapide pour installer Nagios, alors vous pouvez modifier la définition dans la fichier commands.cfg. La commande process_perfdata.pl n'a pas besoin d'argument a part l'option -d ( DATATYPE ) si vous voulez analyser les performances résultant de la vérification des hosts.

define command {
       command_name    process-service-perfdata
       command_line    /usr/bin/perl /usr/local/pnp4nagios/libexec/process_perfdata.pl
}

define command {
       command_name    process-host-perfdata
       command_line    /usr/bin/perl /usr/local/pnp4nagios/libexec/process_perfdata.pl -d HOSTPERFDATA
}

Note: process_perfdata.pl ne peu pas tourner sous ePN ( embedded Perl Nagios ). Dans ce cas le script doit être appeler en utilisant /usr/bin/perl ( ou le chemin ou est installer l'exécutable perl). Si vous utilisez Nagios 3.x ou n'utilisez pas ePN il n'y a pas besoin de spécifier /usr/bin/perl.

Mode Bulk

Bulk mode est un mode un peu plus compliqué que le mode synchronisé mais reduit clairement la charge sur le serveur Nagios car le collecteur de donnée process_perfdata.pl n'est pas appelé a chaque vérification de service/host.

In bulk mode Nagios écrie les données dans un fichier temporaire dans un format bien définie. Ce fichier est traité par process_perfdata.pl a intervalle régulier. Nagios prend en charge le démarrage et le lancement périodique.

Le traitement des performances dans être activer dans nagios.cfg

 process_performance_data=1

de plus que quelque directives doivent être ajoutées:

#
# service performance data
#
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 data starting with Nagios 3.0
# 
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

Attention: Ces définitions d'exemple diffères de celles présentes dans nagios.cfg!

Les directives et leurs significations:

  • service_perfdata_file chemin du fichier temporaire qui vas contenir les données de performance.
  • service_perfdata_file_template format du fichier temporaire. Les données vont être définie en utilisant les macros Nagios.
  • service_perfdata_file_mode l'option “a” spécifies que les données doiven etre ajouter au fichier.
  • service_perfdata_file_processing_interval intervalle de 15 seconds
  • service_perfdata_file_processing_command la commande a appeler a chaque intervalle.

La commande utilisé doit être annoncé a Nagios. Si vous avez utilisé le "quickstart installation guides" pour Nagios vous pouvez modifiez les définitions se trouvant dans commands.cfg.

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
}

NOTE:

Parce qu'il y a plus de données a analyser qu'en mode synchronisé process_perfdata.pl vas mettre plus de temps a analysé ces données, donc vous devez vérifiez la valeur du TIMEOUT dans etc/process_perfdata.cfg et l'ajuster comme il se doit.

Mode Bulk avec NPCD

La configuration est identique au mode Bulk a l'exception de la commande utilisé. Le traitement des performances dans être activer dans nagios.cfg

 process_performance_data=1

de plus que quelque directives doivent être ajoutées:

#
# service performance data
#
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 data starting with Nagios 3.0
# 
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

Attention: Ces définitions d'exemple diffères de celles présentes dans nagios.cfg!

Les directives et leurs significations:

  • service_perfdata_file chemin du fichier temporaire qui vas contenir les données de performance.
  • service_perfdata_file_template format du fichier temporaire. Les données vont être définie en utilisant les macros Nagios.
  • service_perfdata_file_mode l'option “a” spécifies que les données doiven etre ajouter au fichier.
  • service_perfdata_file_processing_interval intervalle de 15 seconds
  • service_perfdata_file_processing_command la commande a appeler a chaque intervalle.

La commande utilisé doit être annoncé a Nagios. Si vous avez utilisé le "quickstart installation guides" pour Nagios vous pouvez modifiez les définitions se trouvant dans commands.cfg.

define command{
       command_name    process-service-perfdata-file
       command_line    /bin/mv /usr/local/pnp4nagios/var/service-perfdata /usr/local/pnp4nagios/var/spool/service-perfdata.$TIMET$
}

define command{
       command_name    process-host-perfdata-file
       command_line    /bin/mv /usr/local/pnp4nagios/var/host-perfdata /usr/local/pnp4nagios/var/spool/host-perfdata.$TIMET$
}

En utilisant ces commandes le fichier service-perfdata vas etre déplacé dans var/spool/ après que le temps spécifié dans service_perfdata_file_processing_interval soit écoulé. La variable Nagios $TIMET$ est ajouté a la fin du nom du fichier pour évité l'écrasement des anciens fichier éventuellement existant. La variable $TIMET$ contiens l'heure et la date actuel au format time_t (Nombre de secondes depuis le 1 Janvier 1970 “UNIX date format”).

Les fichiers se trouvant dans le dossier /usr/local/pnp4nagios/var/spool/ sont récolté par le processus NPCD.

NPCD moniteur le dossier et passe les nom de fichiers au script process_perfdata.pl. De cet façon la collecte des données de performance est complètement indépendante de Nagios.

Before starting NPCD you have to check the paths to the spool directory and to process_perfdata.pl specified in the config file npcd.cfg. The only thing that remains is to start NPCD.

 /usr/local/pnp4nagios/bin/npcd -d -f /usr/local/pnp4nagios/etc/npcd.cfg

The option -d starts NPCD as a daemon in the background.

Bulk Mode with NPCD and npcdmod

This mode uses the event broker module npcdmod.o. The flow of data is identical to “bulk mode with NPCD”. The internal perfdata routines of Nagios activated by the “*_perf_data_*” directives in nagios.cfg are *NOT* used anymore. The module npcdmod.o takes over the task of processing the data required by PNP.

Pro:

  • The perfdata routines can now be used for other addons.
  • The configuration is easier.
  • It is the preferred mode of the PNP developers.

Adjustments in nagios.cfg:

process_performance_data=1
broker_module=/usr/local/pnp4nagios/lib/npcdmod.o config_file=/usr/local/pnp4nagios/etc/npcd.cfg

All other directives mentioned on this page must NOT be used.

Attention: If you have changed the value of event_broker_options from -1 to another value then please note that PNP needs the bits 2 and 3 set (0b01100). Make sure that the resultung value has these bits set because otherwise there will be no performance data to process.

After restarting Nagios information regarding the start of the module will be logged.

Excerpt from nagios.log

[1277545053] npcdmod: Copyright (c) 2008-2009 Hendrik Baecker (andurin@process-zero.de) - http://www.pnp4nagios.org
[1277545053] npcdmod: /usr/local/pnp4nagios/etc/npcd.cfg initialized
[1277545053] npcdmod: spool_dir = '/usr/local/pnp4nagios/var/spool/'.
[1277545053] npcdmod: perfdata file '/usr/local/pnp4nagios/var/perfdata.dump'.
[1277545053] npcdmod: Ready to run to have some fun!
[1277545053] Event broker module '/usr/local/pnp4nagios/lib/npcdmod.o' initialized successfully.

back to contents | checking the functionality

Vérification de votre installation

Si tout c'est bien passé jusqu’à présent vous pouvez essayer d’accéder a PNP en lançant votre navigateur web. Quand vous installer PNP avec les valeurs par défaut vous devriez pouvoir y accéder en utilisant http://<server name>/pnp4nagios/. La première foie vous allez voir la page “PNP4Nagios Environment Tests” qui inclue différant test pour vérifier que les composant nécessaire au bon fonctionnement sont bien installer. Evidemment, toutes les vérifications doivent être passés avec succès avant de pouvoir continuer.

Si tous les test sont passé avec *succès* le fichier pnp4nagios/share/install.php peu etre effacé ou renommé. Après cela l'interface web sera accessible.

Vous pouvez également créé un fichier vide, appelé pnp4nagios/share/install.ignore ce qui aura comme effet de ne pas appeler le vérificateur d'installation au prochains chargement.

Si vous recevez le message “PHP magic_quotes_gpc is deprecated” editez votre php.ini et assurez vous que “magic_quotes_gpc = Off”, rechargez la configuration de apache pour que les changement prennes effet.

Lancé sans argument PNP vas chercher la base de données RRD et fichiers XML dans pnp4nagios/var/perfdata et afficher tous les graphique du premier host.

ATTENTION: Après avoir activé l'analyse des données de performances, vous obtiendrez un message d'erreur dans votre navigateur, si vous essayer de visualiser les graphique avant que nagios n'ait récupéré les premières données de performances et les ait stocké dans la base RRD du service monitoré. Selon l'intervalle de vérification configuré, vous devrez attendre un certain temps avant de pouvoir voir les différent graphiques.

Debug Logfile

L'appel de make install-config pendant l'installation, vas créé le fichier d’exemple de configuration etc/process_perfdata.cfg-sample. Les valeurs dans ce fichier correspondent aux valeurs par défaut utilisé par process_perfdata.pl donc normalement le fichier process_perfdata.cfg n'existe pas si vous suivez la procédure d'installation normal.
Cependant vous pouvez influencer la façon dont process_perfdata.pl fonctionne en changent les options que vous voulez modifier dans process_perfdata.cfg.

Les options les plus importantes quand on lance PNP sont LOG_LEVEL et LOG_FILE. Nous recommandons de configurer la valeur de LOG_LEVEL à “2” pour que vous puissiez suivre ce que fait process_perfdata.pl. Il est très probable que nous demandions un extrait de perfdata.log si vous ouvrez un ticket avec notre support sur notre mailing lists ainsi le résultat du script verify_pnp_config, donc merci de les inclure ;-).

En temps normal le niveau de debug doit être mis a 0 pour éviter tous problème de performance due a une écriture de logs inutile.

Quelque chose ne vas pas

Vérifiez quelques éléments de base.

1. Y a t'il des fichiers RRD et XML qui on été créé? process_perfdata.pl vas créé un répertoire sous pnp/perfdata pour chaque host. Dans ce répertoire une base de donnée RRD et un fichier XML vont etre créé pour chaque service. Les données de l'host seront stocké dans _HOST_.xml et _HOST_.rrd respectivement.
Si l’affichage du graphique stop soudainement, alors éditez le fichier XML approprié. Il y a 2 balises appelé <RC> et <TXT>. <RC> montre le code renvoyer par l'outil RRDtool et <TXT> une description texte.
De temps en temps vous devez spécifiez des options supplémentaire pour que les données de performance soit géré correctement. Dans certain cas un wrapper script peu aider.
Attention, tous les script de checks ne donne pas forcement des indicateurs de performance. Ceci s'applique - mais pas seulement - à “check_ping” au contraire de “check_icmp” qui fournie ces données (Depuis la version version 1.4.12 de Nagios plugin, check_ping donne des informations de performance).
En utilisant l'interface web on peu voir le champ “Performance Data” dans chaque hosts/services. Si ce champ est vide, il n'y a pas de donnée de disponible, donc aucun fichier n'est écrie dans le dossier de PNP et c'est pour cela que PNP ne fournie pas de graphs!
L'image suivante montre les information du service “PING”. La sortie du plugin est encadrer en bleu, les données de performance en rouge.
status information

2. Est ce que Nagios a appeler le script process_perfdata.pl? Dans le fichier de configuration de process_perfdata.pl (etc/process_perfdata.cfg) vous pouvez augmenter le niveau de debug. Toutes les données passant par le système seront loggé dans var/perfdata.log.

3. Seul les Graphiques sont afficher (sans les textes)? Vérifier que vous avez bien tous les prérequis.

4. En utilisant le module npcdmod la valeur de la directive event_broker_options dans votre nagios.cfg devra peu etre adapté si vous en avez modifier la configuration. Vous trouverez plus de détails ici.

5. Vous pouvez utilisez le script verify_pnp_config.pl dans le dossier scripts du dossier d'installation ou dans le dossier libexec après installation pour vérifier votre configuration ainsi que s'assurer que les données de performances sont bien présente et/ou valide. La syntax de cette commande est relativement simple:

./verify_pnp_config.pl -m <mode>

ou <mode> peu etre égal à “sync”, “bulk” ou “npcd” (sans les guillemets). NOTE: La valeur par “default” est “npcd” ce qui est différant de la version PNP 0.4.x.

Retour a l'index | verify_pnp_config.pl

Interface web de Nagios

Est il préférable que PNP soit facilement accessible. Vous n'avez certainement pas envie de chercher longtemps le bon graphique.

Nagios propose des fonctionnalités permettant d'accéder à des URL externes. En raison de changement entre les version de nagios 2.x et 3.x, nous décrirons la configuration pour ces deux versions.

Nagios 2.x

Avec Nagios 2.x, l'intégration d'URL externe dans l'interface web de nagios se fait en renseignant les informations étendues des services. Pour PNP, nous utilison la directive action_url pour appeler l'interface web de PNP web frontend avec les options ad hoc :.

define serviceextinfo {
   host_name             localhost
   service_description   load
   action_url            /pnp4nagios/index.php/graph?host=$HOSTNAME$&srv=$SERVICEDESC$
}

Vous devrez spécifier ces informations étendues de services pour chaque définition de service.

Nagios 3.x

Depuis nagios 3.0 la directive action_url a été déplacé dans la définition des machines ou des services. De cette façon, la définition de l'accès aux URLs de PNP sont plus simple. Les définitions serviceextinfo et hostextinfo sont maintenant dépréciées.

Nous allons d'abord définir 2 templates. Si vous avez utilisez le guide d'installation rapide de Nagios vous pouvez ajoutez ces lignes directement au fichier templates.cfg:

define host {
   name       host-pnp
   action_url /pnp4nagios/index.php/graph?host=$HOSTNAME$&srv=_HOST_
   register   0
}

define service {
   name       srv-pnp
   action_url /pnp4nagios/index.php/graph?host=$HOSTNAME$&srv=$SERVICEDESC$
   register   0
}

Ces 2 templates peuvent maintenant être utilisé en incluant “use srv-pnp” ou “use host-pnp” pour les services et les hosts respectivement. Si vous avez utilisez le guide d'installation rapide de Nagios vous pouvez par exemple éditer votre fichier de config localhost.cfg et ajouter les nouvelles templates définie a votre host ou vos service comme ceci:

define host{
        use                     linux-server,host-pnp    ; Name of host templates to use
                                                         ; This host definition will inherit all variables that are defined
                                                         ; in (or inherited by) the linux-server host template definition.
        host_name               localhost
        alias                   localhost
        address                 127.0.0.1
        }
define service{
        use                     local-service,srv-pnp   ; Name of service template to use
        host_name               localhost
        service_description     PING
        check_command           check_ping!100.0,20%!500.0,60%
        }

Les liens correct vers PNP4NAGIOSThe vons se généré automatiquement.

Astuce: Si vous voulez ouvrir la fenêtre de PNP4NAGIOS dans votre fenêtre principale (a droite du menu) au lieu d'une nouvelle page, modifiez juste action_url_target=main dans votre nagios cgi.cfg

Popups

Vous pouvez également intégré PNP dans Nagios de façon à ce que vous n'ayez à cliquez sur aucun icons. Cela peu être configuré en utilisant CGI Includes qui nous autorise a utiliser du code JavaScript dans la vue de détail ( status.cgi ).

Prérequis:

  • PNP doit être installer et fonctionnel
  • Le fichier status-header.ssi du dossier contrib/ssi/ du packet PNP a été copié dans /usr/local/nagios/share/ssi/.
    Attention: Ce fichier NE DOIT PAS être exécutable. Si non il sera traité comme comme un script CGI ce que génèrera une erreur.
    *Note pour les administrateurs Apache*: Apache ssi et Nagios ssi non de commun que le nom.
  • La/les définition(s) du/des service(s) a/on été modifié. A noter que jusqu'à Nagios 2.x vous devez modifier la définition serviceextinfo (qui est rendue obsolète a partir de la version 3 de Nagios).

Définition:

define host {
   name       host-pnp
   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       srv-pnp
   action_url /pnp4nagios/index.php/graph?host=$HOSTNAME$&srv=$SERVICEDESC$' class='tips' rel='/pnp4nagios/index.php/popup?host=$HOSTNAME$&srv=$SERVICEDESC$
   register   0
}

Après le redémarrage de Nagios (après modification des définitions) cela ressemble à ceci:

Retour a l'index | config options

Interface Web PNP

Le comportement de l'interface Web PNP peut être peut être contrôlé grâce au fichier etc/config.php. Ce fichier est écrasé à chaque mise à jour car les chemins et les options sont détectées lors du ./configure.

Les configurations personnalisées doivent être effectuées dans le fichier etc/config_local.php. Si ce fichier n'existe pas, il peut être créé en utilisant comme modèle le fichier etc/config.php.

etc/config.php

Les paramètres les plus importants sont:

Le chemin vers le binaire de RRDtool. Sera détectée par le ./configure

 $conf['rrdtool'] = "/usr/bin/rrdtool";

Hauteur et Largeur des graphiques RRD

 $conf['graph_width'] = "500";
 $conf['graph_height'] = "100";

Les tailles d'écran peuvent varier, les pages non. Les deux paramètres suivants vous permettent de spécifier différentes tailles pour la création de PDFs. S'ils ne sont pas spécifiées, ils prennent pour valeur la taille des graphiques.

 $conf['pdf_width'] = "675";
 $conf['pdf_height'] = "100";

D'autre options peuvent être passer a chaque appel de RRDTool, par exemple —-slope-mode pour lissé les graphiques.

 $conf['graph_opt'] = "";

Le chemin vers du fichier RRD et XML créé par process_perfdata.pl

 $conf['rrdbase'] = "/usr/local/pnp4nagios/var/perfdata/";

Le chemin du fichier de config de pages.

 $conf['page_dir'] = "/usr/local/pnp4nagios/etc/pages/";

Les pages PNP seront rafraichie toutes les n n secondes

 $conf['refresh'] = "90";

L'age Maximum des fichiers RRD en secondes. Après avoir atteint cette valeur le lien ver le graphique sera marquer comme inactif

 $conf['max_age'] = 60*60*6;

L'URL de base vers les CGIs de Nagios

 $conf['nagios_base'] = "/nagios/cgi-bin";

Liste des utilisateurs autorisé à voir les liens vers les services de l'host actif

 $conf['allowed_for_service_links'] = "EVERYONE";

Liste des utilisateurs qui peuvent voir/accéder au champs de recherche d'host

 $conf['allowed_for_host_search'] = "EVERYONE";

Si PNP est appeler avec seulement le nom de l'host ( index.php?host=<myserver> ), les utilisateur définie voie un aperçue de tous les services de cet host

 $conf['allowed_for_host_overview'] = "EVERYONE";

Les période de temps afficher par les graphique RRD sont déterminer par la variable de tableau $views[]. Le Titre et le nombre de graphique peuvent être configurer globalement ici

$views[] = array('title' => 'Une heure',  'start' => (60*60) );
$views[] = array('title' => '4 Heures',   'start' => (60*60*4) );
$views[] = array('title' => '25 Heures',  'start' => (60*60*25) );
$views[] = array('title' => 'Une Semaine',  'start' => (60*60*25*7) );
$views[] = array('title' => 'Un Moi', 'start' => (60*60*24*32) );
$views[] = array('title' => 'Une Année',  'start' => (60*60*24*380) );

Vous pouvez ajouter plus de vues ($views[5], …), mais gardez quand même à l’esprit que par défaut TOUTES les vues définies ici seront affichées.

Retour a l'index | Intervalle de temps

Intervalle de temps

Dans la fenêtre de visualisation PNP nous affiche 5 intervalles de temps différant qui peuvent être configurer dans config.php.

Vous pouvez également influencer l'intervalle de temps par URL. Cela peu être utile pour la création automatique de PDF. Intervalle peu être définie par l'option “start” et “end”.

Exemple:

 pnp4nagios/graph?host=<hostname>&srv=<servicedesc>&start=-1week

Le graphique démarrera une semaine avant la date et l'heure actuel. Il se terminera a l'heure et la date actuel.

start end view résultats
Toutes les vue se termine a la date et heure actuel
x Toutes les vue démarre a la date et heure définie
x Toutes les vue se termine a la date et heure définie
x x Une vue entre deux dates
x Une vue se terminant a la date et heure actuel
x x Une vue démarrant a la date et heure définie
x x Une vue se terminant a la date et heure définie

Différant exemples:

format description
2009W04 4em semaine de 2009
1.5.2009 1er Mai 2009
-1 day Moins 1 jour
-3 weeks Moins 3 semaines
-1 year Moins 1 an
yesterday année

Retour a l'index | pages

Pages

“pages” nous donne la possibilité de regrouper les graphiques de plusieurs hosts/services sur une seule page, permettant ainsi de composer des documents pdf spécifiques. Cela nous permet - par exemple - d'afficher le traffic réseau de tous nos robots de sauvegarde. Les expressions régulières sont également supportées, ce qui vous permet une modularité importante avec seulement quelques règles. Le dossier configuré en utilisant “$conf['page_dir']” contient un ou plusieurs fichier(s) avec une extension ”.cfg”.

Les commentaires commencent par le signe “dièse” (#) et peuvent être inclus dans les lignes. Chaque fichier contient une définition de “page” qui spécifie le nom de la page ainsi que les graphiques sélectionnés en utilisant les expressions régulières ou non.

La description correspondant au champs “page_name” apparaîtra dans la liste des pages disponibles dans la fenêtre du navigateur.

Attention : Les champs “host_name” et “service_desc” font directement référence aux fichiers créés dans le répertoire des données de performance (ex.: /var/nagios/perfdata) et non aux variables définies dans les fichiers de configuration de Nagios. Les espaces sont remplacés par des symboles de soulignement (_).performances

define page {
       use_regex 1		# 0 = use no regular expressions, 1 = use regular expressions
       page_name test-page	# page description
}

suivi par une ou plusieurs définitions de graphiques :

define graph {
       host_name       host1,host2,host3
       service_desc    Current_Load
}

Attention: Une liste de nom d'hôtes fonctionne uniquement si le paramètre “use_regex” est réglé à 0 !

define graph {
       host_name       host4
       service_desc    Current_Users
}

Et maintenant quelques définitions utilisant les expressions régulières. Le paramètre “use_regex” doit pour cela être réglé à 1 ! Ainsi, pour atteindre tous les hôtes dont le nom commence par “Tape” :

define graph {
       host_name       ^Tape
       service_desc    Traffic
}

tous les hôtes dont le nom se termine par “00”:

define graph {
       host_name       00$
       service_desc    Load
}

tous les services sur l'hôte local qui contiennent les lettres “a” ou “o” :

define graph {
       host_name       localhost
       service_desc    a|o
}

tous les services dont le nom contient un caractère “underscore” suivi de trois chiffres sur les hôtes dont le nom commence par les lettres “UX :

define graph {
       host_name       ^UX
       service_desc    _\d{3}
}

Dans la plupart des cas, vous voudrez sans doute limiter l'affichage à un seul graphique. Cet objectif sera atteint si vous ajouter la directive “source” suivi du numéro d'ordre du graphique souhaité, tel que défini dans les choix définis dans l'interface, le premier étant 0 (par exemple pour 2 heures).

define graph {
       host_name       host1,host2,host3
       service_desc    PING
       source          1
}

Retour à l'index | Export des données

Export des données

PNP vous permet d'accéder aux données des bases RRD en utilisant le module xport. Le format d'export peut-être spécifié. Actuellement, il est possible d'exporter au format xml, json et csv.

Le module peut-être appelé en utilisant l'URL suivante :

/pnp4nagios/xport/<format>?host=<hostname>&srv=<servicedesc>

Où <format> doit être remplacé par le format souhaité.

Retour à l'index | modèle

Qu'est-ce qu'un "template" ?

Les “templates” sont des modèles que PNP utilise pour l' aspect des graphiques produits à partir des données fournies par RRD (Round-Robin-Data).

Le “template” correspond au service check_<commande> qui a récupéré les données. La suite décrit où sont stockés les “templates” et comment ils sont sélectionnés.

Comment un "template" est-il sélectionné ?

Les “templates” sont stockés dans deux sous-répertoires de celui de pnp (ex. /usr/share/pnp/…)

  • …/templates.dist - pour les “templates” fournis avec le packet PNP.
  • …/templates - pour les “templates” personnalisés. Ceux-ci ne sont pas modifiés lors d'une mise à jour.
  • …/templates.special - pour des “templates” particuliers qui seront décrits plus loin.

Depuis la version 0.6.5 de PNP, d'autres emplacements peuvent être définis dans le fichier de configuration …/etc/config.php .

Ainsi, pour la représentation graphique du service “http” pour l'hôte (Host) “localhost”, PNP consulte en premier lieu le fichier XML ”…/perfdata/localhost/http.xml”. Ce fichier est généré automatiquement avec les données “performance-data” et contient les informations correspondantes à l'hôte et au service. Par ailleurs, il fournit également des renseignements sur le plugin utilisé et sur les données “performance-data”. Dans l'exemple suivant, le nom du “template” qui sera utilisé est noté entre les balises <TEMPLATE>.

/localhost/http.xml

<NAGIOS>
  <DATASOURCE>
    <TEMPLATE>check_http</TEMPLATE>
    <DS>1</DS>
    <NAME>time</NAME>
    <UNIT>s</UNIT>
    <ACT>0.006721</ACT>
    <WARN>1.000000</WARN>
    <CRIT>2.000000</CRIT>
    <MIN>0.000000</MIN>
    <MAX></MAX>
  </DATASOURCE>
  <DATASOURCE>
    <TEMPLATE>check_http</TEMPLATE>
    <DS>2</DS>
    <NAME>size</NAME>
    <UNIT>B</UNIT>
    <ACT>263</ACT>
    <WARN></WARN>
    <CRIT></CRIT>
    <MIN>0</MIN>
    <MAX></MAX>
  </DATASOURCE>
...
</NAGIOS>

PNP recherche maintenant un “template” portant le nom check_http.php dans l'ordre suivant des dossiers :

  1. templates/check_http.php
  2. templates.dist/check_http.php
  3. <autre défini dans config.php>/check_http.php
  4. templates/default.php
  5. templates.dist/default.php

Le “template” default.php est particulier car il sera sélectionné si aucun autre portant le nom recherché n'a été trouvé.

Créer un "template" personnalisé

Les “templates” dans PNP sont des fichiers PHP qui lui sont associés pendant son fonctionnement grâce à la fonction PHP include(). Ceci a comme conséquence que tout code PHP contenu dans les templates sera interprété, et permet le traitement de toutes les valeurs par PHP.

Les “templates” de PNP doivent avoir les propriétés suivantes :

  1. ils doivent contenir un code PHP valide.
  2. ils ne doivent engendrer aucune exception.
  3. ils doivent renseigner les deux tableaux (Arrays) $opt[] et $def[].

Les deux PHP-Arrays $opt[] et $def[] constituent l'appel de 'rrdtool graph'. Toutes les options mises à disposition de RRDtool sont donc disponibles. Ces dernières sont décrites sur le site RRDtool Homepage.

Par ailleurs les “templates” peuvent utiliser les autres données contenues dans le fichier XML correspondant.

Les options les plus utiles peuvent facilement se déduire à l'aide du “template” relativement simple response.php.

<?php
#
$opt[1] = "--title \"Response Time For $hostname / $servicedesc\" ";
#
$def[1] =  "DEF:var1=$RRDFILE[1]:$DS[1]:AVERAGE " ;
$def[1] .= "AREA:var1#00FF00:\"Response Times \" " ;
$def[1] .= "LINE1:var1#000000 " ;
$def[1] .= "GPRINT:var1:LAST:\"%3.4lg %s$UNIT[1] LAST \" ";
$def[1] .= "GPRINT:var1:MAX:\"%3.4lg %s$UNIT[1] MAX \" ";
$def[1] .= "GPRINT:var1:AVERAGE:\"%3.4lg %s$UNIT[1] AVERAGE \" ";
?>

Rédaction en cours. Merci de consulter les autres traductions en attendant…

$opt[1] = ”–title …” définit les options de RRDtool pour le premier champs de données dans le tableau (Array). Ici il s'agit du titre du graphique. Comme on peut le remarquer, les guillemets sont masqués par le caractère d'échapement Backslash (\).

$def[1] = “DEF:var1=$RRDFILE[1]:$DS[1]:AVERAGE ”; précise quelles données sont lues depuis quel fichier RRD. La variable $RRDFILE[1] contient le chemin vers le fichier de données RRD du service concerné. $DS[1] indique quelle sera la rangée de données à extraire.

$def[1] .= “AREA:var1#00FF00:\”Response Times \” ”; l'opérateur ”.=” permet d'ajouter des données à l'Array $def[1]. L'aire (AREA) est représentée à l'aide des données transmises par la variable var1. La couleur est définie par le code hexadécimal #00FF00. Le libéllé utilisé est précisé par le texte “Response Times”.

$def[1] .= “LINE1:var1#000000 ”; trace une ligne noire (#000000) d'épaisseur 1 pixel (LINE1, maximum 3 pixels avec LINE3) délimitant l'aire.

$def[1] .= “GPRINT:var1:LAST:\”%3.4lg %s$UNIT[1] LAST \” ”;
$def[1] .= “GPRINT:var1:MAX:\”%3.4lg %s$UNIT[1] MAX \” ”;
$def[1] .= “GPRINT:var1:AVERAGE:\”%3.4lg %s$UNIT[1] AVERAGE \” ”;

Les trois instructions GPRINT ci-dessus constituent la légende du graphique. Les valeurs actuelles sont formatées en suivant la syntaxe printf. D'autres exemples utiliseront des tableaux (ARRAY).

Variables diponibles

En cours de fonctionnement, PNP ne stocke pas seulement des données “performance-data” grâce au script process-perfdata.pl, mais également d'autres valeurs exportées par Nagios. Ces valeurs sont enregistrées dans le fichier XML concerné. Dans la première section les données “performance-data” sont décomposées par champs.

<NAGIOS>
  <DATASOURCE>
    <TEMPLATE>check_http</TEMPLATE>
    <DS>1</DS>
    <NAME>time</NAME>
    <UNIT>s</UNIT>
    <ACT>0.006721</ACT>
    <WARN>1.000000</WARN>
    <CRIT>2.000000</CRIT>
    <MIN>0.000000</MIN>
    <MAX></MAX>
  </DATASOURCE>
...
</NAGIOS>

Le champs <DS> pointe vers la rangée contenue dans la série de données fournies par le fichier RRD et sert également de clé pour l'accès aux tableaux suivants. Ainsi l'Array $UNIT[1] pointe vers l'unité (Mb, Gb, …) précisée dans la première rangée de données.

Le fichier XML contient encore d'autres informations. Si le script process_perdata.pl fonctionne en mode “sync”, alors toutes les macros ainsi que leurs valeurs actuelles sont disponibles. L'extrait suivant a été tronqué pour des raisons de lisibilité.

<NAGIOS>
...
  <NAGIOS_SERVICENOTIFICATIONID>8418</NAGIOS_SERVICENOTIFICATIONID>
  <NAGIOS_SERVICENOTIFICATIONNUMBER>0</NAGIOS_SERVICENOTIFICATIONNUMBER>
  <NAGIOS_SERVICEOUTPUT>HTTP OK HTTP/1.1 200 OK - 10087 bytes in 0.125 seconds</NAGIOS_SERVICEOUTPUT>
  <NAGIOS_SERVICEPERCENTCHANGE>0.00</NAGIOS_SERVICEPERCENTCHANGE>
  <NAGIOS_SERVICEPERFDATA>time=0.124811s;;;0.000000 size=10087B;;;0</NAGIOS_SERVICEPERFDATA>
  <NAGIOS_SERVICEPERFDATAFILE></NAGIOS_SERVICEPERFDATAFILE>
  <NAGIOS_SERVICEPROBLEMID>0</NAGIOS_SERVICEPROBLEMID>
  <NAGIOS_SERVICESTATE>OK</NAGIOS_SERVICESTATE>
  <NAGIOS_SERVICESTATEID>0</NAGIOS_SERVICESTATEID>
  <NAGIOS_SERVICESTATETYPE>HARD</NAGIOS_SERVICESTATETYPE>
  <NAGIOS_SHORTDATETIME>27-12-2007 13:51:23</NAGIOS_SHORTDATETIME>
...
</NAGIOS>

Les balises XML sont utilisables par PNP en tant que variables du même nom. Ainsi, à partir de la balise <NAGIOS_SERVICEOUTPUT> il est possible de former la variable $NAGIOS_SERVICEOUTPUT.

retour au sommaire | Templates personnalisés

Personnaliser les templates

Comme déjà expliqué dans ”Qu'est-ce qu'un template” l'apparence des graphique dépend de la commande check utilisé.

Il y a des situations ou ce comportement doit être changer. Cela doit être fait quand une commande universel a été définie.

CUSTOM_TEMPLATE

Exemple:

define command {
  command_name check_nrpe
  command_line $USER1$/check_nrpe -H $HOSTADDRESS$ -c $ARG1$ -a "$ARG2$"
}

Cela aurais pour effet d'appeler la template check_nrpe.php même si l'host monitoré utilise un plugin complètement différent appeler via NRPE.

PNP, plus spécifiquement process_perfdata.pl, vas rechercher le fichier de config (<check_command>.cfg) dans le dossier etc/check_commands et lire sont contenue (s'il est présent).

Comme dans notre exemple la commande appeler est check_nrpe il vas cherché le fichier etc/check_commands/check_nrpe.cfg.

Pendant l'installation un exemple de fichier de configuration avec l'extension .cfg-sample est copié dans etc/check_commands.

FIXME Two options can be set in this config file:

# check_command check_nrpe!load!-w 4,4,4 -c 5,5,5
# ________0__________|       |       |
# ________1__________________|       |
# ________2__________________________|
#
CUSTOM_TEMPLATE = 1

CUSTOM_TEMPLATE = 1 assures that only the contents of $ARG1$ will be used as a template name. As $ARG1$ contains “load” in this example the template name would result in “load.php”.

CUSTOM_TEMPLATE = 0,1 results in → “check_nrpe_load.php”

CUSTOM_TEMPLATE = 1,0 results in → “load_check_nrpe.php”

DATATYPE

The option “DATATYPE” controls the datatype which is used during creation of the RRD database. Default is “GAUGE”. For consecutive values the type should be “COUNTER”. Plugin-developers should use the unit “c” for counters but this is not always the case.

To set all datasources to COUNTER

DATATYPE = COUNTER

Setting datasources to different types

DATATYPE = GAUGE,GAUGE,COUNTER,COUNTER

This option has effect only during creation of the RRD database.

More datatypes are explained in the RRDTool documentation found at rrdcreate.

MIN and MAX

In a few situations it might be necessary to limit the values which are valid for RRDTool.

RRD databases can be created with fixed minimum and maximum values. You will find further details at http://oss.oetiker.ch/rrdtool/doc/rrdcreate.en.html.

Account for the maximum value taken from the performance data

USE_MAX_ON_CREATE = 1

Account for the minimum value taken from the performance data

USE_MIN_ON_CREATE = 1

RRD_STORAGE_TYPE

RRD_STORAGE_TYPE = SINGLE

The option RRD_STORAGE_TYPE defines the kind of data storage.

Possible values are MULTIPLE and SINGLE, respectively.

SINGLE: A RRD database per service

MULTIPLE: One or more RRD databases per service. Each datasource will be stored in a separate RRD database.

ATTENTION: The data will not be migrated automatically! You will find a conversion script here.

RRD_HEARTBEAT

Starting with PNP 0.6.1

RRD_HEARTBEAT = 305

After <RRD_HEARTBEAT> seconds RRDtool expects new data.

More information at http://oss.oetiker.ch/rrdtool/doc/rrdcreate.en.html

back to contents | PNP in distributed environments

check_procs est un exemple de plugin ne donnant pas d'informations de type “performance-data”:

./check_procs -a ndo2db -w 1: -c 0:
PROCS OK: 2 processes with args 'ndo2db'

Cela peut être corrigé par le script suivant:

check_procs.sh

#!/bin/bash
LINE=`/usr/local/nagios/libexec/check_procs $*`  # On sauve la sortie du script dans la variable LINE
RC=$?                                            # On sauve le code de sortie dans la variable RC
COUNT=`echo $LINE | awk '{print $3}'`            # On sauve le contenue de la 3ème col de la variable LINE dans la variable COUNT
PROCS=`expr $COUNT - 1`                          # check_procs.sh est computé, donc, soustraire un
LINE=`echo $LINE | sed "s/: $COUNT /: $PROCS /"` # On remplace le numéro
echo $LINE \| procs=$PROCS                       # On affiche le tout
exit $RC                                         # On sort avec le code de sortie du script initial

Maintenant vous allez avoir les informations “performance-data” grâce au libellé suivant :

./check_procs.sh -a ndo2db -w 1: -c 0:

ce qui conduit à la sortie :

PROCS OK: 2 processes with args 'ndo2db'| procs=2

2.6. Données de performance

Les données de performance sont définie pas Nagios par “toutes les information présentes après le | résultant de l’exécution du plugin” - Ce référer a la documentation de Nagios pour capturer ces information dans un fichier de log. Toutefois, il est de la responsabilité du programmeur du plugin, que les données de performance soit dans un format respectant le standard des “plugins Nagios”. Ceci est le format attendu:

'label'=value[UOM];[warn];[crit];[min];[max]

Notes:

  1. La liste libellé/valeur peu être séparer par un espace
  2. Le libellé peu contenir n'importe quel caractères
  3. Les apostrophes pour entourer le libellé sont facultatives. Mais requis si un espace, égale ou ' sont utilisé dans le libellé
  4. Le nom de libellé est libre, mais idéalement les 19 premiers caractères sont unique (due a une limitation dans RRD). Faites attention a cette limitation quand NRPE renvoie des information a Nagios
  5. Pour écrire un apostrophe, utilisé deux apostrophe l'un après l'autre
  6. warn, crit, min/ ou max/ peuvent être nul (par exemple, si la limite n'est pas définie ou min et max ne sont pas applicable). Les point virgules ne sont pas obligatoire.
  7. min et max ne sont pas requis si UOM=%
  8. Les valeurs de UOM, min et max de type [-0-9.] Doivent toutes être de même type
  9. UOM, warn et crit doivent être de même type et de même format (voir Sélection 2.5).
  10. UOM (unit of measurement “unité de mesure”) est l'une des suivante:
    • Si aucune unité n'est spécifié - un nombre (entier ou a virgule) de choses (ex, utilisateurs, processus, charge moyenne)
    • s - secondes (également disponible us, ms)
    • % - pourcentage
    • B - bytes (également disponible KB, MB, GB, TB?)
    • c - conteur continu (ex: nombre de bytes transmises par une interface)

La conversion des données de performance de Nagios en graphique est a la charge d'un autre programme.

Source: http://nagiosplug.sourceforge.net/developer-guidelines.html#AEN201

fr/pnp-0.6/doc_complete.txt · Last modified: 2010/10/23 15:46 by Yannig Perré
www.chimeric.de Creative Commons License Valid CSS Driven by DokuWiki do yourself a favour and use a real browser - get firefox!! Recent changes RSS feed Valid XHTML 1.0