SNMP

Fonction

Interroger un périphérique (généralement un périphérique réseau) pour obtenir des données SNMP en demandant un OID. Permet de parcourir les OID.

Alarmes

Temps de transfert, valeurs définies par l’utilisateur, valeurs de différence et valeurs de chaîne

Le protocole SNMP (Simple Network Management Protocol) est de loin le protocole dominant dans la gestion de réseau. L’une des principales raisons de son adoption généralisée, outre le fait qu’il s’agisse de la principale norme Internet pour la gestion de réseau, réside dans sa relative simplicité. La mise en œuvre de la gestion SNMP dans un périphérique en réseau est bien plus simple que la plupart des autres approches, standard ou non, de la gestion de réseau.

Le gestionnaire SNMP ou l’application de gestion utilise une syntaxe de nommage bien définie pour spécifier les variables à l’agent SNMP. Les noms d’objets dans cette syntaxe sont appelés « identifiants d’objet » (Object IDs ou OID).

Les OID sont des séries de chiffres qui identifient de manière unique un objet auprès d’un agent SNMP. Les OID sont organisés selon une structure arborescente hiérarchique inversée. L’arborescence des OID commence par la racine et se ramifie. Chaque point de l’arborescence des OID est appelé un nœud ; chaque nœud possède une ou plusieurs branches, ou se termine par un nœud feuille. Le format d’un OID est une séquence de chiffres séparés par des points.

Les types de variables SNMP suivants sont pris en charge pour les valeurs :

ASN_COUNTER

Entier non négatif de 32 bits qui ne peut qu'augmenter

ASN_GAUGE

Entier de 32 bits

ASN_INTEGER

Entier de 32 bits (de -2³² à 2³²) RFC 1442

ASN_INTEGER64

Entier de 64 bits (de -264 à 264) RFC 1442

ASN_OPAQUE

Prise en charge des types float et double

ASN_UNSIGNED64

Entier non signé de 64 bits

ASN_COUNTER64

64 bits non signé

ASN_TIMETICKS

non signé

Toutes ces valeurs, ainsi que la différence par rapport à la dernière mesure, sont converties en nombre à virgule flottante, puis transmises au server.

Les différences de types mentionnés ci-dessus sont automatiquement divisées par le temps écoulé depuis les dernières mesures ((valeurActuelle - valeurPrécédente) / (tempsActuelEnSecondes - tempsPrécédentEnSecondes)). Cela signifie que nous obtenons toujours une fréquence par seconde pour ces différences.

ASN_BIT_STR

ASN_OCTET_STR

Ces valeurs sont des chaînes de caractères et peuvent contenir n'importe quel caractère imprimable.

