Archives de catégorie : Administration système

SNMPB : faire des requêtes SNMP avec un outil graphique

 

Bonjour, je suis Cédric Temple et bienvenue sur le blog http://blog.cedrictemple.net. Dans cette vidéo je vais vous présenter un outil graphique pour réaliser des requêtes SNMP. Le nom de cet outil est SNMPb. B comme bébé.

Les points forts de SNMPb sont nombreux. Tout d’abord c’est un logiciel Libre. Il est aussi gratuit. L’équipe de SNMPb fournit des versions pré-compilées pour Windows et des versions RPM et Debian pour Linux. Il supporte à la fois le protocole SNMP dans ses version 1, 2c et 3. Il permet de réaliser des requêtes SNMP GET/WALK/SET/TABLE. Il affiche la description des OIDs, peut importer des MIBs efficacement et effectuer des recherches dans des OIDs.

Tout d’abord, nous allons voir où le récupérer, puis l’installer et enfin son utilisation.

Téléchargement de SNMPb

SNMPB est disponible sur le site web de Sourceforge SNMPb: . Pour le trouver, il suffit de faire une recherche avec le mot clé « SNMPb ».

Ensuite, on peut cliquer sur « download » et choisir la version souhaitée. L’installation ne requiert a priori pas de dépendance particulière. Je l’ai personnellement installé sur Ubuntu et sur Mandriva sans avoir de message d’erreur. De mon côté, je l’ai déjà installé sur mon poste et nous allons voir comment l’utiliser.

Utilisation de SNMPb

SNMPb répartit les fonctionnalités principales en différents onglets. Le premier onglet permet d’interroger un agent SNMP. La première partie correspond à l’agent qui sera interrogé. Ensuite, nous avons l’arbre des MIBs. On peut dérouler cette MIB en cliquant sur les différents OID. En faisant un click droit sur un OID, on accède aux actions telles que le WALK ou le GET. En cliquant sur un OID, la vue du bas donne des informations sur celui-ci : le nom, l’oid complet, le type et surtout la description. Je vous invite à toujours bien lire la description afin de bien interpréter la valeur de l’OID. Je rencontre beaucoup erreurs faites par des personnes qui ne lisent pas attentivement la description. C’est très très important. En faisant un click droit puis l’opération désirée, on obtient le résultat dans la vue de droite.

Paramétrage de l’hôte à interroger

Pour paramétrer l’agent à interroger, on clique sur le bouton … On rentre les paramètres par globaux: nom de l’équipement, adresse IP ou nom DNS, port SNMP, les versions SNMP gérées. Ensuite, en cliquant sur la gauche, on peut configurer la communauté SNMP. Il faut noter que pour configurer une version de SNMP, il faut avoir cocher la case dans les paramètres globaux.

Paramétrage des modules

Une fois l’agent SNMP à interroger correctement configuré, il est nécessaire d’indiquer à SNMPb quelles sont les MIBs à charger. SNMPb inclut quelques MIBs par défaut. Toutes ne sont pas chargées et toutes les MIBs existantes ne sont pas référencées. Moi, j’ai pour habitude de stocker toutes mes MIBs dans un seul répertoire composé de sous répertoire. Il faut indiquer à SNMPB quels sous répertoires il doit analyser afin d’y trouver les MIBs. Cela se fait dans le menu Options–>Preferences. Puis il faut cliquer sur Modules.

Je vous invite aussi à ajouter les MIBs fournies par le système Linux. Une fois ceci fait, vous pouvez valider. Ensuite, il faut se rendre dans l’onglet « Modules » et sélectionner quelles sont les MIBs à charger en les faisant passer de la vue de gauche à la vue de droite. Dans le doute, vous pouvez cliquer sur une MIB pour obtenir des informations détaillées sur celle-ci.

Requêtes simples avec SNMPb

Une fois l’agent configuré et les MIBs chargées, il est possible de dérouler l’arbre des MIBs et de faire des requêtes sur des OIDs. Pour cela, il vous suffit de cliquer sur chaque noeud jusqu’à l’OID souhaité. Pour interroger un OID, il vous suffit de faire un click droit sur celui-ci et de choisir l’opération GET ou WALK.

Encore une fois, je vous invite à bien lire la description de l’OID. Par exemple, pour celui-ci, la description nous informe de deux choses:
1 – la valeur récupérée est en centième de secondes
2 – l’OID correspond à l’uptime de l’agent SNMP et non l’uptime de l’équipement interrogé
Un autre exemple : les partitions. L’OID hrStorageSize correspond à la taille d’une partition mais celle-ci est exprimée en nombre de cluster. Pour avoir la taille d’un cluster de partition, il suffit de récupérer l’OID hrStorageAllocationUnits. ATTENTION donc à bien lire la description afin de ne pas faire des erreurs d’interprétation.

