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.
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 :
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 CoreAvec ce plugin nous allons récupérer la valeur sur l’utilisation de la CPU one minute.
Intéressons-nous maintenant au script PERL :
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).
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.
- 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.
- 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.
- Ligne 140 à 159 : test des valeurs de la CPU et affichage du message dans centreon.
- $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.
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
Une fois le plugin intégré dans Centreon vous aurez ceci :
Et en version graphique cela donne :
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.
That’s All.