Script PERL Centreon permettant de superviser le POE sur des switchs Cisco.

Avec ce script vous pourrez surveiller la consommation de vos appareils POE sur votre switch et déclencher une alerte le cas échéant. Comme d’habitude vous retrouverez ce script et les différentes mises à jour et correctifs sur mon dépôt Github à cette adresse : Github Quick-Tutoriel (n’hésitez pas à vous abonner).

Avant toute chose un petit rappel s’impose concernant le POE.

Le Power over Ethernet (POE) permet de faire passer une tension de 48 V (jusqu’à 12 W de puissance voire plus 25 W avec du POE+) en plus des données à 100 Mbit/s ou 1 Gbit/s. Cette technologie alloue deux paires (ou plus) sur les quatre paires que contient un câble UTP ou STP afin d’alimenter certains appareils d’un réseau Ethernet tels que des téléphones IP, des disques durs réseaux, des imprimantes, des caméras IP ou des points d’accès Wi-Fi.

Avant toute chose un petit rappel s'impose concernant le POE.

Un câble Ethernet est composé de quatre paires de fils. Quand la connexion s’établit à 100 Mbits, les données transitent sur deux paires seulement, à savoir les fils 1, 2, 3 et 6; les deux autres paires inutilisées, à savoir les fils 4, 5,7 et 8, peuvent être utilisées pour véhiculer le courant électrique. Dans la plupart des cas le POE passe par un fil de la paire 1,2 et un autre fil de la paire 3,6 en même temps que les données.

Les options du script PERL.

Utilisation de modules CPAN dans un script PERL

Ce script utilise 2 modules CPAN : Net ::SSH::Expect (J’utilise ce module au lieu de Net::SSH::Perl ou Perl::SSH2 car je rencontre beaucoup moins de problème de connexion SSH ou encore de passage en mode enable, de plus ce module est plus adapté pour passer plusieurs commandes dans la même session) et Net ::SNMP.

test des variables saisies par un utilisateur dans un script PERL

J’utilise toujours le même modèle pour mes scripts. Donc avant de commencer le traitement, je vérifie que toutes les options soient saisies :

  • La variable $opt_host permet d’indiquer l’adresse ip du switch à superviser
  • La variable $opt_command permet de définir la commande CLI à exécuter sur le switch Cisco. Ici pour récupérer les infos sur le POE dont nous avons besoin, nous allons utiliser la commande suivante :
    #show power inline | exclude n/a (exclude n/a permet de ne pas afficher les ports qui n’utilisent pas de POE afin d’améliorer la vitesse de traitement du script, notamment sur des switchs de 7 cartes de 48 ports)
  • La variable $opt_w permet de définir la valeur en watt pour afficher un warning dans Centreon
  • La variable $opt_c permet définir la valeur en watt pour afficher un critical dans Centreon
  • Les variables $opt_user et $opt_password permettent de saisir le login et mot de passe pour se connecter sur le switch. Pour éviter d’utiliser ces identifiants dans Centreon, vous pouvez définir les valeurs dans le script Ligne 82 pour le user et Ligne 85 pour le mot de passe.

Le script PERL.

Nous allons maintenant examiner les portions de codes les plus intéressantes du plugin.

Exemple de code PERL pour une connexion SNMP à un switch Cisco

  • 98 à 104 : Paramètre nécessaire pour se connecter à l’équipement Cisco 4500 avec le module Net::SSH::Expect
  • 106 : Connexion à l’équipement.
  • 111 : On utilise cette astuce pour afficher le résultat entier de la commande sans le –MORE—
  • 112: On exécute la commande sur le switch.

Exemple de code PERL avec une boucle while pour parcourir tous les ports d'un switch et récupérer des informations.

  • 116 : Dans cette boucle on lit chaque ligne de retour de la commande passée.
  • 119 : Dans cette condition nous allons récupérer la puissance totale disponible sur le switch, elle se trouve sur la ligne Available. Ensuite on met chaque mot de la ligne dans un tableau. Le séparateur est un espace (Ligne 121).
  • 127 : dans cette condition on récupère 2 valeurs le nombre de périphériques POE connecté au switch ainsi que la puissance consommée.
  • 137 : On réactive la valeur par défaut pour l’affichage des résultats d’une commande sur le switch, à savoir 24 lignes.

