Áú»¢¶Ä²©

This is a translation of the original English documentation page. Help us make it better.

2 Agent SNMP

Aper?u

Vous pouvez utiliser la supervision SNMP sur des p¨¦riph¨¦riques tels que des imprimantes, des commutateurs r¨¦seau, des routeurs ou des onduleurs qui sont g¨¦n¨¦ralement compatibles SNMP et sur lesquels il serait impossible d'installer des syst¨¨mes d'exploitation complets et des agents Áú»¢¶Ä²©.

Pour pouvoir r¨¦cup¨¦rer les donn¨¦es fournies par les agents SNMP sur ces p¨¦riph¨¦riques, le serveur Áú»¢¶Ä²© doit ¨ºtre configur¨¦ initialement avec le support SNMP.

Les v¨¦rifications SNMP sont effectu¨¦es uniquement par le protocole UDP.

Les d¨¦mons du serveur Áú»¢¶Ä²© et des proxys interrogent les p¨¦riph¨¦riques SNMP pour plusieurs valeurs dans une seule requ¨ºte. Cela affecte tous les types d'¨¦l¨¦ments SNMP (¨¦l¨¦ments SNMP standard, ¨¦l¨¦ments SNMP avec index dynamiques et d¨¦couverte SNMP de bas niveau) et rend le traitement SNMP beaucoup plus efficace. Veuillez consulter la section des d¨¦tails techniques ci-dessous pour savoir comment cela fonctionne en interne. Il existe ¨¦galement un param¨¨tre "Utiliser les requ¨ºtes de masse" pour chaque interface qui permet de d¨¦sactiver les requ¨ºtes group¨¦es pour les p¨¦riph¨¦riques qui ne peuvent pas les g¨¦rer correctement.

Les d¨¦mons des serveurs Áú»¢¶Ä²© et des proxys inscrivent dans les logs zabbix les lignes similaires ¨¤ ce qui suit s'ils re?oivent une r¨¦ponse SNMP incorrecte :

SNMP response from host "gateway" does not contain all of the requested variable bindings

Bien qu'ils ne couvrent pas tous les cas probl¨¦matiques, ils sont utiles pour identifier les p¨¦riph¨¦riques SNMP individuels pour lesquels les requ¨ºtes de masse doivent ¨ºtre d¨¦sactiv¨¦es.

Le serveur Áú»¢¶Ä²© et les proxy vont toujours r¨¦essayer au moins une fois : soit via le m¨¦canisme de nouvelle tentative de la biblioth¨¨que SNMP, soit via le m¨¦canisme interne de traitement des requ¨ºtes de masse.

Si vous surveillez les p¨¦riph¨¦riques SNMPv3, assurez-vous que msgAuthoritarianEngineID (¨¦galement appel¨¦ snmpEngineID ou "Engine ID") n'est jamais partag¨¦ par deux p¨¦riph¨¦riques. Selon la (section 3.1.1.1), il doit ¨ºtre unique pour chaque p¨¦riph¨¦rique.

La RFC3414 exige que les appareils SNMPv3 conservent leur engineBoots. Certains p¨¦riph¨¦riques ne le font pas, ce qui entra?ne la suppression de leurs messages SNMP comme obsol¨¨tes apr¨¨s le red¨¦marrage. Dans une telle situation, le cache SNMP doit ¨ºtre effac¨¦ manuellement sur un serveur/proxy (en utilisant -R snmp_cache_reload) ou le serveur/proxy doit ¨ºtre red¨¦marr¨¦.

Configuration de la surveillance SNMP

Pour d¨¦marrer la surveillance d'un appareil via SNMP, les ¨¦tapes suivantes doivent ¨ºtre effectu¨¦es :

?tape 1

D¨¦couvrez la cha?ne SNMP (ou OID) de l'¨¦l¨¦ment que vous souhaitez surveiller.

