
L'interface de Centreon permet l'affichage de graphes alimentés par les données de performances des plugins. Centreon utilise des bases de données métriques au format RRD (Round Robin Database) créé par Tobias Oetiker. Nous allons étudier la possibilité de réaliser un compteur de pages d'imprimantes. Malheureusement, n'ayant pas d'imprimante réseau avec une gestion SNMP, nous simulerons cette imprimante par un plugin maison.
1 Simulation d'un compteur d'imprimante
1.1 Création du plugin check_test_imp.pl
Voici le programme basé sur mes plugins perl précédents. Celui-ci va lire, ou créer s'il n'existe pas, un fichier temporaire où on stockera la valeur simulant le nombre de pages de la soi-disant imprimante. Ce fichier sera stocké dans le dossier /var/lib/centreon/centplugins et sera indexé par l'option -n. Cette option permet de différencier les fichiers temporaires dans le cas d'utilisation simultanée du plugin. Nous prendrons comme référence, une imprimante HP pouvant imprimer 42 pages à la minute. Nous réaliserons un check toutes les cinq minutes, ce qui donne une valeur max théorique de 42 pages x 5 minutes = 210 pages. Nous utiliserons pour notre plugin une valeur aléatoire ne dépassant pas 180.
#!/usr/bin/perl -w #=============================================================================== # Auteur : kermith72 # Date : 07/04/2014 # But : plugin Centreon Tutoriel RRD simulant l'activité d'une imprimante #=============================================================================== use strict; # rends le language moins permissif, déclaration de variable obligatoire,... use warnings; # affichage des avertissements, on peut utiliser /usr/bin/perl -w use Nagios::Plugin; # Chargement du module CPAN # déclaration variable $licence my $licence = "This program is free software; you can redistribute it and/or modify it under" ." the terms of the GNU General Public License as published by the Free Software" ." Foundation ; either version 2 of the License."; # déclaration de la sonde my $np = Nagios::Plugin->new( shortname => 'Test compteur imprimante', usage => 'Usage : %s -n|numero', license => $licence, version => '1.00', blurb => "Ce plugin est un test pour le RDD " ); # Définition de l'argument --numero ou -n $np->add_arg( spec => 'numero|n=f', help => 'numero fichier', # Aide au sujet de cette option required => 1, # Argument obligatoire ); # Récupération des valeurs de paramètres $np->getopts; # logique du programme #declaration des variables my $nbpage; my $pagetotal; my $filename; my $fh; my $command; my $code_retour; my $compteur; $filename = "/var/lib/centreon/centplugins/check_imp".$np->opts->numero.".tmp"; # lecture du résulat précédent if (-e $filename) { open ($fh, '<', $filename) or die "impossible d'ouvrir le fichier"; $compteur = <$fh>; close $fh; } else { $compteur = 0; } # nombre aléatoire entre 0 et 180 $nbpage = int rand(181); $pagetotal = $compteur + $nbpage; # sauvegarde du résultat open ($fh, '>', $filename) or die "impossible d'ouvrir le fichier"; print $fh $pagetotal; close $fh; # ajout des données de performances $np->add_perfdata( label => "compteur", value => $pagetotal ); # traitement du code retour $np->nagios_exit( OK, "all test imp OK $nbpage : $pagetotal"); __END__
Nous pouvons tester notre plugin avec l'exécution de la commande ci-dessous
./check_test_imp.pl -n 724
Test compteur imprimante OK - all test imp OK 178 : 178 | compteur=178;;
Si vous relancez la même commande avec le même numéro, le compteur va s'incrémenter.
./check_test_imp.pl -n 724
Test compteur imprimante OK - all test imp OK 164 : 342 | compteur=342;;
1.2 utilisation du plugin dans Centreon
Ce plugin ne pourra fonctionner que sur le serveur de supervision car il s'exécute en local et il utilise le dossier temporaire des plugins Centreon. Nous allons faire une configuration minimale.
1.2.a commande de plugin
Créez la commande, dans l'exemple ci-dessous, nous utilisons une macro personnalisée appelée $_SERVICEP0RT$ pour l'option n.

la commande de plugin check_imprimante
1.2.b le service
Créez le service pour le serveur de supervision. N'oubliez pas la macro, nous affecterons le numéro d'identification 257. Pensez à la relation au serveur de supervision avec le deuxième onglet. Nous n'affecterons pas de graphe par défaut.

le service test_compteur

La relation service-hôte
Appliquez la configuration au serveur de supervision. Vous devriez avoir rapidement l'image ci-dessous :

le service en état de fonctionnement
1.3 Interprétation du graphe
Au bout de quelques heures, nous obtiendrons ce graphe.

premier graphe
Nous ne pouvons pas dire que cela correspond entièrement à nos attentes. En effet la courbe affiche une incrémentation quasi constante de la représentation d'un compteur du nombre de pages d'une imprimante. C'est le fonctionnement de la métrique de type GAUGE, adapté à la mesure des espaces de stockage, des seuils de températures, etc...
Nous devons utiliser la métrique de type COUNTER permettant de calculer la différence entre deux points d'enregistrement. La seule condition est de ne pas avoir de valeur inférieure par rapport à l'enregistrement précédent. Ce ne sera pas le cas dans notre exemple.
Nous devons utiliser la métrique de type COUNTER permettant de calculer la différence entre deux points d'enregistrement. La seule condition est de ne pas avoir de valeur inférieure par rapport à l'enregistrement précédent. Ce ne sera pas le cas dans notre exemple.
1.3.a Changement du type de métrique
Pour changer le type de métrique, sélectionnez Administration / Options / CentStorage / Manage. Repérez votre graphique et cliquez sur le service.