SNMPTable avec SNMPb

Dans la première vidéo, je vous ai présenté le concept de « tableau SNMP ». SNMPb utilise ce concept pour vous présenter les informations récupérées de manière plus efficace. Prenons un exemple, différent de la vidéo précédente. Le taux d’occupation d’une partition est lié à plusieurs OIDs différents (hrstoragesize, hrstorageallocationunit et hrStorageUsed). SNMPb permet d’afficher tous les OIDs sous la forme de tableau. C’est à dire qu’en une seule requête, vous avez tous les résultats présentés sous forme de tableau. Dès lors, il est beaucoup plus simple pour un humain d’interpréter les chiffres. Pour faire ceci, il vous suffit de faire un click droit sur l’OID de haut niveau et de choisir « table View ». Dans le cas des partitions, on visualise alors très simplement le nom de la partition, la taille des cluster, le nombre total de cluster de la partition et le nombre de clusters occupés.

Je vous invite donc à l’utiliser très fréquemment lorsque vous disposez de valeurs sous forme de tableau, ce qui est la majorité des éléments.

Conseils sur SNMPb

Quelques conseils sur l’utilisation d’un outil SNMP graphique. Ces conseils ne sont pas liés qu’à SNMPb et peuvent s’appliquer à tout outil. Premier conseil : il est important de ne pas faire de WALK à la racine de l’arbre des MIBs. En effet, vous risquez de saturer l’agent SNMP et le réseau.

SNMPb permet de faire des recherches. Je vous invite à utiliser cette fonctionnalité pour chercher un OID en fonction d’un mot clé.

Attention à bien lire la description de l’OID.

Vous devez comprendre parfaitement la définition de l’OID pour éviter toute erreur. Vous devez être attentif notamment à la description, l’unité, la référence à d’autres OIDs, les limites (32/64 bits) des valeurs.

Si une MIB n’est pas disponible sur votre système vous pouvez la télécharger sur le site du constructeur ou sur un repository de MIBs. Nous allons détailler cela au travers d’un exemple. Rendez vous sur le site snmplink.

Cliquer sur Mib Repositories. Choisir un repository de MIB. Choisir une MIB, télécharger, la placer dans un répertoire, configurer SNMPb pour lire ce répertoire et enfin, charger les modules.

Éviter de charger trop de modules en même temps. Vous risquez de ralentir inutilement SNMPb.

Voilà, c’est tout pour cette vidéo. N’hésitez pas à participer. Pour cela, vous pouvez ajouter des commentaires à cet article. Si vous avez des questions, je vous invite à les poser. Si vous avez des précisions à apporter, ce sera avec joie. Si vous avez des suggestions, des propositions d’article, j’essaierai aussi de les prendre en compte selon mes moyens bien entendus.

 

Faire des requêtes SNMP en ligne de commande sous Linux

Voici une vidéo que j’ai réalisé sur l’utilisation de la ligne de commande Linux pour faire des requêtes SNMP. Vous trouverez en dessous de cette vidéo le texte sur lequel est basé cette vidéo. Les lignes de commande sont disponibles afin que vous puissiez les copier/coller si vous le souhaitez.

Bonjour, je suis Cédric Temple, bienvenu sur le blog http://blog.cedrictemple.net et bienvenu chez moi. Et oui, on est … chez moi. D’ailleurs, il se peut que vous voyez passer mon chat quelques fois, ou qu’un jouet pour enfant traîne sur le sol, qu’un mannequin de Victoria Secrets passe nue derrière moi ou qu’une voisine sonne.

Ha non, il n’y a personne!

Bref! Pourquoi me direz vous? Souvenez vous, j’avais fait quelques vidéos sur les ACLs de Centreon. J’enregistrais ce qui se passait sur mon bureau pendant que je vous parlais. C’était intéressant mais insuffisant. Je rencontrai un problème assez désagréable. J’avais le sentiment d’être assez enfermé : je ne pouvais pas parler pendant plusieurs dizaines de secondes sans que mon écran ne bouge. En effet, cela est très perturbant pour vous : vous vous attendez à avoir une synchronisation parfaite entre ce qui est dit et ce qui est montré. Si vous voyez un écran immobile pendant que je parle, cela va beaucoup vous gêner. Je devais donc me contraindre à éviter de parler trop longtemps sans que ça ne bouge à l’écran. Très, très gênant. Je le sais, moi-même ça me gêne dans les vidéos réalisées par d’autres. De ce fait, j’ai décidé de tenter une nouvelle expérience : me filmer pendant que j’aborde les sujets plus… théoriques et réaliser des captures d’écran lorsque je ferai les démonstrations techniques. Dites moi, dans les commentaires, si cela vous convient ou si vous préférez autre chose. Ce blog se veut ouvert. Il me permet de partager mes expériences avec vous et de recevoir vos commentaires, tant positifs que négatifs. N’hésitez pas à me les faire parvenir, j’en serai très ravis. J’essaierai, si cela m’est possible bien entendu, de prendre en compte vos remarques afin d’améliorer ce blog.