Fonctionnalités SNMP

  • Navigateur MIB en ligne pour la sélection des OID

  • Fichiers MIB illimités, emplacement : /usr/share/snmp/mibs sur chaque SKOOR Engine Collector

  • Unité de mesure configurable

  • Valeurs différentielles automatiques

  • Prise en charge des PDU des versions 1, 2c et v3

  • Prise en charge du chiffrement v3

  • Alarmes à n niveaux

  • Sélection de l'interface MIB2 par nom

  • Référence des noms d'OID aux numéros d'OID

  • Nombre de tentatives et délais d’expiration réglables

  • Valeurs pouvant être supprimées (réduit la taille de la base de données)

  • Chaînes de caractères (référence d'un numéro vers du texte)

  • Extraction de nombres à partir d’un OID textuel (première valeur uniquement)

Détails SNMP

Paramètres SNMP

La section « Authentification » n'apparaît que lorsque la version 3 du protocole SNMP est sélectionnée.

Paramètre

Description

Port UDP

Sélectionnez le port UDP (la valeur par défaut est 161)

Nombre de tentatives

Nombre de tentatives en cas d'échec de la requête. La valeur par défaut est de 2 tentatives.

Délai d'expiration

Sélectionnez le délai d'expiration de la requête. Sur la plupart des appareils, les requêtes SNMP sont traitées avec une faible priorité ; veillez donc à définir un délai d'expiration suffisamment long. La valeur par défaut est de 2 s.

Version

Sélectionnez la version SNMP prise en charge par le démon SNMP distant. Les choix suivants sont disponibles :

Version 1
Version 2c
Version 3

Niveau de sécurité

Le niveau de sécurité définit la manière dont la requête SNMP est envoyée. Ce choix n'est disponible que lorsque SNMP v3 est utilisé. Les options suivantes sont disponibles :
Aucune authentification, aucun chiffrement
Authentification, aucun chiffrement
Authentification, chiffrement

Nom d'utilisateur

Pour l'authentification, visible uniquement lorsque SNMP v3 est utilisé.

Phrase de passe d'authentification

Phrase de passe d'authentification, visible uniquement lorsque le protocole SNMP avec authentification est utilisé.

Protocole d’authentification

Protocole d'authentification, visible uniquement lorsque le protocole SNMP avec authentification est utilisé. Les options actuellement disponibles sont MD5 ou SHA. La valeur par défaut est MD5.

Phrase de passe de confidentialité

Pour le chiffrement, visible uniquement lorsque le protocole SNMP avec authentification et chiffrement est utilisé.

Protocole de chiffrement

Pour le chiffrement, visible uniquement lorsque le protocole SNMP avec authentification et chiffrement est utilisé. Les options actuellement disponibles sont DES et AES. La valeur par défaut est DES.

Communauté

La plupart des périphériques réseau autorisent différents niveaux d'accès SNMP, par exemple : LECTURE SEULE ou LECTURE/ÉCRITURE. Chacun de ces niveaux d'accès est généralement associé à une chaîne de communauté différente. Pour lire des données, seule la communauté LECTURE doit être connue ; il s'agit généralement de : public.

OID de requête

Saisissez l’OID de la base d’informations de gestion (MIB) pour la requête. Si l’OID est inconnu, il est possible de le rechercher sur le périphérique de tâches à l’aide du navigateur en ligne. Des OID supplémentaires peuvent être demandés à partir d’une seule tâche SNMP en cliquant sur le bouton « + » situé à côté du bouton Parcourir. Si plusieurs OID sont saisis, les résultats de tous les OID sont ajoutés les uns après les autres dans le même fichier de sortie.

Débordement

Laissez ce paramètre sur « Auto ». Il gère le calcul de la valeur Diff si le compteur est remis à 0. Cela empêche l’apparition de valeurs Diff négatives.

Supprimer le temps de transfert

Par défaut, le temps nécessaire au transfert des données SNMP est enregistré dans la base de données. Si cette information n’est pas pertinente, cochez cette case pour économiser de l’espace dans la base de données.

Supprimer la valeur
Supprimer la valeur
Diff Supprimer la valeur
de chaîne Supprimer le message d'information

Cochez les types de sortie SNMP qui ne doivent pas être pris en compte.

Si la case « Supprimer le message d’information » est cochée, la sortie de chaîne SNMP ne sera pas envoyée au server. La valeur de retour sera définie sur « Valeur non valide » uniquement si une valeur ou une valeur Diff est requise et qu’il n’est pas possible d’extraire une valeur de la chaîne.

Les cases à cocher « Supprimer la valeur », « Supprimer la valeur différentielle » et

Mapper la chaîne à une valeur

Définissez un mappage des objets de chaîne SNMP vers des valeurs numériques.

Une valeur de chaîne peut être extraite directement en tant que valeur de chaîne ou en définissant un mappage de chaînes au format 1=foo,2=bar,0=*, ce qui signifie que la chaîne foo sera convertie en valeur numérique 1, la chaîne bar en valeur numérique 2 et (facultatif) tout le reste en valeur 0. Les espaces ne sont pas autorisés dans cette définition.

Si aucun mappage de chaînes n’est défini ou si l’affectation échoue (aucun opérateur par défaut défini), la chaîne est analysée à la recherche de la première occurrence de caractères numériques et le résultat est transmis au server comme demandé (valeur et/ou valeur différentielle).

Définir l’unité

Voir la section « Unité/Diviseur SNMP » ci-dessous.

La liste déroulante « Balises » permet d’insérer des variables prédéfinies dans les champs ci-dessus, par exemple $NAME$ pour le nom de la tâche.

Rechercher en ligne

Pour rechercher un OID SNMP spécifique sur l’agent SNMP distant et l’utiliser comme requête SNMP, cliquez sur le bouton « Parcourir en ligne ». Il est utile de connaître l’emplacement approximatif dans l’arborescence afin de limiter le temps de recherche, le trafic réseau et la taille des données de sortie. Saisissez la chaîne de communauté correcte pour l’agent SNMP et sélectionnez la version SNMP dans la section « Connexion ». Les MIB les plus fréquemment utilisées peuvent être sélectionnées dans le menu déroulant, en commençant par « Racine », qui ne doit être sélectionnée que si l’emplacement de l’objet recherché est totalement inconnu :

Lancez le processus à l’aide du bouton « Démarrer l’analyse » :

L'analyse peut prendre un certain temps, selon le nombre d’objets situés sous l’OID racine sélectionné. Cliquez sur « Actualiser » jusqu’à ce que l’état du téléchargement indique « Terminé » :

Le compteur « Téléchargement » indique le nombre d’OID trouvés. Pour les afficher, sélectionnez « Afficher l’arborescence » ou « Afficher en liste ». Pour sélectionner un OID, il suffit de cliquer sur le lien correspondant.

Exemple 1 – Vue arborescente avec type et valeur

    

Exemple 2 – Affichage plat avec valeur

    

Si le résultat de l'analyse de l'arborescence n'affiche pas d'informations textuelles mais uniquement des OID sous la forme

1.3.6.1.4.1.13424.11.1.1.25

, cela signifie probablement que la MIB du périphérique analysé n’est pas installée. Pour rechercher des MIB SNMP, consultez le site Web du fabricant du périphérique ou la page d’accueil de MIB Depot afin de trouver des MIB accessibles au public.

Résolution des noms génériques SNMP

Certains serveurs SNMP n’associent pas toujours le même OID à la même valeur. La lecture de l’utilisation du disque à partir d’une MIB hôte peut fonctionner jusqu’à ce qu’un nouveau disque soit ajouté à ce système. Il est possible que l’index (qui, dans l’exemple ci-dessous, est .2) change.

Pour éviter cela, SKOOR Engine peut utiliser un OID de résolution défini par l’utilisateur pour le mappage entre le nom et l’index. Pour ce faire, nous remplaçons l’index par une chaîne de caractères à comparer à l’OID de résolution, en utilisant le format entre deux caractères $. Avant d’exécuter la requête, SKOOR Engine remplacera $string$ par l’index correspondant trouvé. Voici un exemple d’OID dont on souhaiterait lire la valeur :

   .iso.org.dod.internet.mgmt.mib-2.host.hrStorage.hrStorageTable.hrStorageEntry.hrStorageUsed.2

Au lieu de saisir cette chaîne en tant qu’OID de requête, recherchez d’abord la chaîne de description SNMP du disque, qui est stockée sous l’OID suivant :

   .iso.org.dod.internet.mgmt.mib-2.host.hrStorage.hrStorageTable.hrStorageEntry.hrStorageDescr

Sa valeur est : C:\ Étiquette : Numéro de série dc133042

Remplacez maintenant le chiffre 2 par la valeur ci-dessus, encadrée de deux caractères $ :

   iso.org.dod.internet.mgmt.mib-2.host.hrStorage.hrStorageTable.hrStorageEntry.hrStorageUsed.$C:\ Étiquette : Numéro de série dc133042$

Dès que la deuxième chaîne $ est saisie, une nouvelle ligne intitulée « Resolve OID » apparaît sous la ligne « Request OID1 ». Saisissez ici l’OID de description ci-dessus :

   .iso.org.dod.internet.mgmt.mib-2.host.hrStorage.hrStorageTable.hrStorageEntry.hrStorageDescr

$C:\ Étiquette : Numéro de série dc133042$ sera remplacé par 2.

Valeur par défaut SNMP

Si la résolution du nom d’OID échoue (voir la section ci-dessus), il est possible de définir un index par défaut. Dans l’exemple ci-dessus, il faudrait écrire l’index par défaut après l’OID de requête, séparé par un espace :

   iso.org.dod.internet.mgmt.mib-2.host.hrStorage.hrStorageTable.hrStorageEntry.hrStorageUsed.$C:\ Étiquette : Numéro de série dc133042$ 2

Unité/diviseur SNMP

La sortie SNMP dans l’exemple de la section ci-dessus est la suivante :

hrStorageDescr.2              C:\ Label: Serial Number dc133042
hrStorageAllocationUnits.2    4096 Bytes
hrStorageSize.2               2120572
hrStorageUsed.2               1839613

Pour obtenir à la place le résultat de la capacité de stockage utilisée en Go, il faut définir le diviseur approprié.

L'Explorateur Windows nous fournit les informations suivantes concernant le système de fichiers du lecteur C:\ :

Volume: 8283MB, 8.08GB Total Size, Freespace 1.07GB

Il faut donc multiplier hrStorageUsed.2 par 4 096 pour obtenir la valeur en octets, puis diviser par 1 024 trois fois pour obtenir la valeur en Go.

   1 839 613 × 4 096 / 1 024 / 1 024 / 1 024 = 7,01 Go utilisés (ce qui correspond aux chiffres de l'Explorateur)

Pour définir le diviseur du SKOOR Engine, effectuez le calcul suivant : 1 024 × 1 024 × 1 024 / 4 096 = 262 144

Appuyez sur le bouton « Unit » pour définir le nom de la valeur, son unité et son diviseur :

Le résultat affiché dans la section des valeurs après l'exécution de la tâche SNMP sera de 7,01 Go.

Pour obtenir le pourcentage utilisé à la place, utilisez cette formule : hrStorageUsed / hrStorageSize x 100 ; le diviseur serait donc 21 205,72.

Tâches SNMP avec plusieurs OID

Il est possible d’évaluer plusieurs OID au sein d’une même tâche SNMP. Toutes les requêtes SNMP doivent être valides pour le périphérique auquel la tâche SNMP est associée (il n’est pas possible de définir des requêtes pour différents périphériques dans une même tâche SNMP). Pour activer des OID supplémentaires, cliquez sur le bouton « + » situé à côté du bouton « Parcourir en ligne ». Une fois les OID supplémentaires ajoutés, des champs de résultats supplémentaires apparaissent dans la section « Résultats » ci-dessous :

Chaque OID dispose d’une section de sortie configurable séparément, ainsi que de sa propre définition de mappage « chaîne vers valeur » et de son bouton « Unité ». Le temps de transfert peut être masqué de manière globale.

L’exemple utilise la résolution d’OID pour chacun des 3 OID. Voir la section « Résolution des noms génériques SNMP » ci-dessus pour plus de détails.

Les premier et deuxième OID demandent les compteurs « ifInOctets » et « ifOutOctets » à une interface d’un périphérique réseau. Pour ces compteurs, la valeur absolue n’est pas pertinente ; ce qui est intéressant, c’est l’évolution dans le temps. Ainsi, les champs « Résultats » de ces deux OID masquent les valeurs elles-mêmes ainsi que toute valeur de chaîne (qui ne sont de toute façon pas renvoyées par cet OID).

Dans la définition de l’unité pour le résultat du premier OID, les unités de valeur et de chaîne de caractères sont grisées en conséquence :

Un diviseur est spécifié pour convertir la sortie en kBit/s.

octet/s → kbit/s
kbit = octet / 1 000 * 8
kbit = octet / (1 000 / 8)
kbit = octet / 125

Le troisième OID interroge l’ifOperStatus de l’interface réseau, qui est renvoyé sous forme de chaîne de caractères (non pas en tant qu’objet chaîne en soi, mais la sortie est par exemple : up(1)) par l’agent SNMP. Ceci est visible lorsque l’on utilise le bouton « Browse online » avec l’OID .iso.org.dod.internet.mgmt.mib-2.interfaces.ifTable.ifEntry.ifOperStatus en tant que Root :

Comme les valeurs numériques sont traitées plus rapidement par le SKOOR Engine, il est généralement préférable de convertir la chaîne de caractères connue en valeur numérique à l’aide du champ « Map string to value » :

Cela signifie que le résultat envoyé au server sera une valeur et non plus une chaîne de caractères, ce qui permet de supprimer les valeurs sous forme de chaîne et de comparer les valeurs.

La définition de l’unité pour le troisième résultat OID est spécifiée comme suit :

Les résultats s’affichent ensuite dans la section « Valeurs » :

Si l’un des OID définis génère une erreur, le message d’erreur correspondant s’affiche et l’ensemble de la tâche échoue. Tous les OID suivants ne sont pas traités en cas d’échec d’un OID :

Valeurs SNMP et seuils d’alarme

Valeur / Seuil d’alarme

Description

Valeur 1-n

Valeur numérique personnalisée définie à l’aide du bouton « Unité de résultat » des OID.

Différence 1-n

Valeur de différence numérique personnalisée définie par le bouton « Unité de résultat » des OID.

Valeur de chaîne 1-n

Valeur de chaîne personnalisée définie par le bouton « Unité de résultat » des OID.

Code d'erreur

Code d'erreur générique de la tâche (voir la section « Codes d'erreur des tâches »)

Exemples SNMP

Exemple 1 - Sélection d’une interface MIB-2 SNMP par description

Il est possible de sélectionner automatiquement le numéro d’interface à partir de sa description. Cela peut s’avérer utile si le nombre d’interfaces d’un routeur est susceptible de changer. Il doit alors être possible de sélectionner l’interface à partir de sa description.

Nous souhaitons rechercher l’OID

   .iso.org.dod.internet.mgmt.mib-2.interfaces.ifTable.ifEntry.ifInOctets.<identifiant de l'interface>

correspondant au nombre d’octets ayant transité vers l’intérieur via l’interface du VLAN 10. Pour ce faire, nous recherchons d’abord la description de l’interface sous .iso.org.dod.internet.mgmt.mib-2.interfaces.ifTable.ifEntry.ifDescr :

   

et constatons que la description est :

em0_vlan10

Remplacez maintenant l’index numérique après ifInOctets par la chaîne $em0_vlan10$ et utilisez-la comme OID de requête :

   .iso.org.dod.internet.mgmt.mib-2.interfaces.ifTable.ifEntry.ifInOctets.$em0_vlan10$

Comme OID de résolution, utilisez

   .iso.org.dod.internet.mgmt.mib-2.interfaces.ifTable.ifEntry.ifDescr

La recherche d’une chaîne de description correspondante est sensible à la casse. La tâche mémorise le dernier index. Si le numéro a changé, elle effectuera une nouvelle analyse des descriptions.