Introduction
Cet article explique comment configurer la surveillance SNMP sur le contrôleur de réseau local sans fil (WLC) Cisco 3504, traduire les noms d'objets en identificateurs d'objets et vice versa, et fournit la liste des OID les plus couramment utilisés par les clients Cisco.
Conditions préalables
Conditions requises
Avoir un outil snmp par défaut sur votre système d'exploitation ou en installer un.
Composants utilisés
Tous les tests ont été effectués sur un WLC 3504 exécutant l'image version 8.9 et MacOS 10.14. Les OID de cet article sont également valides sur les versions antérieures d'AireOS et d'autres contrôleurs sans fil basés sur AireOS (8540/5508/5520/2504).
Configuration des paramètres SNMP sur WLC
SNMPv2c est une version communautaire de SNMP et toutes les communications entre les périphériques sont en texte clair. SNMPv3 est la version la plus sécurisée qui offre des contrôles d'intégrité des messages, l'authentification et le chiffrement des paquets. SNMPv1 est extrêmement obsolète, mais il existe toujours pour assurer la compatibilité des logiciels existants.
Important : SNMPv2c est activé par défaut avec la communauté “ les ” privés ayant des privilèges de lecture/écriture et la communauté “ les ” publiques ayant des privilèges de lecture seule. Il est recommandé de les supprimer et de créer une nouvelle communauté avec un nom différent.
Dans cet article, seuls SNMPv2c et SNMPv3 seront utilisés. Connectez-vous à l'interface Web du contrôleur. Sous Management->SNMP->General, assurez-vous d'activer la version de protocole souhaitée.

Dans le menu communautés, toutes les communautés actuellement créées s'affichent.

Il est recommandé de supprimer les communautés préconfigurées par défaut et d'en créer une nouvelle. L’adresse IP et le masque de réseau se comportent comme une liste d’accès. Par défaut, les deux sont définis sur 0.0.0.0, ce qui signifie que toutes les adresses IP seront autorisées à effectuer des requêtes SNMP pour cette communauté. Le champ du mode d'accès sera laissé en lecture seule car nous voulons que cette communauté soit utilisée uniquement pour la surveillance, et non pour la configuration du WLC.
Important : Toutes les versions inférieures à 8.7.1.135 seront affectées par un bogue CSCvg61933 où netmask ne sera pas autorisé à être défini sur 255.255.255.255. Mettez à niveau le contrôleur vers la dernière version recommandée supérieure à 8.7.1.135 ou utilisez la commande suivante dans l'interface de ligne de commande pour créer une nouvelle communauté : config snmp community ipaddr <adresse_ip> <masque_réseau> <nom_communauté>

Dans le menu SNMP V3 Users, vous pouvez voir tous les utilisateurs configurés, leurs privilèges et protocoles utilisés pour l'authentification et le chiffrement. Bouton Nouveau permet de créer un nouvel utilisateur. Il est recommandé de sélectionner HMAC-SHA comme protocole d'authentification et CFB-AES-128 comme protocole de confidentialité. Nous allons créer un utilisateur nommé 'admin' avec le mot de passe d'authentification et de confidentialité défini sur « Cisco123Cisco123 » :

Noms d'objet et ID d'objet (OID)
Que sont les noms d'objet et les OID ?
Les ID d'objet, ou OID pour abréger, sont des identificateurs uniques qui représentent une variable ou un objet donné. Par exemple, l'utilisation actuelle du processeur est considérée comme une variable qui peut être récupérée en appelant son ID d'objet. Chaque OID est unique et deux ne doivent pas être identiques dans le monde entier, très similaires à une adresse MAC. Ces identificateurs suivent une hiérarchie arborescente et chaque OID peut être suivi jusqu'à sa racine. Chaque fournisseur aura sa propre succursale après une racine commune.
Une analogie pourrait être une adresse de domicile, où la racine serait le pays ou l'état, suivi par un code postal de la ville, la rue, et enfin le numéro de domicile.
Les nombres suivis d'un point représentent chaque étape nécessaire pour atteindre un certain point de l'arborescence ou de la branche.

Toutes ces valeurs sont stockées dans une base d'informations de gestion (MIB), pour résumer, sur chaque périphérique réseau. Chaque identificateur a un nom et une définition (plage de valeurs possibles, type, etc...).
Le chargement de MIB sur votre outil snmp n'est pas nécessaire pour utiliser SNMP et pour interroger un périphérique, aussi longtemps qu'un OID valide est connu, le périphérique répond avec la valeur stockée dans la variable représentée par l'OID. Par exemple, dans l'image ci-dessous, le gestionnaire SNMP interroge l'agent SNMP d'un périphérique pour connaître sa description système à l'aide de l'OID 1.3.6.1.2.1.1.0.