Pour obtenir une liste des cha?nes SNMP, utilisez la commande snmpwalk (qui fait partie du logiciel que vous devriez avoir install¨¦ dans le cadre de l'installation de Áú»¢¶Ä²©) ou outil ¨¦quivalent :

shell> snmpwalk -v 2c -c public <host IP> .

Comme '2c' signifie ici la version SNMP, vous pouvez ¨¦galement le remplacer par '1', pour indiquer la version SNMP 1 sur l'appareil.

Cela devrait vous donner une liste de cha?nes SNMP et leur derni¨¨re valeur. Si ce n'est pas le cas, il est possible que la 'communaut¨¦' SNMP soit diff¨¦rente du 'public' standard, auquel cas vous devrez trouver de quoi il s'agit.

Vous pouvez ensuite parcourir la liste jusqu'¨¤ ce que vous trouviez la cha?ne que vous souhaitez surveiller, par ex. si vous vouliez surveiller les octets entrant dans votre commutateur sur le port 3, vous utiliseriez la cha?ne IF-MIB::ifInOctets.3 de cette ligne :

IF-MIB::ifInOctets.3 = Counter32: 3409739121

Vous pouvez maintenant utiliser la commande snmpget pour conna?tre l'OID num¨¦rique de 'IF-MIB::ifInOctets.3' :

shell> snmpget -v 2c -c public -On 10.62.1.22 IF-MIB::ifInOctets.3

Notez que le dernier num¨¦ro de la cha?ne est le num¨¦ro de port que vous cherchez ¨¤ surveiller. Voir aussi : Index dynamiques.

Cela devrait vous donner quelque chose comme ceci :

.1.3.6.1.2.1.2.2.1.10.3 = Counter32: 3472126941

Encore une fois, le dernier num¨¦ro de l'OID est le num¨¦ro de port.

3COM semble utiliser des centaines de num¨¦ros de port, par ex. port 1 = port 101, port 3 = port 103, mais Cisco utilise des num¨¦ros normaux, par ex. port 3 = 3.

Certains des OID SNMP les plus utilis¨¦s sont traduits automatiquement en une repr¨¦sentation num¨¦rique par Áú»¢¶Ä²©.

Dans le dernier exemple ci-dessus, le type de valeur est "Counter32", qui correspond en interne au type ASN_COUNTER. La liste compl¨¨te des types pris en charge est ASN_COUNTER, ASN_COUNTER64, ASN_UINTEGER, ASN_UNSIGNED64, ASN_INTEGER, ASN_INTEGER64, ASN_FLOAT, ASN_DOUBLE, ASN_TIMETICKS, ASN_GAUGE, ASN_IPADDRESS , ASN_OCTET_STR et ASN_OBJECT_ID (depuis 2.2.8, 2.4.3). Ces types correspondent approximativement ¨¤ "Counter32", "Counter64", "UInteger32", "INTEGER", "Float", "Double", "Timeticks", "Gauge32", "IpAddress", "OCTET STRING", "OBJECT IDENTIFIER" dans la sortie snmpget, mais peut ¨¦galement ¨ºtre affich¨¦ sous la forme "STRING", "Hex-STRING", "OID" et autre, en fonction de la pr¨¦sence d'un indicateur d'affichage.

?tape 2

Cr¨¦ez un h?te correspondant ¨¤ un p¨¦riph¨¦rique.

Ajoutez une interface SNMP pour l'h?te :

  • Saisissez l'adresse IP/le nom DNS et le num¨¦ro de port
  • S¨¦lectionnez la version SNMP dans le menu d¨¦roulant
  • Ajoutez les informations d'identification de l'interface en fonction de la version SNMP s¨¦lectionn¨¦e :
    • SNMPv1, v2 ne n¨¦cessitent que la communaut¨¦ (g¨¦n¨¦ralement 'public')
    • SNMPv3 n¨¦cessite des options plus sp¨¦cifiques (voir ci-dessous)
  • Laissez la case Utiliser les requ¨ºtes en masse coch¨¦e pour permettre le traitement en masse des requ¨ºtes SNMP
±Ê²¹°ù²¹³¾¨¨³Ù°ù±ð SNMPv3 Description
Nom du contexte Entrez le nom du contexte pour identifier l'¨¦l¨¦ment sur le sous-r¨¦seau SNMP.
Le nom du contexte est pris en charge pour les ¨¦l¨¦ments SNMPv3 depuis Áú»¢¶Ä²© 2.2.
Les macros utilisateur sont r¨¦solues dans ce champ.
Nom de la s¨¦curit¨¦ Entrez le nom de la s¨¦curit¨¦.
Les macros utilisateur sont r¨¦solues dans ce champ.
Niveau de s¨¦curit¨¦ S¨¦lectionnez le niveau de s¨¦curit¨¦ :
noAuthNoPriv - aucun protocole d'authentification ni de confidentialit¨¦ n'est utilis¨¦
AuthNoPriv - le protocole d'authentification est utilis¨¦, le protocole de confidentialit¨¦ ne l'est pas
AuthPriv - les protocoles d'authentification et de confidentialit¨¦ sont utilis¨¦s
Protocole d'authentification S¨¦lectionnez le protocole d'authentification - MD5, SHA1, SHA224, SHA256, SHA384 ou SHA512.
Phrase secr¨¨te d'authentification Entrez la phrase secr¨¨te d'authentification.
Les macros utilisateur sont r¨¦solues dans ce champ.
Protocole de confidentialit¨¦ S¨¦lectionnez le protocole de confidentialit¨¦ - DES, AES128, AES192, AES256, AES192C (Cisco) ou AES256C (Cisco).
Phrase secr¨¨te de confidentialit¨¦ Entrez la phrase secr¨¨te de confidentialit¨¦.
Les macros utilisateur sont r¨¦solues dans ce champ.

En cas d'informations d'identification SNMPv3 erron¨¦es (nom de s¨¦curit¨¦, protocole d'authentification/phrase de passe, protocole de confidentialit¨¦), Áú»¢¶Ä²© re?oit une ERREUR de net-snmp, ¨¤ l'exception d'une mauvaise phrase de passe de confidentialit¨¦, auquel cas Áú»¢¶Ä²© re?oit une erreur TIMEOUT de net-snmp.

Les modifications de Protocole d'authentification, Phrase secr¨¨te d'authentification, Protocole de confidentialit¨¦ ou Phrase secr¨¨te de confidentialit¨¦, effectu¨¦es sans modifier le Nom de la s¨¦curit¨¦, prendront effet uniquement apr¨¨s que le cache sur un serveur/proxy a ¨¦t¨¦ manuellement effac¨¦ (en utilisant -R snmp_cache_reload) ou le serveur/proxy est red¨¦marr¨¦. Dans les cas o¨´ le Nom de la s¨¦curit¨¦ est ¨¦galement modifi¨¦, tous les param¨¨tres seront mis ¨¤ jour imm¨¦diatement.

Vous pouvez utiliser l'un des mod¨¨les SNMP fournis (Template SNMP Device et autres) qui ajoutera automatiquement un ensemble d'¨¦l¨¦ments. Cependant, le mod¨¨le peut ne pas ¨ºtre compatible avec l'h?te. Cliquez sur Ajouter pour enregistrer l'h?te.

?tape 3

Cr¨¦ez un ¨¦l¨¦ment pour la surveillance.

Alors, revenez maintenant ¨¤ Áú»¢¶Ä²© et cliquez sur ?±ô¨¦³¾±ð²Ô³Ù²õ pour l'h?te SNMP que vous avez cr¨¦¨¦ pr¨¦c¨¦demment. Selon que vous avez utilis¨¦ ou non un mod¨¨le lors de la cr¨¦ation de votre h?te, vous aurez soit une liste d'¨¦l¨¦ments SNMP associ¨¦s ¨¤ votre h?te, soit simplement une liste vide. Nous partirons du principe que vous allez cr¨¦er vous-m¨ºme l'¨¦l¨¦ment en utilisant les informations que vous venez de r¨¦colter ¨¤ l'aide de snmpwalk et snmpget, cliquez donc sur Cr¨¦er un ¨¦l¨¦ment. Dans le nouveau formulaire d'¨¦l¨¦ment :

  • Entrez le nom de l'article
  • Remplacez le champ 'Type' par 'Agent SNMP'
  • Entrez la 'Cl¨¦' comme quelque chose de significatif, par ex. SNMP-InOctets-Bps
  • Assurez-vous que le champ 'Host interface' contient votre switch/routeur
  • Entrez l'OID textuel ou num¨¦rique que vous avez r¨¦cup¨¦r¨¦ pr¨¦c¨¦demment dans le champ 'SNMP OID', par exemple : .1.3.6.1.2.1.2.2.1.10.3
  • D¨¦finissez le 'Type d'informations' sur Num¨¦rique (flottant)
  • Entrez un 'Intervalle de mise ¨¤ jour' et une p¨¦riode de 'Stockage de l'historique' si vous voulez qu'ils soient diff¨¦rents de la valeur par d¨¦faut
  • Dans l'onglet Preprocessing, ajoutez une ¨¦tape Change per second (important, sinon vous obtiendrez des valeurs cumul¨¦es du p¨¦riph¨¦rique SNMP au lieu de la derni¨¨re modification). Choisissez un multiplicateur personnalis¨¦ si vous en voulez un.

Tous les champs de saisie obligatoires sont marqu¨¦s d'un ast¨¦risque rouge.

Enregistrez maintenant l'¨¦l¨¦ment et acc¨¦dez ¨¤ Surveillance ¡ú Derni¨¨res donn¨¦es pour voir vos donn¨¦es SNMP !

Exemple 1

Exemple g¨¦n¨¦ral :

±Ê²¹°ù²¹³¾¨¨³Ù°ù±ð Description
OID 1.2.3.45.6.7.8.0 (or .1.2.3.45.6.7.8.0)
Key <Cha?ne unique ¨¤ utiliser comme r¨¦f¨¦rence pour les d¨¦clencheurs>
Par exemple, "my_param".

Notez que l'OID peut ¨ºtre donn¨¦ sous forme num¨¦rique ou sous forme de cha?ne. Cependant, dans certains cas, la cha?ne OID doit ¨ºtre convertie en repr¨¦sentation num¨¦rique. L'utilitaire snmpget peut ¨ºtre utilis¨¦ ¨¤ cette fin :

shell> snmpget -On localhost public enterprises.ucdavis.memory.memTotalSwap.0
Exemple 2

Surveillance de la disponibilit¨¦ :

±Ê²¹°ù²¹³¾¨¨³Ù°ù±ð Description
OID MIB::sysUpTime.0
Key router.uptime
Value type Float
Units uptime
?tape de pr¨¦traitement?: multiplicateur personnalis¨¦ 0.01

Fonctionnement interne du traitement en masse

? partir de 2.2.3, le serveur Áú»¢¶Ä²© et le proxy interrogent les p¨¦riph¨¦riques SNMP pour plusieurs valeurs en une seule requ¨ºte. Cela affecte plusieurs types d'¨¦l¨¦ments SNMP :

Tous les ¨¦l¨¦ments SNMP sur une seule interface avec des param¨¨tres identiques sont programm¨¦s pour ¨ºtre interrog¨¦s en m¨ºme temps. Les deux premiers types d'¨¦l¨¦ments sont pris par les pollers par lots d'au plus 128 ¨¦l¨¦ments, tandis que les r¨¨gles de d¨¦couverte de bas niveau sont trait¨¦es individuellement, comme auparavant.

Au niveau inf¨¦rieur, il existe deux types d'op¨¦rations effectu¨¦es pour interroger des valeurs : obtenir plusieurs objets sp¨¦cifi¨¦s et parcourir une arborescence d'OID.

Pour le SNMP "get", une GetRequest-PDU est utilis¨¦e avec au plus 128 liaisons de variables. Pour le SNMP "walk", un GetNextRequest-PDU est utilis¨¦ pour SNMPv1 et GetBulkRequest avec un champ "max-repetitions" d'au plus 128 est utilis¨¦ pour SNMPv2 et SNMPv3.

Ainsi, les avantages du traitement en bloc pour chaque type d'¨¦l¨¦ment SNMP sont d¨¦crits ci-dessous :

  • Les ¨¦l¨¦ments SNMP r¨¦guliers b¨¦n¨¦ficient d'am¨¦liorations "get" ;
  • Les ¨¦l¨¦ments SNMP avec des index dynamiques b¨¦n¨¦ficient ¨¤ la fois des am¨¦liorations "get" et "walk": "get" est utilis¨¦ pour la v¨¦rification de l'index et "walk" pour la construction du cache ;
  • Les r¨¨gles de d¨¦couverte de bas niveau SNMP b¨¦n¨¦ficient d'am¨¦liorations "walk".

Cependant, il existe un probl¨¨me technique qui fait que tous les appareils ne sont pas capables de renvoyer 128 valeurs par requ¨ºte. Certains renvoient toujours une r¨¦ponse appropri¨¦e, mais d'autres r¨¦pondent avec une erreur "tooBig(1)" ou ne r¨¦pondent pas du tout une fois que la r¨¦ponse potentielle d¨¦passe une certaine limite.

Afin de trouver un nombre optimal d'objets ¨¤ interroger pour un appareil donn¨¦, Áú»¢¶Ä²© utilise la strat¨¦gie suivante. Il commence prudemment en interrogeant 1 valeur dans une requ¨ºte. Si cela r¨¦ussit, il interroge 2 valeurs dans une requ¨ºte. Si cela r¨¦ussit ¨¤ nouveau, il interroge 3 valeurs dans une requ¨ºte et continue de la m¨ºme mani¨¨re en multipliant le nombre d'objets interrog¨¦s par 1,5, ce qui donne la s¨¦quence suivante de tailles de requ¨ºte : 1, 2, 3, 4, 6, 9, 13, 19 , 28, 42, 63, 94, 128.

Cependant, une fois qu'un appareil refuse de donner une r¨¦ponse appropri¨¦e (par exemple, pour 42 variables), Áú»¢¶Ä²© fait deux choses.

Tout d'abord, pour le lot d'¨¦l¨¦ments en cours, il divise par deux le nombre d'objets dans une seule requ¨ºte et interroge 21 variables. Si l'appareil est actif, la requ¨ºte devrait fonctionner dans la grande majorit¨¦ des cas, car 28 variables ¨¦taient connues pour fonctionner et 21, c'est nettement moins que cela. Cependant, si cela ¨¦choue toujours, Áú»¢¶Ä²© revient ¨¤ interroger les valeurs une par une. S'il ¨¦choue toujours ¨¤ ce stade, l'appareil ne r¨¦pond d¨¦finitivement pas et la taille de la demande n'est pas un probl¨¨me.

La deuxi¨¨me chose que Áú»¢¶Ä²© fait pour les lots d'¨¦l¨¦ments suivants est qu'il commence par le dernier nombre de variables r¨¦ussi (28 dans notre exemple) et continue d'incr¨¦menter les tailles de requ¨ºte de 1 jusqu'¨¤ ce que la limite soit atteinte. Par exemple, en supposant que la plus grande taille de r¨¦ponse est de 32 variables, les requ¨ºtes suivantes seront de tailles 29, 30, 31, 32 et 33. La derni¨¨re requ¨ºte ¨¦chouera et Áú»¢¶Ä²© n'¨¦mettra plus jamais de requ¨ºte de taille 33. ? partir de ce moment, Áú»¢¶Ä²© interrogera au plus 32 variables pour cet appareil.

Si de grandes requ¨ºtes ¨¦chouent avec ce nombre de variables, cela peut signifier deux choses. Les crit¨¨res exacts qu'un appareil utilise pour limiter la taille de la r¨¦ponse ne peuvent pas ¨ºtre connus, mais nous essayons d'en faire une approximation en utilisant le nombre de variables. Ainsi, la premi¨¨re possibilit¨¦ est que ce nombre de variables se situe autour de la limite de taille de r¨¦ponse r¨¦elle de l'appareil dans le cas g¨¦n¨¦ral : parfois la r¨¦ponse est inf¨¦rieure ¨¤ la limite, parfois elle est sup¨¦rieure ¨¤ cela. La deuxi¨¨me possibilit¨¦ est qu'un paquet UDP dans l'une ou l'autre direction soit simplement perdu. Pour ces raisons, si Áú»¢¶Ä²© obtient une requ¨ºte ayant ¨¦chou¨¦, il r¨¦duit le nombre maximum de variables pour essayer d'approfondir la plage confortable de l'appareil, mais (¨¤ partir de 2.2.8) jusqu'¨¤ deux fois seulement.

Dans l'exemple ci-dessus, si une requ¨ºte avec 32 variables ¨¦choue, Áú»¢¶Ä²© r¨¦duira le nombre ¨¤ 31. Si cela ¨¦choue ¨¦galement, Áú»¢¶Ä²© r¨¦duira le nombre ¨¤ 30. Cependant, Áú»¢¶Ä²© ne r¨¦duira pas le nombre en dessous de 30, car il supposera que d'autres ¨¦checs sont dus ¨¤ la perte de paquets UDP, plut?t qu'¨¤ la limite du p¨¦riph¨¦rique.

Si, toutefois, un appareil ne peut pas g¨¦rer correctement les demandes group¨¦es pour d'autres raisons et que l'heuristique d¨¦crite ci-dessus ne fonctionne pas, depuis Áú»¢¶Ä²© 2.4, il existe un param¨¨tre "Utiliser les demandes group¨¦es" pour chaque interface qui permet de d¨¦sactiver les demandes group¨¦es pour cet appareil.