Nagvis - créer des gadgets

, par  admin

Bonjour,

Dans ce tutoriel, nous allons décomposer les étapes de la création d’un gadget de base pour une supervision Nagvis. Dans cet exemple, nous allons monitorer le nombre d’utilisateurs connectés sur un serveur Citrix.

Prérequis :

  • le gadgets_core.php (par défaut dans le dossier nagvis)
  • notre gadget perso.php (Dans le dossier d’installation par défaut des gadgets nagvis : root@NAGVIS :/usr/local/nagvis/share/userfiles/gadgets#)
  • des connaissances de base en php
  • Le plugin Nagios nrpe installé sur notre serveur de supervision (Ubuntu server 12.04 LTS) et sur le serveur à superviser (Windows Server 2008 R2). Vous pouvez consulter le lien du tutoriel traitant de cette étape ci dessous : Nagios - Installer des plugins

Précisions :

Les paramètres disponibles dans le gadget sont inclus dans la variable $aOpts de gadget_core.php :

* aOpts[’name1’] - Hostname
* aOpts[’name2’] - Servicename
* aOpts[’state’] - State of the service (OK, WARNING,
* CRITICAL, UNKNOWN)
* aOpts[’stateType’] - Type of the state (HARD, SOFT)
* aOpts[’scale’] - Scale of the gadget in percent (INTEGER)

Si l’on veut récupérer la valeur du service il faut utiliser :
$aOpts[’perfdata’’]

Création du gadget perso.php :

Pour les plus pressés d’entre vous, l’intégralité du code sans les explications est disponible à la fin de cet article !

Nous commençons par inclure le fichier gadget_core.php puis nous définissons nos variables :

<?php
require('./gadgets_core.php');

nous allons récupérer la valeur contenue dans le fichier perfdata à laquelle nous concaténons le texte de notre choix :

$label= substr($aOpts['perfdata'],8)." Citrix Users ";

Puis les variables utiles à la customisation de notre gadget (couleur, taille...)

$fontFile = './police/CALIBRI.TTF';
$fontSize = 70;
$img = @imagecreate(150,30);
$Background = imagecolorallocate($img, 255, 255, 255);
$Green = imagecolorallocate($img, 61, 150, 44);
$Yellow = imagecolorallocate($img, 239, 178, 59);
$Red = imagecolorallocate($img, 208, 30, 7);

Les prochaines variables peuvent être paramétrées directement dans la commande check_nrpe mais nous choisissons de les définir dans le fichier php. (afin d’éviter les bugs dans la prise en compte des arguments warning et critical de la commande check_users).

$warn = 5;
$crit = 7;

La valeur va ainsi s’afficher en orange à partir du 6ème utilisateur Citrix puis en rouge à partir du huitième :

if (substr($aOpts['perfdata'],8) > $warn) {
       if (substr($aOpts['perfdata'],8) < $crit) {
               ImageString($img, $fontSize, 15, 0, $label, $Yellow);
       } else {
               ImageString($img, $fontSize, 15, 0, $label, $Red);
               }
} else {
ImageString( $img, $fontSize, 15, 0, $label, $Green);
}

Le code se termine par l’affichage du gadget :

header("Content-type: image/png");
imagepng($img);
imagedestroy($img);

Ce gadget affiche ainsi le nombre d’utilisateurs connectés, la couleur s’adapte aux seuils que nous avons défini dans les variables $warn et $crit.

Il est temps de tester votre gadget dans nagvis (voir procédure ci dessous)
Nagvis - Ajouter des gadgets

PNG

Si rien ne s’affiche, il est temps de reprendre chaque étape de votre code php. Vous devez également vous assurer que le plugin nrpe et le service associé soient opérationnels dans nagios :

Plus d’info sur le plugin check_users dans l’article Nagvis - Monitorer le nombre d’utilisateurs Citrix connectés

L’intégralité du fichier perso.php en PJ ci dessous ;)

Un peu de théorie... Tous les cours théoriques