Cependant, le chargement de la MIB sur votre outil de requête vous permet de traduire les numéros OID en noms et de connaître leur définition.
MIB et liste de tous les noms et ID d'objets sur les WLC Cisco
Depuis mai 2019, il n'existe pas de tableau simple et convivial contenant chaque nom d'objet disponible et leurs OID respectifs pour les contrôleurs de réseau local sans fil. Cisco propose également une base MIB (Management Information Base), qui peut ne pas être facilement lisible, mais qui contient tous les noms d'objets disponibles et leur description. La base MIB du WLC Cisco 3504 peut être téléchargée ICI.
Le fichier d'archive téléchargé contient plusieurs fichiers texte .my qui peuvent être importés dans n'importe quel serveur de surveillance SNMP tiers ou simplement ouverts avec un éditeur de texte standard. Pour trouver l'OID d'un nom d'objet spécifique, vous devez d'abord localiser le fichier exact qui le contient.
Par exemple, tous les objets liés à la surveillance de l'état physique du périphérique (tels que la température et la vitesse du ventilateur) se trouvent dans une base MIB appelée CISCO-ENVMON-MIB.my. Ici, “ ciscoEnvMonFanState ” est le nom de l'objet qui sera utilisé pour fournir l'état du ventilateur du WLC. Les fichiers MIB suivent la syntaxe ci-dessous. Les informations relatives à l'objet d'état du ventilateur seront les suivantes :
ciscoEnvMonFanState OBJECT-TYPE
SYNTAX CiscoEnvMonState
MAX-ACCESS read-only
STATUS current
DESCRIPTION
"The current state of the fan being instrumented."
::= { ciscoEnvMonFanStatusEntry 3 }
La plupart des logiciels de surveillance tiers reposent sur des OID et non sur des noms d'objet. La traduction entre le nom d'objet et l'ID d'objet peut être effectuée à l'aide de l'outil de navigation d'objet SNMP de Cisco. Entrez le nom de l'objet dans la barre de recherche. Le résultat fournit l'OID et une brève description. En outre, le même outil peut être utilisé pour rechercher le nom d'objet correspondant de l'OID.