Différence entre SNMPGET et SNMPWALK

Aujourd’hui, nous allons voir comme faire des requêtes SNMP en ligne de commande sur un système Linux. L’idée n’est pas simplement de comprendre l’utilisation des commandes standards snmpget et snmpwalk mais d’aller un peu plus loin. En effet, comme vous pouvez le remarquer, je suis un vieux con : j’adore la ligne de commande. Les commandes recèlent tant et tant d’options qu’il est difficile de faire plus efficace et puissant. Nous verrons donc les options que vous n’utilisez peut-être pas mais aussi nous verrons d’autres commandes. L’idée est de vous montrer que vous avez un vrai intérêt, tant dans l’utilisation des options complémentaires que des autres commandes. Nous allons voir dans un premier temps les deux commandes standards : snmget et snmpwalk. Tout d’abord, quelle est la différence entre snmget et snmpwalk?

En fait c’est simple : snmpget permet de récupérer la valeur d’un OID feuille alors que snmpwalk permet de récupérer toutes les valeurs d’un OID « noeud ». Avec snmpget, vous récupérez une et une seule valeur : la valeur de l’OID demandé. Si cet OID n’est pas une feuille, vous n’aurez pas de réponse. snmpwalk permet de récupérer toutes les valeurs d’un sous-arbre : vous récupérerez toutes les valeurs disponibles en dessous de l’arbre.

ATTENTION : ne faites JAMAIS une requête snmpwalk sur la racine de l’arbre SNMP ou sur un noeud de haut niveau. Si vous faites cela, vous allez saturer l’agent SNMP interrogé, le réseau et votre poste. Dans le passé, vous pouviez saturer certains agents SNMP et il était nécessaire de les redémarrer voire de redémarrer l’équipement. Ce pourrait être très gênant si vous deviez demander à l’équipe réseau de redémarrer un routeur.

L’utilisation des commandes snmpget et snmpwalk est exactement la même, leur syntaxe est identique. Seul l’OID interrogé va différer, selon que vous souhaitez interroger un sous-arbre ou un OID feuille. Pour faire une requête, il vous suffit de taper pour snmpwalk:

snmpwalk -v <laversion> -c <lacommunaute> <adresseip> <oid>

Exemple :

snmpwalk -v 2c -c public 192.168.1.13 1.3.6.1.2.1.2.2.1.10

Si vous savez utiliser la commande snmpwalk, vous saurez utiliser snmpget. C’est exactement la même syntaxe :

snmpget -v <laversion> -c <lacommunaute> <adresseip> <oid>
snmpget -v 2c -c public 192.168.1.13 1.3.6.1.2.1.2.2.1.10.1

La différence de résultat entre snmpwalk et snmpget est flagrante. Avec snmpwalk, vous obtenez plusieurs réponses. Avec snmpget, pour le même OID, vous n’obtenez aucune réponse mais vous obtenez une réponse avec un oid feuille.

Options de sortie

snmpget et snmpwalk disposent d’options complémentaires. Peu de personnes les utilisent, ce qui est dommage car certaines sont très utiles et vous apportent des informations complémentaires. Parfois même, certains ne savent pas qu’elles existent car ils n’ont pas identifié la bonne documentation. Généralement, sur Linux, pour avoir de la documentation sur une commande, on tape

man <nomdelacommande>

C’est pareil pour ces commandes mais avec une subtilité : les options communes de toutes les commandes snmpget, snmpwalk mais aussi toutes les autres snmptable, snmpbulk, snmpdelta, … sont regroupées dans une seule et même page de man. Cette page de man est :

man snmpcmd

snmpcmd : cmd comme « commande »

Nous n’allons pas détailler toutes les options possibles mais noter celles qui sont intéressantes. Toutes les options dont je vais parler sont celles liées à l’affichage des résultats. Une commande snmpwalk sans option de sortie particulière affiche ses résultats en format raccourcit. C’est à dire que la commande n’affiche pas le début de l’OID mais le nom de la MIB dans laquelle se trouve cet OID. Ceci est fait pour simplifier la lecture et raccourcir l’affichage. Cependant, il peut être intéressant d’avoir l’OID complet. Pour cela, c’est très simple, il suffit d’ajouter l’option O (en majuscule), O comme output suivi d’un f (minuscule), f comme « full ». La ligne de commande devient donc:

snmpwalk -v 2c -c public -Of 192.168.1.13 1.3.6.1.2.1.2.2.1.10

