Antoine Benkemoun

06 Août, 2010

SNMP : Ajouter des informations personnalisées à la MIB

Posté par Antoine dans la catégorie Libre|Système|Unix

Je n’ai pas encore beaucoup eu l’occasion de parler de supervision sur ce blog. C’est pourtant un sujet très intéressant et particulièrement vaste. Aujourd’hui, nous allons détailler une petite fonctionnalité de SNMP qui nous permet de faire de nombreuses choses très utiles.

Vous le savez surement déjà, SNMP (Simple Network Management Protocol) est un protocole très utile pour la supervision d’équipements informatiques que ce soit des serveurs, des équipements réseau, des sondes de température, etc. Il s’agit de la référence en la matière. Sa structure est quelque peu archaïque vis à vis des tendances actuelles mais sa pertinence est toujours d’actualité. Il existe de nombreuses ressources sur Internet au sujet de SNMP, je ne reprendrai donc pas la théorie de ce protocole.

La supervision est un domaine très vaste et surtout très compliqué. Chaque configuration et chaque équipement va avoir ses petites spécificités. De plus, chaque situation va nécessiter la supervision d’une métrique X ou Y. Concrètement, les informations que l’on souhaite superviser ne sont pas forcément présentes dans une MIB SNMP existante.

Les solutions alternatives sont nombreuses. On peut choisir de développer une application spécifique ce qui implique un travail assez colossal et une intégration dans l’application de supervision. Une autre solution est de « customiser » le serveur SNMP afin de nous envoyer des informations spécifiques. Ces informations ne feront pas partie d’une MIB standardisée mais pourront nous être très utiles. Les manipulations concernent uniquement snmpd sous Unix.

Le démon snmpd que nous utilisons comme agent SNMP sur les plateformes Unix/Linux nous renvoit par défaut un grand nombre d’informations. Il supporte également l’ajout d’informations récoltées par l’exécution de scripts tierces. Les informations renvoyées par ces scripts seront placés dans la branche « .1.3.6.1.4.1.2021.8  » de la MIB standard.

Il est nécessaire de spécifier l’exécution d’un script dans le fichier de configuration snmpd.conf. Voici un exemple de script :

exec railsversion « /bin/bash /etc/snmp/railsversion.sh »

Lors des tests que j’ai effectué, j’ai remarqué qu’il n’était pas possible d’utiliser des « pipes » dans cette commande ce qui est fort dommage. Une fois que vous avez ajouté cette ligne dans votre fichier de configuration snmpd, il est nécessaire de le redémarrer pour qu’elle soit prise en compte.

Si nous effectuons un snmpwalk sur la branche SNMP mentionnée précédemment, nous remarquons que les informations retournées par ce script son bien présentes.

root@dev:~# snmpwalk -v2c -cpublic 10.8.0.6 .1.3.6.1.4.1.2021.8
UCD-SNMP-MIB::extIndex.1 = INTEGER: 1
UCD-SNMP-MIB::extNames.1 = STRING: railsversion
UCD-SNMP-MIB::extCommand.1 = STRING: /bin/bash /etc/snmp/railsversion.sh
UCD-SNMP-MIB::extResult.1 = INTEGER: 0
UCD-SNMP-MIB::extOutput.1 = STRING: 2.1.0-7
UCD-SNMP-MIB::extErrFix.1 = INTEGER: noError(0)
UCD-SNMP-MIB::extErrFixCmd.1 = STRING:

Nous avons donc réussi à intégrer nous-même des informations dans SNMP. Ces informations ne sont pas standardisées bien évidemment mais vous permettent d’adapter votre solution à vos besoins. Il est ensuite possible de réutiliser ces informations dans Nagios par le biais de plugins « maison » assez aisément. J’en reparlerai ultérieurement.

Au final, cette petite astuce assez simple permet de se confectionner un bout de MIB personnalisé simplement et efficacement. Cette solution est largement plus efficace que le développement d’une application spécifique.

Tags: ,

5 Commentaires to "SNMP : Ajouter des informations personnalisées à la MIB"

1 | voodoo

août 6th, 2010 at 18 h 09 min

Avatar

Bonjour,

très intéressant cette article j’ai justement été confronté à ce problème hier et j’aurais deux questions par rapport à votre example :

Comment retrouver le oid exacte de :

UCD-SNMP-MIB::extResult.1 = INTEGER: 0 ?

Dans mes scripts je n’arrive à renvoyer plus d’un INTEGER avec un « return $variable », avez vous un exemple de script ?

2 | Antoine

août 6th, 2010 at 18 h 17 min

Avatar

Bonsoir,

Alors pour afficher les OID exactes il faut ajouter comme option de snmpwalk « -O n ». Il y a pleins d’options de la sorte détaillées grâce à un « –help ».

Le script que j’ai utilisé était un script bash tout bête et le résultat est ce qui s’affiche à l’écran suite à l’éxecution du script bash, pas de return donc.

Antoine

3 | Les tweets qui mentionnent Antoine Benkemoun » SNMP : Ajouter des informations personnalisées à la MIB - Sécurité informatique, Virtualisation, Administration système et Réseaux -- Topsy.com

août 6th, 2010 at 18 h 24 min

Avatar

[…] Ce billet était mentionné sur Twitter par Nicolas Hennion et Hobbestigrou, antoinebk. antoinebk a dit: SNMP : Ajouter des informations personnalisées à la MIB : http://wik.io/uKFKl […]

4 | Cyberps2

septembre 19th, 2010 at 18 h 30 min

Avatar

Pourrais-tu mettre le contenu de ton script pour l’exemple ?

Merci

5 | Antoine

septembre 22nd, 2010 at 11 h 56 min

Avatar

Le script pour la version de Rails ne fait qu’un grep sur un dpkg –list. Il faut qu’il ait la ligne de shebang et qu’il soit exécutable.

Ajoutez votre commentaire

A propos de ce blog

Ce blog a pour objectif de partager des informations avec tous les internautes. Comme indiqué dans le titre, je traiterais de différrents sujets gravitant autour de la sécurité informatique, de la virtualisation, de la l'administration système et du réseau.