Utilisation d'OID pour surveiller l'état du WLC
Après avoir acquis l'OID de l'objet qui doit être surveillé, la première requête SNMP peut être exécutée. Les exemples suivants montrent comment acquérir une utilisation CPU WLC par coeur (OID = 1.3.6.1.4.1.9.9.618.1.4.1) pour SNMPv2 community snmp_test et SNMPv3 user admin avec le mot de passe d'authentification SHA Cisco123Cisco123 et Mot de passe de confidentialité AES défini sur “ Cisco123Cisco123 ”. L'interface de gestion du contrôleur se trouve sur 10.48.39.164.
Surveillance via snmpwalk
Snmpwalk est une application SNMP qui utilise des requêtes SNMP GETNEXT pour interroger une entité réseau pour obtenir une arborescence d'informations. Il est présent par défaut sur MacOS et la plupart des distributions Linux. Pour SNMPv2c, tLa commande suit la syntaxe suivante :
snmpwalk -v2c -c <community_name> <WLC_management_interface_ip> <OID>
Exemple :
VAPEROVI-M-H1YM:~ vaperovi$ snmpwalk -v2c -c snmp_test 10.48.39.164 1.3.6.1.4.1.9.9.618.1.4.1
SNMPv2-SMI::enterprises.9.9.618.1.4.1.0 = STRING: "0%/1%, 0%/1%, 0%/1%, 0%/1%"
Si SNMPv3 est utilisé, la commande suit la syntaxe suivante :
snmpwalk -v3 -l authPriv -u <username> -a [MD5|SHA] -A <auth_password> -x [AES|DES] -X <priv_password> <WLC_management_interface_ip> <OID>
Sélectionnez MD5/SHA et AES/DES en fonction de la manière dont vous avez créé l'utilisateur SNMPv3 sur le contrôleur.
Exemple :
VAPEROVI-M-H1YM:~ vaperovi$ snmpwalk -v3 -l authPriv -u admin -a SHA -A Cisco123Cisco123 -x AES -X Cisco123Cisco123 10.48.39.164 1.3.6.1.4.1.9.9.618.1.4.1
SNMPv2-SMI::enterprises.9.9.618.1.4.1.0 = STRING: "0%/1%, 0%/1%, 0%/0%, 0%/1%"
Surveillance via Python 3 et la bibliothèque pysnmp
Les extraits de code suivants sont écrits en Python 3.7 et utiliseront pysnmp module (pip install pysnmp) pour effectuer des requêtes SNMP pour l'utilisation CPU du WLC Cisco 3504. Ces exemples utilisent la même communauté SNMPv2 et l'utilisateur SNMPv3 créés dans l'un des chapitres précédents. Il vous suffit de remplacer les valeurs des variables et d'intégrer le code à vos propres scripts personnalisés.
Exemple SNMPv2c :
from pysnmp.hlapi import *
communityName = 'snmp_test'
ipAddress = '10.48.39.164'
OID = '1.3.6.1.4.1.14179.2.3.1.13.0'
errorIndication, errorStatus, errorIndex, varBinds = next(
getCmd(SnmpEngine(),
CommunityData(communityName),
UdpTransportTarget((ipAddress, 161)),
ContextData(),
ObjectType(ObjectIdentity(OID)))
)
if errorIndication:
print(errorIndication)
elif errorStatus:
print('%s at %s' % (errorStatus.prettyPrint(),
errorIndex and varBinds[int(errorIndex) - 1][0] or '?'))
else:
for varBind in varBinds:
print(' = '.join([x.prettyPrint() for x in varBind]))
La sortie est imprimée :
SNMPv2-SMI::enterprises.14179.2.3.1.13.0 = 73
Exemple SNMPv3 :
from pysnmp.hlapi import *
username = 'admin'
ipAddress = '10.48.39.164'
OID = '1.3.6.1.4.1.14179.2.3.1.13.0'
authKey = 'Cisco123Cisco123'
privKey = 'Cisco123Cisco123'
errorIndication, errorStatus, errorIndex, varBinds = next(
getCmd(SnmpEngine(),
UsmUserData(username, authKey, privKey,
authProtocol=usmHMACSHAAuthProtocol,
privProtocol=usmAesCfb128Protocol),
UdpTransportTarget((ipAddress, 161)),
ContextData(),
ObjectType(ObjectIdentity(OID)))
)
if errorIndication:
print(errorIndication)
elif errorStatus:
print('%s at %s' % (errorStatus.prettyPrint(),
errorIndex and varBinds[int(errorIndex) - 1][0] or '?'))
else:
for varBind in varBinds:
print(' = '.join([x.prettyPrint() for x in varBind]))
Intégration avec un logiciel tiers (Grafana/PRTG Network Monitor/SolarWinds)
L'infrastructure Cisco Prime offre la possibilité de surveiller et de configurer facilement plusieurs périphériques réseau, y compris les contrôleurs sans fil. Prime Infrastructure est préchargée avec tous les OID et l'intégration avec WLC consiste simplement à ajouter les informations d'identification WLC à Prime. Après la synchronisation, il est possible de définir des alarmes et de pousser des modèles de configuration pour plusieurs contrôleurs sans fil simultanément.
D'un autre côté, Cisco WLC peut également être intégré à plusieurs solutions de surveillance tierces, à condition que les OID soient connus. Des programmes tels que Grafana, PRTG Network Monitor et SolarWinds server permettent d'importer les MIB ou OID et d'afficher les valeurs dans un graphique convivial.
Cette intégration peut nécessiter des modifications du côté du serveur de surveillance. Dans l'exemple ci-dessous, le serveur de surveillance PRTG est fourni avec l'OID d'utilisation du CPU par coeur qui renvoie la valeur “ 0 %/1 %, 1 %/1 %, 0 %/1 %, 0 %/1 % ”. Le PRTG attend une valeur entière et génère une erreur.

Tableau des OID les plus fréquemment surveillés
Étant donné que les MIB présentent les données dans une syntaxe non conviviale, le tableau suivant inclut certains des noms d'objets les plus courants et leurs OID que les clients Cisco utilisent.
Description |
Nom d'objet |
OID |
Réponse attendue |
Utilisation globale du CPU en % |
agentCurrentCPUUtilization |
1.3.6.1.4.1.14179.1.1.5.1.0 |
INTEGER : 0 |
Utilisation du CPU par coeur |
clsAllCpuUsage |
1.3.6.1.4.1.9.9.618.1.4.1.0 |
CHAÎNE : « 0 %/1 %, 0 %/1 %, 0 %/1 %, 0 %/1 %" |
Utilisation de mémoire vive en % |
clsSysCurrentMemoryUsage |
1.3.6.1.4.1.9.9.618.1.8.6.0 |
Gage32 : 33 |
Température du processeur en °C |
bsnSensorTemperature |
1.3.6.1.4.1.14179.2.3.1.13.0 |
INTEGER : 76 |
Nombre de points d'accès joints |
clsSysApConnectCount |
1.3.6.1.4.1.9.9.618.1.8.4.0 |
Gage32 : 2 |
Nombre de clients |
clsMaxClientsCount |
1.3.6.1.4.1.9.9.618.1.8.12.0 |
Gage32 : 0 |
Nombre de clients par WLAN |
bsnDot11EssNumberOfMobileStations |
1.3.6.1.4.1.14179.2.1.1.1.38.0 |
Compteur32 : 3 Compteur32 : 2 |