Contenido

Introducción

Prerequisites

Requirements

Componentes Utilizados

Configuración de los ajustes SNMP en el WLC

Nombres de objetos e ID de objetos (OID)

¿Qué son los nombres de objeto y OID?

MIBs y Lista de todos los Nombres de Objeto e IDs en Cisco WLCs

Uso de OID para Monitorear el Estado de WLC

Supervisión mediante SNMPwalk

Supervisión mediante Python 3 y pysmnpLibrary

Integración con software de terceros (Grafana/PRTG Network Monitor/SolarWinds)

Tabla de OIDs Monitorizados con Mayor Frecuencia

Introducción

Este documento describe cómo configurar y monitorear SNMP en Cisco Wireless LAN Controller (WLC).

Prerequisites

Requirements

Cisco recomienda disponer de una herramienta SNMP (protocolo simple de administración de red) predeterminada en el sistema operativo o de conocimientos para instalar una.

Componentes Utilizados

Este documento no tiene restricciones específicas en cuanto a versiones de software y de hardware. Todas las pruebas se realizaron en un WLC 3504 que ejecuta la versión de imagen 8.9 y MacOS 10.14. Los OID de este artículo también son válidos en versiones anteriores de AireOS y otros controladores inalámbricos basados en AireOS (8540/5508/5520/2504).

La información que contiene este documento se creó a partir de los dispositivos en un ambiente de laboratorio específico. Todos los dispositivos que se utilizan en este documento se pusieron en funcionamiento con una configuración verificada (predeterminada). Si tiene una red en vivo, asegúrese de entender el posible impacto de cualquier comando.

Configuración de los ajustes SNMP en el WLC

SNMPv2c es una versión basada en la comunidad de SNMP y toda la comunicación entre los dispositivos está en texto sin formato. SNMPv3 es la versión más segura que ofrece comprobaciones de integridad del mensaje, autenticación y cifrado de los paquetes. SNMPv1 está extremadamente obsoleto, pero aún existe para proporcionar compatibilidad de software heredado.

Nota: SNMPv2c está habilitado de forma predeterminada con community private que tiene privilegios de lectura y escritura, y community public que tiene privilegios de solo lectura. Se recomienda quitarlos y crear una nueva comunidad con un nombre diferente.

En este artículo, sólo se utilizan SNMPv2c y SNMPv3. Inicie sesión en la interfaz web del controlador. En Management > SNMP > General asegúrese de habilitar la versión deseada del protocolo.

En el menú de comunidades, se muestran todas las comunidades creadas actualmente.

Se recomienda quitar las comunidades preconfiguradas predeterminadas y crear una nueva. La dirección IP y la máscara de red se comportan como una lista de acceso. De forma predeterminada, ambos están configurados en 0.0.0.0, lo que significa que todas las direcciones IP pueden realizar consultas SNMP para esta comunidad. El campo del modo de acceso se deja como solamente lectura pues esta comunidad se debe utilizar solamente para monitorear, y no para la configuración del WLC.

Nota: Todas las versiones anteriores a 8.7.1.135 se ven afectadas por un Id. de error de Cisco CSCvg61933 donde la máscara de red no se puede establecer en 255.255.255.255. Actualice el controlador a la última versión recomendada posterior a la 8.7.1.135 o utilice este comando en la CLI para crear una nueva comunidad config snmp community ipaddr <ip_address> <netmask> <community_name>.

En el menú Usuarios de SNMP V3, puede ver todos los usuarios configurados, sus privilegios y los protocolos utilizados para la autenticación y el cifrado. El botón Nuevo permite crear un nuevo usuario. Se recomienda elegir HMAC-SHA como protocolo de autenticación y CFB-AES-128 como protocolo de privacidad. Cree un usuario llamado admin con la contraseña de autenticación y privacidad establecida en Cisco123Cisco123.

Nombres de objetos e ID de objetos (OID)

¿Qué son los nombres de objeto y OID?

