Script PERL Centreon permettant de récupérer la CPU d’un Switch Cisco 4500X en VSS.

Les switchs 4500X de Cisco peuvent se mettre en VSS. Le souci vient pour récupérer la consommation CPU des switchs. En SNMP avec les MIB classique on ne récupère que la CPU du switch actif. Voici une alternative.

A travers ce script, nous allons récupérer directement sur la CPU utilisée par les 2 switchs de la VSS.

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).

Avant de commencer, une petite définition de la VSS Cisco s’impose pour ceux qui ne connaissent pas :
Le Virtual Switching System (VSS) est une fonctionnalité Cisco disponible sur les Catalyst 6500 et sur les 4500X entre autre. Il permet de créer un commutateur logique à partir de 2 châssis physiques. Cette technologie permet de déployer une topologie de niveau 2 tout en évitant les problématiques souvent complexes liées au Spanning-Tree.

Plutôt que de longs discours, voici une illustration du Virtual Switching System (VSS) de Cisco :

script_vss_cpu_1

Le VSS permet à partir de 2 Catalyst 6500 ou 4500 physiques de créer une entité logique unique.

L’élément essentiel de la technologie VSS est un lien appelé VSL (Virtual Switch Link) permettant de relier deux Catalyst 6500 fédérateurs. Ce lien permet entre autre l’échange de messages de contrôles et de signalisations entre les 2 équipements physiques afin de former un commutateur logique.

Après cette brève définition passons au plugin.

Vu qu’il n’existe pas d’OID pour récupérer les CPU des 2 switchs, nous devrons utiliser le module CPAN Net::SSH::Expect pour se connecter sur le switch, exécuter une commande et récupérer le résultat pour ensuite l’interpréter.

La commande Cisco pour récupérer la CPU des 2 switchs est :

#show proc cpu | section include Core

script_vss_cpu_2

Avec ce plugin nous allons récupérer la valeur sur l’utilisation de la CPU one minute.

Intéressons-nous maintenant au script PERL :

script_vss_cpu_3

L’utilisation de use strict dans le script rend la déclaration des variables obligatoires.

Le plugin utilise 2 modules CPAN NET ::SNMP et NET ::SSH ::EXPECT (pour la connexion SSH sur l’équipement et l’exécution de commande).

script_vss_cpu_4

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

  • $opt_host : permet de saisir l’adresse IP de l’équipement à surveiller.
  • $opt_community : permet de saisir la communauté privé ou public ou autre de l’équipement.
  • $opt_version : permet de saisir la version de la communauté 1-2C-3.
  • $opt_command : permet de saisir la commande à exécuter sur le switch pour récupérer les valeurs de la CPU par exemple.
  • $opt_w : permet de saisir une valeur de Warning pour la CPU.
  • $opt_c : permet de saisir une valeur de Critical pour la CPU.

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.

script_vss_cpu_5

  • Ligne 94 à 101 : définition des arguments pour effectuer la connexion sur le switch Cisco.
  • Ligne 104 : Connexion via le module NET ::SSH :EXPECT sur l’équipement Cisco.
  • Ligne 107 : Exécution de la commande sur le switch.

script_vss_cpu_6

  • Ligne 110 : permet de récupérer chaque ligne de retour de la commande exécutée.
  • Ligne 113 : On créé un tableau, avec comme séparateur les : et on stocke les résultats de la commande concernant la ligne en cours d’analyse.
  • Ligne 116 à 124 : Récupération de la valeur numérique uniquement de la CPU utilisée à 1 minute sur les 2 switchs de la VSS si la condition est bonne.

script_vss_cpu_7

  • Ligne 140 à 159 : test des valeurs de la CPU et affichage du message dans centreon.
Par convention dans mes scripts, je prends les variables suivantes :

  • $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 désignation de la valeur et la valeur.
  • $output : pour la sortie du message à afficher 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 centreon-engine.

script_vss_cpu_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_cisco4500x_cpu_vss -h

Ce qui donne par exemple :

#./check_ssh_cisco4500x_cpu_vss -H 192.168.2.118 -Y public -V1 -K "sh proc cpu | section include Core" -W 40 -C 50

script_vss_cpu_9

Une fois le plugin intégré dans Centreon vous aurez ceci :

script_vss_cpu_10

Et en version graphique cela donne :

script_vss_cpu_11

Vu que je ne suis pas un spécialiste de la programmation en PERL, ce script peut sûrement êtres optimisé. Si vous modifiez et/ou utiliser le plugin merci de laisser un petit commentaire cela fait toujours plaisir.

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 *