Vous avez alors l’OID complètement affiché.

Les commandes font de la traduction automatiquement. Cette traduction est faite en entrée, c’est à dire lorsque vous saisissez un OID au format alphanumérique sur la ligne de commande puis en sortie, lors de l’affichage. Cette traduction n’est possible que si la MIB est présente sur le système et que le système est configuré pour lire ces MIBs. Cependant, pour améliorer les performances, il est toujours préférable d’éviter cette traduction. Notamment, dans les scripts, il est toujours préférable de saisir les OID au format numérique et de demander aux commandes de ne sortir les résultats qu’au format numérique.

L’option permettant d’afficher les OIDs au format numérique est O (majuscule), O comme « output », suivi de n (minuscule), n comme « numeric ». La ligne de commande devient donc:

snmpwalk -v 2c -c public -On 192.168.1.13 1.3.6.1.2.1.2.2.1.1

L’option suivante vous permet d’afficher la valeur de l’OID sans rappeler l’OID. J’utilise personnellement cette option lorsque j’interroge un agent snmp depuis un script afin de simplifier le développement du script. En effet, il est désagréable (et peu performant) de devoir parser le résultat de la commande à coup de grep/awk/sed ou autre alors qu’on peut l’éviter. Cette option est « Ov », O majuscule comme Output et v (minuscule) comme value only

snmpwalk -v 2c -c public -Ov 192.168.1.13 1.3.6.1.2.1.2.2.1.1

Une autre option que j’utilise dans les scripts, est le e minuscule. Cette option permet d’éviter une traduction de la valeur de l’OID. La valeur d’un OID est généralement un entier et cet entier correspond à un code d’erreur. La MIB SNMP définit cette traduction et la commande l’interprète. Par exemple, l’OID correspondant à IP Forwarding dispose du code suivant:

1 ==> Forwarding
2 ==> not forwarding.

Pour éviter que la commande ne traduise automatiquement cette valeur et remplace 1 par « forwarding », ce qui serait plus complexe à parser pour un script, il vous suffit d’utiliser l’option Oe. Enfin, pour disposer d’un résultat totalement pur, il faut ajouter un Q pour ne pas afficher le type de la réponse.

Au final, la commande devient:

snmpwalk -v 2c -c public -OevQ 192.168.1.13 ipForwarding.0

snmptable

Ce que beaucoup ignorent, c’est que les OIDs sont organisés sous forme d’un tableau. Prenons un exemple : les connexions TCP sur un serveur. Une connexion TCP dispose de plusieurs informations : son statut, l’adresse IP locale, le port TCP local, l’adresse IP distante et le port TCP distant. Chaque information correspond à 1 OID. Et il faut ajouter à chacun des OIDs le numéro de la connexion. Si on utilise la commande SNMPWALK, le résultat est très peu lisible. Le résultat est organisé par OID et non par connexion. Par contre, en utilisant la commande snmptable, la présentation des résultats va être améliorée par la commande. Plutôt que de présenter les OIDs les uns à la suite des autres, elle va les présenter sous forme de tableau : chaque connexion TCP sera sur une ligne et ses caractéristiques sur les colonnes. Beaucoup plus simple à lire pour un humain normal.

snmptable -v 2c -c public localhost 1.3.6.1.2.1.6.13

C’est à dire, tout humain dont le nom n’est pas Sheldon Cooper ;-). Quelques options peuvent être passées à la commande snmptable. Deux options que je vous recommande. La première est -Ci et affiche l’index. Cela peut être intéressant pour l’utiliser dans la suite d’un script.

snmptable -v 2c -c public -Ci localhost 1.3.6.1.2.1.6.13

La seconde est -Cb et elle affiche les entêtes de colonne sous forme courte. Les entêtes sont alors plus lisibles.

snmptable -v 2c -c public -Cb localhost 1.3.6.1.2.1.6.13

De nombreux OIDs sont organisés sous forme de tableau : les partitions, les interfaces réseaux, la charge des processeurs, la liste des processus, les filesystèmes, les métriques de performances des processus, … Cependant, attention : vous ne pourrez obtenir une présentation sous forme de table que pour les OIDs qui … sont organisés sous forme de table. Cela apparaît évident mais ça va mieux en le disant.

Conclusion

Voilà, c’est tout pour cette vidéo. N’hésitez pas à participer. Pour cela, vous pouvez ajouter des commentaires à cet article. Si vous avez des questions, je vous invite à les poser. Si vous avez des précisions à apporter, ce sera avec joie. Hein Surcouf! Je suis persuadé que tu as quelques commentaires intéressants à nous apporter. Si vous avez des suggestions, des propositions d’article, j’essaierai aussi de les prendre en compte selon mes moyens bien entendus.