Los OID son identificadores únicos que representan una determinada variable u objeto. Por ejemplo, el uso actual de la CPU se considera una variable cuyos valores se pueden recuperar al llamar a su ID de objeto. Cada OID es único y no debe haber dos iguales en todo el mundo, bastante similares a una dirección MAC. Estos identificadores se encuentran en una jerarquía de árbol y se puede realizar un seguimiento de cada OID hasta su raíz. Cada proveedor tiene su propia sucursal después de una raíz común.

Una analogía puede ser una dirección de casa, donde la raíz es el país o estado, luego un código postal de la ciudad, la calle y, finalmente, el número de casa.

Los números seguidos por un punto representan cada paso que toma para llegar a un punto determinado en ese árbol o rama.

Todos estos valores se almacenan en una base de información de administración (MIB) en cada dispositivo de red. Cada identificador tiene un nombre y una definición (intervalo de valores, tipos, etc. posibles).

No es necesario cargar MIB en la herramienta SNMP para utilizar SNMP y consultar un dispositivo, siempre y cuando se conozca un OID válido. El dispositivo responde con el valor almacenado en la variable que representa el OID. Por ejemplo, en la imagen mostrada, el administrador SNMP consulta al agente SNMP de un dispositivo para obtener su descripción del sistema con el uso de OID 1.3.6.1.2.1.1.1.0.

Si carga la MIB en su herramienta de consulta, puede utilizarla para traducir números OID en nombres y descubrir sus definiciones.

MIBs y Lista de todos los Nombres de Objeto e IDs en Cisco WLCs

A partir de mayo de 2019, no existe una tabla sencilla y fácil de usar que contenga todos los nombres de objeto disponibles y sus respectivos OID para los controladores de LAN inalámbrica. Como alternativa, Cisco ofrece Management Information Base (MIB), que no se puede leer fácilmente pero contiene todos los nombres de objeto disponibles y su descripción. Cisco 3504 WLC MIB se puede descargar aquí.

El archivo de almacenamiento descargado contiene varios archivos de texto .my que se pueden importar a cualquier servidor de supervisión SNMP de terceros o simplemente abrir con un editor de texto normal. Para encontrar el OID de un nombre de objeto específico, primero debe localizar el archivo exacto que lo contiene.

Por ejemplo, todos los objetos relacionados con la supervisión del estado físico del dispositivo (como la temperatura y la velocidad del ventilador) se encuentran dentro de una MIB denominada CISCO-ENVMON-MIB.my. Aquí, ciscoEnvMonFanState  es el nombre del objeto que se utiliza para proporcionar el estado del ventilador del WLC. Los archivos MIB muestran la sintaxis. La información sobre el objeto de estado del ventilador es similar a la siguiente:

ciscoEnvMonFanState OBJECT-TYPE SYNTAX CiscoEnvMonState MAX-ACCESS read-only STATUS current DESCRIPTION "The current state of the fan being instrumented." ::= { ciscoEnvMonFanStatusEntry 3 }

La mayor parte del software de supervisión de terceros se basa en OID y no en nombres de objetos. La traducción entre el nombre de objeto y el ID de objeto se puede realizar con la herramienta Cisco SNMP Object Navigator. Introduzca el nombre del objeto en la barra de búsqueda. El resultado proporciona el OID y una breve descripción. Además, se puede utilizar la misma herramienta para buscar el nombre de objeto correspondiente del OID.

Uso de OID para Monitorear el Estado de WLC

Después de adquirir el OID del objeto que necesita ser monitoreado, se puede ejecutar la primera consulta SNMP. Estos ejemplos muestran cómo adquirir un uso de CPU WLC por núcleo (OID = 1.3.6.1.4.1.9.9.618.1.4.1) para la comunidad SNMPv2 snmp_test   y el usuario SNMPv3 admin   con la contraseña de autenticación SHA Cisco123Cisco123   y la contraseña de privacidad AES establecida en Cisco123Cisco123 . La interfaz de administración del controlador se encuentra en 10.48.39.164.

Supervisión mediante SNMPwalk

