Script PERL Centreon permettant de récupérer l’atténuation d’un module optique.

A travers ce script PERL pour Centreon, nous allons récupérer l’atténuation d’un module optique à l’intérieur d’un châssis Cisco 6500. J’ai développé ce script afin de superviser la puissance reçu par les modules de notre cœur de réseau, pour surveiller la stabilité de notre boucle WDM.

Comme d’habitude vous retrouverez ce script et les différentes mises à jour et correctifs sur mon dépôt Github à cette adresse : https://github.com/quick-tutoriel (n’hésitez pas à vous abonner) :

A ma connaissance il n’est pas possible de récupérer l’atténuation d’un module optique via les MIB Cisco. Nous allons donc utiliser un plugin qui permet d’exécuter une commande sur le châssis Cisco et interpréter le résultat de la commande pour fournir une sortie à Centreon. Le tout en SSH.

La commande Cisco utilisée pour récupérer l’atténuation d’un module fibre optique est :

#show interface nom_interface transceiver detail

attenuation_centreon_1

La ligne qui nous intéresse est la dernière et particulièrement la colonne Optical Receive Power, qui nous indique l’atténuation avec le switch d’en face. Les autres colonnes vous donnent les seuils d’alertes.

La commande utilisée dans le script sera celle-ci :

#show interface nom_interface transceiver

attenuation_centreon_2

La valeur qui nous intéresse ici est la dernière : colonne Rx Power (dBm).

Après ces brèves explications passons au détail du script.

attenuation_centreon_3

Ce script utilise 2 modules CPAN : Net ::SSH ::Expect, Net ::SNMP.

attenuation_centreon_4

Avant de commencer le traitement, je vérifie que toutes les options soient saisies :

  • La variable $opt_interface permettra de récupérer la ligne qui nous intéresse dans la sortie de la commande. Cette variable prendra comme valeur soit Gi pour giga soit Te pour tengiga en fonction du type d’interface sur votre switch.
  • La variable $opt_command vous permettra de saisir la commande à utiliser pour récupérer l’atténuation du port sur le switch.
  • Les variables $low_limit et $upper_limit permettent de définir les seuils d’alertes.
  • Les variables $opt_user et $opt_password permettent de saisir en dur les identifiants, si vous ne voulez pas les saisir en argument dans la ligne de commande du plugin.

attenuation_centreon_5

Voici (ci-dessus), le bout de code qui permet de traiter la sortie de la commande. Le but est de mettre chaque ligne du résultat de la commande dans un tableau (@tab) puis ensuite sélectionner la ligne qui nous interesse et récupérer dans un autre tableau (@attenuation) uniquement les valeurs numérique et ne conserver que la dernière grâce à la commande $attenuation[-1].

Pour vous faciliter la compréhension de ce bout de code, voici le résultat de la commande $line avant la mise dans le tableau (ligne 104).

attenuation_centreon_6

Ensuite on sélectionne la ligne (Ligne 107 dans le code) qui commence par Te, pour récupérer les valeurs d’atténuation.

attenuation_centreon_7

Ici nous préparons la sortie des résultats pour Centreon. Par convention je prends

  • $status : pour le statut du résultat (OK, WARNING, CRITICAL, UNKNOWN)
  • $perfdata : pour les données graphiques. N’oublier pas de mettre le signe = entre la designation de la valeur et la valeur
  • $output : pour la sortie dans Centreon

Maintenant passons à l’exécution du plugin. Si vous avez des difficultés dans Centreon pour créer votre plugin, j’ai détaillé lors de mon premier tutoriel la création d’un plugin avec des modèles de services et d’hôtes à cette adresse : https://quick-tutoriel.com/script-perl-pour-la-sauvegarde-dune-appliance-cisco-asa-5500/.

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 nagios (Version CES V2.1).

attenuation_centreon_8

Chaque plugin doit avoir une aide. Vous pouvez l’afficher avec le commutateur –h, cela vous indique les arguments à passer au plugin.

Voici la commande à passer :

./check_ssh_cisco_command_transceiver -H ip_switch -C "show interface nom_interface transceiver" -I Te -L lower_limit -U upper_limit

Ce qui donne par exemple :

./check_ssh_cisco_command_transceiver -H 192.168.123.1 -C "show interface ten 1/9/6 transceiver" -I Te -L -18.4 -U 0.4

Une fois le plugin créé dans Centreon vous aurez ce genre de sortie :

attenuation_centreon_9

Ce qui donne en graphique :

attenuation_centreon_10

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

Précisions concernant l’utilisation du plugin :

  • Vous pouvez forcer le login et le password dans le script si tous vos équipements Cisco utilisent le même login-password (Ligne 76 et 79 du plugin)
  • N’oublier pas de saisir dans les paramètres du plugin le type d’interface Gi ou Te
  • Pour déterminer les seuils utiliser la commande show interface nom_interface transceiver detail
  • Dans Centreon, j’exécute le plugin toutes les heures et non toutes les 5 minutes comme par défaut
  • J’ai testé le plugin sur des Catalyst 6500 et 4500

N’oubliez pas le dépôt Github pour récupérer le script, à cette adresse : https://github.com/quick-tutoriel (n’hésitez pas à vous abonner).

That’s All.

Laisser un commentaire

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