Choix du graphique
Le métrique compteur est du type GAUGE et nous voulons un type COUNTER. Sélectionnez votre métrique.

metric compteur
Sélectionnez le menu Set RRD Data Source Type to COUNTER

choix du type de metric

Confirmez votre choix
Votre métrique a changé de type.

metric de type COUNTER
Maintenant, vous devez absolument reconstruire la base de données RRD. Pour cela, retournez dans la vue manage de CentStorage, cochez le graphique et sélectionnez le menu Stop rebuilding RRD Databases.

reconstruction de la base RRD
Un indicateur vous indique que l'opération est pris en compte.

reconstruction de la base RRD

L'explication de la reconstruction de la base
Votre graphe a été créé avec le type GAUGE, comme l'indique cette commande. Le champ ds est de type GAUGE.
Votre graphe a été créé avec le type GAUGE, comme l'indique cette commande. Le champ ds est de type GAUGE.
rrdtool dump 16.rrd | more
0003 300 1398863929 value GAUGE 3000 NaN NaN
La reconstruction de la base permettra de changer le type au bout de quelques minutes (ou secondes en fonction de votre architecture) comme le montre cette commande réalisée après la reconstruction. Le champ ds a changé de type.
rrdtool dump 16.rrd | more
rrdtool dump 16.rrd | more
0003 300 1398863929 value COUNTER 3000 NaN NaN
Après quelques minutes, votre graphique est plus conforme à notre attente.

Graphique avec un métrique de type COUNTER
1.3.a Configuration de la courbe
Modifions la courbe, nous n'avons pas besoin des valeurs Last, Average. Nous garderons les valeurs Min et Max. Nous changerons la couleur et le label de la courbe. Pour cela, ajoutons une courbe. Sélectionnez Views / Graphs / Curves

Ajouter une courbe
Le graphique a changé avec les options désirées.

Ajouter une courbe

Spécifier le type de Data Source directement dans votre plugin.
Si vous utilisez Centreon-Broker, il est possible de spécifier directement dans le résultat de votre plugin le type de votre métrique. Pour notre cas, nous pouvons utiliser c pour COUNTER comme ci-dessous
Si vous utilisez Centreon-Broker, il est possible de spécifier directement dans le résultat de votre plugin le type de votre métrique. Pour notre cas, nous pouvons utiliser c pour COUNTER comme ci-dessous
# ajout des données de performances $np->add_perfdata( label => "c[compteur]", value => $pagetotal );
Le graphe sera identique au graphe affiché ci-dessus.
1.4 Afficher des données cohérentes
Nous avons un graphe, encore faut-il qu'il soit pratique et lisible. Les valeurs verticales indique des millièmes (m). Cela ne correspond pas à notre attente de valeur de page par minutes. En fait, les valeurs correspondent au nombre de pages par seconde. Explication : Rrdtool va stocker le résultat de la différence entre la valeur actuelle et la valeur enregistrée. le résultat sera divisé par l'intervalle de temps.
Exemple :
le compteur affiche 6000 à 8 h 00
il affiche 6060 à 8 h 05
résultat : (6060-6000)/300s = 0,2 pages / seconde de moyenne à 8 h 05
Pour arriver à un résultat cohérents en pages par minute, nous allons créer une métrique virtuelle que nous associerons avec le graphe.
Exemple :
le compteur affiche 6000 à 8 h 00
il affiche 6060 à 8 h 05
résultat : (6060-6000)/300s = 0,2 pages / seconde de moyenne à 8 h 05
Pour arriver à un résultat cohérents en pages par minute, nous allons créer une métrique virtuelle que nous associerons avec le graphe.
1.4.a Créer une métrique virtuelle
Pour créer une métrique virtuelle, sélectionnez Views / Graphs / Metrics. Cliquez sur Add

création d'une métrique virtuelle
Metric Name : ppm
Host / Service : supervision / test_compteur
DEF Type : CDEF
RPN : compteur,60,*
Warning Threshold : 35
Critical Threshold : 40
Comments : métrique nb de page par minute
Sauvez votre métrique et visualisez de suite votre graphique.

Graphique avec la métrique virtuelle
Rajoutons les deux lignes dans le fichier caché .profile. Nous avons une représentation de l'activité plus conforme à nos attentes. Il reste à customiser notre courbe ppm et le graphique en général. Commençons par la courbe.

Courbe ppm
Puis le template du graphique, ajoutons un template graphe_impression

Ajouter un modèle de graphe graphe_impression
Affectez le template graphe_impression au service test_compteur.

Onglet Service Extended Info
Admirons le résultat. la couleur de la courbe précédente est modifiée pour une couleur proche du blanc afin de la faire disparaître au maximum. Nous avons bien des valeurs Nb pages / minute.

Graphique avec la métrique virtuelle
1.5 Test de validité du plugin
Afin de vérifier la validité dama configuration, j'ai modifié mon plugin pour simuler le fonctionnement maximum de notre imprimante virtuelle soit 42 pages à la minute. Comme nous réalisons un check toutes les cinq minutes, il suffit d'incrémenter le compteur de 42 pages x 5 minutes = 210 pages.
# nombre 42 pages à la minutes soit 42 x 5 = 210 $nbpage = 210; $pagetotal = $compteur + $nbpage;
Et voici le graphe. La courbe indique bien un fonctionnement de maximum de 42 pages à la minute.

vérification du plugin