AXOPEN

Plugin de traitement d’information JBoss AS 7 pour Nagios

Avec Jboss AS 7  il est difficile de trouver un plugin simple permettant à la fois de remonter les informations de monitoring et des graphiques de performances.

Pour cela il faut traiter les informations que nous remonte notre commande d’extraction (Voir l’article "Extraction des informations de monitoring JBoss AS 7").

Le plugin permettra d’afficher les informations demandées et de remonter le graphique de chaque service sur Centreon.

Pour ce plugin nous travaillerons avec le langage perl, ce langage reprend des fonctionnalités du langage C et des langages de scripts sed, awk et shell(sh).

Ce langage est adapté au traitement et à la manipulation de fichiers texte, notamment du fait de l’intégration des Regex (Expressions régulières) dans la syntaxe même du langage.

Ce qu’il faut savoir

my suivi de $_ ou de @_ permet la déclaration de variables ou de tableaux.

$_ suivi d’un mot permet de dire que le mot est une variable.

@_ suivi d’un mot signifie que ce mot est un tableau.

La commande split coupe une réponse en fonction du symbole désigné afin de le glisser dans les cellules d’un tableau.

Pour exploiter la cellule d’un tableau, il faut appeler le tableau comme variable en précisant la cellule voulu entre crochet à la fin de l’appellation.

my $phrase = "Ceci est une explication détaillée";
my @tableau = split(/\s/, $phrase);
print $tableau[3];

Il faut toujours terminer par  " ; " après une instruction sauf après une condition.

Mode opératoire

Il faut d’abord lui indiquer quel langage va interpréter notre script.

#! /usr/bin/perl -w

Ensuite il faut analyser la commande et transformer tout ce qui peut être modifié en variable.

my $limitet;
($limitet) = ($limite =~ m/([^{]*)$/);   

 Sans titre 2

Ce qui peut être changé sont :

– l’utilisateur            – le mot de passe          -le port          -le serveur          -l’argument

 

# Récupérer le fichier réponse#

my $connection;
($connection) = $user.":".$mdp.$opt_H.":".$port;
my $command_curl= "--digest -L -D - http://".$connection."/management/ -d '".$commande."'  -HContent-Type:application/json";
my $limite = `curl $command_curl`;

 

Ensuite il faut faire un Regex afin de ne sélectionner que le  résultat dont il nous faut pour remonter des données de performances afin que Centreon (interface graphique améliorée des services de Nagios) les interprètes pour afficher les graphs.

Pour tester les Regex sous Perl j’ai choisi http://www.regexe.com.

my $limitet;
($limitet) = ($limite =~ m/([^{]*)$/);

Ensuite organiser la réponse dans un tableau afin de ne remonter que ce dont nous avons besoin.

Puis fait le traitement du résultat. Utiliser une boucle pour que toutes les cellules du tableau soit traitées en fonction de leurs nombres. On refait ensuite un autre regex pour retirer toutes les syntaxes qui pourrait nous gêner et on affiche le tout.

Sans titre 1

Le pipe (mot anglais, le tube "|") permet de remonter les informations en données de performances, le point permet de concaténer les variables et les chaines de caractères.

Maintenant, le plus dur est fait, il faut ajouter des options au plugin pour lui permettre donner les valeurs aux variables à partir du terminal.

11

 

Afin que le plugin ne se lance pas s’il manque des informations il faut ajouter la commande "unless".

10

Use Getopt ::Long ; permet d’attribuer aux variables la valeur des options.

On peut ajouter plus d’options comme l’affichage d’aide ou de la version du plugin.

9

 

Et ajouter en fin du plugin :

8

 

Ligne de commande

Une fois le plugin terminer lancer le en ligne de commande dans le dossier des plugins de Nagios, par default aller dans /usr/local/nagios/libexec/

Autoriser le plugin a s’exécuté : chmod 755 nom_de_mon_plugin.pl puis le plugin : ./nom_de_mon_plugin.pl

Le résultat devrait être de ce type : 

7

 

Sur centreon :

Aller dans Configuration –> Commandes –> Ajouter :

6

Complèter la page en vous aidant des listes déroulantes, selectionner le connecteur perl, et le modèle de graphique par default.

Puis ajouté un service de la même manière que pour la commande, l’attribuer à un Hôtes puis redémarrer.

Aller dans supervision cliquer sur le service et au bout de quelques minutes un graphique apparait.

Sans titre5