SNMPwalk es una aplicación SNMP que utiliza solicitudes SNMP GETNEXT para consultar una entidad de red para obtener un árbol de información. Está presente de forma predeterminada en MacOS y en la mayoría de las distribuciones Linux. Para SNMPv2c, el comando tiene la sintaxis:

snmpwalk -v2c -c <community_name> <WLC_management_interface_ip> <OID>

Por ejemplo:

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 se utiliza SNMPv3, el comando tiene la sintaxis:

snmpwalk -v3 -l authPriv -u <username> -a [MD5|SHA] -A <auth_password> -x [AES|DES] -X <priv_password> <WLC_management_interface_ip> <OID>

Elija MD5/SHA y AES/DES en función de cómo haya creado el usuario SNMPv3 en el controlador.

Por ejemplo:

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%"

Supervisión a través de Python 3 y la biblioteca pysmnp

Estos fragmentos de código se escriben en Python 3.7 y utilizan el pysnmp  módulo (pip install pysnmp ) para realizar consultas SNMP para el uso de la CPU del WLC 3504 de Cisco. Estos ejemplos utilizan la misma comunidad SNMPv2 y usuario SNMPv3 creados en uno de los capítulos anteriores. Simplemente reemplace los valores de las variables e integre el código con sus propias secuencias de comandos personalizadas.

Ejemplo de 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]))

Salida:

SNMPv2-SMI::enterprises.14179.2.3.1.13.0 = 73

Ejemplo de 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]))

Integración con software de terceros (Grafana/PRTG Network Monitor/SolarWinds)

La infraestructura Cisco Prime permite supervisar y configurar fácilmente varios dispositivos de red, incluidos controladores inalámbricos. Prime Infrastructure viene precargado con todos los OID y la integración con el WLC consiste simplemente en la adición de las credenciales del WLC a Prime. Después de la sincronización, es posible establecer alarmas y plantillas de configuración de inserción para varios controladores inalámbricos a la vez.

Por otro lado, Cisco WLC también se puede integrar con múltiples soluciones de monitoreo de terceros, siempre y cuando se conozcan los OID. Programas como Grafana, PRTG Network Monitor y SolarWinds server permiten importar MIB u OID y mostrar los valores en un gráfico fácil de usar.

Es posible que sea necesario ajustar los servidores de supervisión para dar cabida a esta integración. En el ejemplo que se muestra en la imagen, el servidor de monitoreo PRTG se proporciona con el OID de uso de CPU por núcleo que devuelve la cadena 0%/1%, 1%/1%, 0%/1%, 0%/1%. PRTG espera un valor entero y genera un error.

Tabla de OIDs Monitorizados con Mayor Frecuencia

Si considera que las MIB presentan los datos en una sintaxis no amigable para el usuario, esta tabla incluye algunos de los nombres de objeto más comunes y sus OID que utilizan los clientes de Cisco.

Descripción

Nombre del Objeto

OID (ID del objeto)

Respuesta esperada

Uso general de la CPU en %

agentCurrentCPUtilization

1.3.6.1.4.1.14179.1.1.5.1.0

ENTERO: 0

Uso de CPU por núcleo

clsAllCpuUsage

1.3.6.1.4.1.9.9.618.1.4.1.0

CADENA: 0%/1%, 0%/1%, 0%/1%, 0%/1%

Uso de RAM en %

clsSysCurrentMemoryUsage

1.3.6.1.4.1.9.9.618.1.8.6.0

Indicador32: 33

Temperatura de la CPU en °C

bsnSensorTemperature

1.3.6.1.4.1.14179.2.3.1.13.0

ENTERO: 76

Número de puntos de acceso unidos

clsSysApConnectCount

1.3.6.1.4.1.9.9.618.1.8.4.0

Indicador32: 2

Número de clientes

clsMaxClientsCount

1.3.6.1.4.1.9.9.618.1.8.12.0

Indicador32: 0

Número de clientes por WLAN

bsnDot11EssNumberOfMobileStations

1.3.6.1.4.1.14179.2.1.1.1.38.0

Contador32: 3

Contador32: 2