Exemple de code PERL appliqué au SNMP

  • 150 à 159 : On vérifie le résultat de la variable $consomation_poe pour déclencher une alerte dans Centreon si la puissance consommée est supérieur à nos limites.
  • 162: On construit le graphique de suivi avec 2 valeurs la puissance totale et la puissance consommée. On pourra personnaliser notre graphique avec une valeur maxi.
  • 163 : On affiche le résultat de la commande dans Centreon avec le nombre d’appareils connectés, la puissance totale disponible, la puissance consommée et le pourcentage de celle-ci pour une lecture rapide des résultats

Pour ma part j’utilise une CES (Centreon Entreprise Server) virtualisé. Le répertoire ou je dois copier mes plugins est le suivant : /usr/lib/nagios/plugins.

Avant d’intégrer le plugin dans Centreon je l’exécute toujours sur mon serveur pour vérifier que tout fonctionne correctement. Les scripts sont exécutés par l’utilisateur centreon-engine.

Vérifications de fonctionnement du plugin.

Vérification N°1 : Je m’assure que le plugin n’a pas d’erreur de programmation en affichant l’aide

Vérification du fonctionnement du plugin en affichant l'aide

Vérification N°2 : Je teste le plugin sur l’équipement désiré, avec de vrais valeurs et l’utilisateur qui exécute les scripts sous Centreon.

#su centreon-engine
#./check_ssh_cisco4500_poe -H 192.168.2.65 -k "sh power inline | exclude n/a" -w 1520 -c 2130

test du plugin avec l'utilisateur centreon-engine pour éliminer des problèmes de droits

Ajout de la commande dans l’interface de Centreon.

Attention!!! Lors de la création de la commande dans Centreon, j’utilise les macros pour les options du plugin. Généralement toutes les options sont dans le modèle au niveau du Host, mais pour celui-ci j’ai défini la variable $opt_command au niveau du modèle de l’host et les valeurs de warning et de critical seront à définir au niveau du service, car chaque switch pouvant avoir une puissance différente.

Ce qui se matérialise par ceci au niveau de la commande :

Ajout de la commande dans l'interface de Centreon.

On rajoute devant le nom de la variable _HOST pour indiquer que ce paramètre se situe au niveau du HOST et _SERVICE pour indiquer que ces paramètres sont à saisir au niveau du service.

Dans mon modèle pour les switchs Cisco, on retrouve bien la commande à exécuter sur le switch, dans les macros personnalisées :

Ajouter des macros dans une commande Centreon pour faciliter l'administration de votre supervision

Si vous voulez plus de renseignements pour créer une sonde suivez ce tutoriel : Créer une commande dans Centreon avec des macros

Une fois le plugin opérationnel, vous aurez ceci dans Centreon :

Affichage des résultats de la commande dans Centreon

Avec ce type de graphique par exemple :

Graphique d'utilisation du POE sur votre switch avec Centreon

Si vous modifiez et/ou utiliser le plugin merci de laisser un petit commentaire cela fait toujours plaisir.

Amélioration du plugin.

Voici une petite liste d’amélioration à réaliser :

  • Si vous n’indiquer pas le login et mot de passe via l’option, n’oublier pas de les rentrer en dur dans le plugin Lignes 82 et 85
  • Au lieu d’utiliser SSH on pourrait utiliser SNMP pour récupérer ces valeurs et améliorer la rapidité du script. En effet avec cette méthode il faut environ 1 minute pour avoir les résultats
  • On pourrait éviter de saisir la commande en option et la mettre en dur directement dans le script car ceci n’a pas trop d’intérêt avec le recul.

N’oubliez pas le dépôt Github pour récupérer le script, à cette adresse : Github Quick-Tutoriel (n’hésitez pas à vous abonner).

That’s All.

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *

leo ut consectetur quis, consequat. vel, Praesent id,
2 Partages
Partagez
Tweetez1
Enregistrer1
Partagez
Partagez
Pocket
Print