Introduction
Este artigo explicará como configurar o monitoramento SNMP no Cisco 3504 Wireless LAN Controller (WLC), traduzir nomes de objetos em identificadores de objetos e vice-versa, bem como fornecer a lista de OIDs mais comumente usados pelos clientes da Cisco.
Prerequisites
Requirements
Ter uma ferramenta snmp padrão em seu sistema operacional ou instalar uma.
Componentes Utilizados
Todos os testes foram realizados em uma WLC 3504 executando a versão de imagem 8.9 e MacOS 10.14. Os OIDs neste artigo também são válidos em versões mais antigas do AireOS e em outras controladoras sem fio baseadas no AireOS (8540/5508/5520/2504).
Configurando configurações de SNMP na WLC
O SNMPv2c é uma versão baseada em comunidade do SNMP e toda a comunicação entre os dispositivos está em texto claro. O SNMPv3 é a versão mais segura que oferece verificações de integridade de mensagens, autenticação e criptografia dos pacotes. O SNMPv1 está extremamente desatualizado, mas ainda existe para fornecer compatibilidade de software legado.
Importante: O SNMPv2c é ativado por padrão com comunidade "privada" com privilégios de leitura e gravação e comunidade "pública" com privilégios somente leitura. Recomenda-se removê-los e criar uma nova comunidade com um nome diferente.
Neste artigo, somente SNMPv2c e SNMPv3 serão usados. Faça login na interface da Web do controlador. Em Gerenciamento->SNMP->Geral, certifique-se de habilitar a versão desejada do protocolo.

No menu Comunidades, todas as comunidades criadas atualmente serão exibidas.

É prática recomendada remover comunidades pré-configuradas padrão e criar uma nova. O endereço IP e a máscara de rede se comportarão como uma lista de acesso. Por padrão, ambos serão definidos como 0.0.0.0, o que significa que todos os endereços IP poderão fazer consultas SNMP para esta comunidade. O campo do modo de acesso será deixado como "Somente leitura", pois queremos que essa comunidade seja usada somente para monitoramento, e não para configuração da WLC.
Importante: Todas as versões inferiores a 8.7.1.135 serão afetadas com um bug CSCvg61933 em que a máscara de rede não poderá ser definida como 255.255.255.255. Atualize a controladora para a versão recomendada mais recente acima de 8.7.1.135 ou use o seguinte comando na CLI para criar uma nova comunidade: config snmp community ipaddr <ip_address> <netmask> <community_name>

No menu Usuários SNMP V3, você pode ver todos os usuários configurados, seus privilégios e protocolos usados para autenticação e criptografia. Botão Novo permite a criação de um novo usuário. É recomendável selecionar HMAC-SHA como protocolo de autenticação e CFB-AES-128 como protocolo de privacidade. Criaremos um usuário chamado 'admin' com a senha de autenticação e privacidade definida como "Cisco123Cisco123":

Nomes de objetos e IDs de objetos (OIDs)
O que são nomes de objetos e OIDs?
As IDs de objeto, ou OIDs para abreviar, são identificadores exclusivos que representam uma determinada variável ou objeto. Por exemplo, o uso atual da CPU é considerado uma variável cujos valores podem ser recuperados chamando seu ID de objeto. Cada OID é único e nenhum dois deve ser o mesmo em todo o mundo, bastante semelhante a um endereço MAC. Esses identificadores seguem uma hierarquia de árvore e cada OID pode ser rastreado até sua raiz. Cada fornecedor terá sua própria filial após uma raiz comum.
Uma analogia poderia ser um endereço residencial, onde a raiz seria o país ou estado, seguido por um CEP da cidade, a rua e, finalmente, o número de casa.
Os números seguidos por um ponto representam cada etapa necessária para chegar a um certo ponto nessa árvore ou ramificação.

Todos esses valores são armazenados em uma Base de Informações de Gerenciamento, ou MIB, abreviadamente, em cada dispositivo de rede. Cada identificador tem nome e definição (faixa de valores possíveis, tipo, etc...).
O carregamento de MIBs em sua ferramenta snmp não é necessário para usar o SNMP e consultar um dispositivo, pois se um OID válido for conhecido, o dispositivo responderá com o valor armazenado na variável que o OID representa. Por exemplo, na imagem abaixo, o gerenciador SNMP está consultando o agente SNMP de um dispositivo para sua descrição de sistema usando o OID 1.3.6.1.2.1.1.1.0.

No entanto, carregar a MIB na ferramenta de consulta permite que você se beneficie de traduzir os números OID para nomes e conhecer sua definição.
MIBs e lista de todos os nomes de objetos e IDs em Cisco WLCs
A partir de maio de 2019, não existe uma tabela simples e amigável que contenha cada nome de objeto disponível e seus respectivos OIDs para Wireless LAN Controllers. Como alternativa, a Cisco oferece MIBs (Management Information Base, Base de informações de gerenciamento), que podem não ser facilmente legíveis, mas contém todos os nomes de objetos disponíveis e suas descrições. O MIB do Cisco 3504 WLC pode ser baixado AQUI.
O arquivo morto baixado contém vários arquivos de texto .my que podem ser importados para qualquer servidor de monitoração SNMP de terceiros ou simplesmente abertos com um editor de texto regular. Para localizar o OID de um nome de objeto específico, primeiro é necessário localizar o arquivo exato que o contém.
Por exemplo, todos os objetos relacionados à monitoração do estado físico do dispositivo (como temperatura e velocidade do ventilador) estarão localizados em uma MIB chamada CISCO-ENVMON-MIB.my. Aqui, "ciscoEnvMonFanState" é o nome do objeto que será usado para fornecer o estado do ventilador da WLC. Os arquivos MIB seguem a sintaxe mostrada abaixo. As informações sobre o objeto de estado do ventilador serão como esta:
ciscoEnvMonFanState OBJECT-TYPE
SYNTAX CiscoEnvMonState
MAX-ACCESS read-only
STATUS current
DESCRIPTION
"The current state of the fan being instrumented."
::= { ciscoEnvMonFanStatusEntry 3 }
A maioria dos softwares de monitoramento de terceiros depende de OIDs, e não de nomes de objetos. A conversão entre o nome do objeto e a ID do objeto pode ser feita usando a ferramenta SNMP object navigator da Cisco. Insira o nome do objeto na barra de pesquisa. A saída fornecerá o OID e uma breve descrição. Além disso, a mesma ferramenta pode ser usada para localizar o nome de objeto correspondente do OID.

Usando OIDs para monitorar o estado da WLC
Depois de adquirir o OID do objeto que precisa ser monitorado, a primeira consulta SNMP pode ser executada. Os exemplos a seguir mostrarão como adquirir o uso de CPU WLC por núcleo (OID = 1.3.6.1.4.1.9.9.618.1.4.1) para a comunidade SNMPv2 snmp_test e admin de usuário SNMPv3 com a senha de autenticação SHA Cisco123 e Senha de privacidade AES definida como "Cisco123Cisco123". A interface de gerenciamento do controlador está localizada em 10.48.39.164.
Monitoramento via snmpwalk
O snmpwalk é um aplicativo SNMP que usa solicitações SNMP GETNEXT para consultar uma entidade de rede para obter uma árvore de informações. Ele está presente por padrão no MacOS e na maioria das distribuições do Linux. Para SNMPv2c, tO comando seguirá a sintaxe:
snmpwalk -v2c -c <community_name> <WLC_management_interface_ip> <OID>
Exemplo:
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%"
Se SNMPv3 for usado, o comando seguirá a sintaxe:
snmpwalk -v3 -l authPriv -u <username> -a [MD5|SHA] -A <auth_password> -x [AES|DES] -X <priv_password> <WLC_management_interface_ip> <OID>
Selecione MD5/SHA e AES/DES com base em como você criou o usuário SNMPv3 no controlador.
Exemplo:
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%"
Monitoramento via Biblioteca Python 3 e Pysnmp
Os códigos a seguir são gravados no Python 3.7 e utilizarão o módulo pysnmp (pip install pysnmp) para fazer consultas SNMP para utilização de CPU do Cisco 3504 WLC. Esses exemplos usarão a mesma comunidade SNMPv2 e o mesmo usuário SNMPv3 criado em um dos capítulos anteriores. Basta substituir os valores variáveis e integrar o código com seus próprios scripts personalizados.
Exemplo 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]))
O resultado será impresso:
SNMPv2-SMI::enterprises.14179.2.3.1.13.0 = 73
Exemplo 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]))
Integração com software de terceiros (Grafana/PRTG Network Monitor/SolarWinds)
O Prime Infrastructure da Cisco oferece a capacidade de monitorar e configurar facilmente vários dispositivos de rede, incluindo controladores sem fio. O Prime Infrastructure vem pré-carregado com todos os OIDs e a integração com o WLC consiste simplesmente em adicionar as credenciais do WLC ao Prime. Após a sincronização, é possível definir alarmes e modelos de configuração push para vários controladores sem fio de uma só vez.
Por outro lado, o Cisco WLC também pode ser integrado a várias soluções de monitoramento de terceiros, desde que os OIDs sejam conhecidos. Programas como Grafana, monitor de rede PRTG e servidor SolarWinds permitem que as MIBs ou OIDs sejam importadas e os valores sejam exibidos em um gráfico fácil de usar.
Essa integração pode exigir alguns ajustes no lado do servidor de monitoramento. No exemplo abaixo, o servidor de monitoramento PRTG é fornecido com o OID de utilização de CPU por núcleo, que retorna a classificação "0%/1%, 1%/1%, 0%/1%, 0%/1%". O PRTG espera um valor inteiro e gera um erro.

Tabela dos OIDs monitorados com mais frequência
Considerando que as MIBs apresentam os dados em sintaxe não amigável, a tabela a seguir inclui alguns dos nomes de objetos mais comuns e seus OIDs que os clientes da Cisco estão usando.
Descrição |
Nome do objeto |
OID |
Resposta esperada |
Uso geral da CPU em % |
agentCurrentCPUUtilização |
1.3.6.1.4.1.14179.1.1.5.1.0 |
INTEGER: 0 |
Uso de CPU por núcleo |
clsAllCpuUsage |
1.3.6.1.4.1.9.9.618.1.4.1.0 |
SÉRIE: "0%/1%, 0%/1%, 0%/1%, 0%/1%" |
Uso de RAM em % |
clsSysCurrentMemoryUsage |
1.3.6.1.4.1.9.9.618.1.8.6.0 |
Medidor32: 33 |
Temperatura da CPU em °C |
bsnSensorTemperatura |
1.3.6.1.4.1.14179.2.3.1.13.0 |
INTEGER: 76 |
Número do AP associado |
clsSysApConnectCount |
1.3.6.1.4.1.9.9.618.1.8.4.0 |
Medidor32: 2 |
Número de clientes |
clsMaxClientsCount |
1.3.6.1.4.1.9.9.618.1.8.12.0 |
Medidor32: 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 |