Introdução
Este documento descreve como configurar o Simple Network Management Protocol (SNMP) para monitorar a controladora Wireless LAN (WLC) Cisco 9800.
Pré-requisitos
Requisitos
- Conhecimento básico do protocolo 9800 WLC e SNMP
- Servidor/ferramenta SNMP
Componentes Utilizados
Todos os testes foram executados no MacOS 10.14 e em uma WLC 9800-CL com a versão da imagem 17.5.1. Alguns dos OIDs mencionados neste artigo não existem em versões de imagem mais antigas.
As informações neste documento foram criadas a partir de dispositivos em um ambiente de laboratório específico. Todos os dispositivos utilizados neste documento foram iniciados com uma configuração (padrão) inicial. Se a rede estiver ativa, certifique-se de que você entenda o impacto potencial de qualquer comando.
SNMP x telemetria
As WLCs mais antigas do AireOS dependem do SNMP como o protocolo principal do monitor. A maioria das informações relevantes, como a contagem de clientes, o número de pontos de acesso unidos, o processador e o uso de memória, podem ser obtidas através de consulta SNMP da ferramenta que monitora, para a WLC.
Com a WLC 9800, o foco foi colocado na telemetria. A telemetria funciona em um modelo "push", em que a WLC envia informações relevantes ao servidor sem a necessidade de consulta. O Catalyst 9800 ainda oferece o SNMP para fins de legado. Algumas informações podem ser exclusivas para telemetria e alguns dos OIDs anteriormente disponíveis no AireOS ainda não estão disponíveis no 9800.
Configurar o SNMP no WLC
A partir do Cisco IOS XE Bengaluru 17.6.1, a porta de serviço Ethernet (interface de gerenciamento VRF/GigabitEthernet 0) é suportada no Cisco Catalyst 9800 Series Wireless Controller.
Antes desta versão, o Catalyst 9800 WLC só podia ser monitorado com SNMP através de sua interface de gerenciamento sem fio ou através da interface de gerenciamento de redundância (no caso de um WLC em standby no cluster HA nas versões 17.5.1 e superior).
Por meio da interface da Web
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 mensagem, autenticação e criptografia dos pacotes. O SNMPv1 está extremamente desatualizado, mas ainda existe para fornecer compatibilidade de software herdado. Não é mencionado neste artigo.
Importante: O SNMPv2c é ativado por padrão com a comunidade "privada" com privilégios de leitura+gravação e a comunidade "pública" com privilégios somente leitura. É recomendável removê-los e criar uma nova comunidade com um nome diferente.
Faça login na interface da Web do WLC 9800. Em Administration > Management > SNMP, certifique-se de que o SNMP esteja habilitado globalmente. Em Community Strings, todas as comunidades configuradas no momento e seus níveis de permissão são exibidos:

Antes da criação do usuário SNMP V3, é necessário definir um grupo SNMP V3. Para criar um grupo de usuários com permissão de leitura+gravação, defina Read View e Write View como v1default. O grupo somente leitura precisa ter o Modo de Gravação vazio

Na guia SNMP V3 Users, 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.
Há três modos de segurança disponíveis:
- AuthPriv = As mensagens são autenticadas e criptografadas
- AuthNoPriv = As mensagens são autenticadas, mas não criptografadas
- NoAuthNoPriv = Nenhuma segurança aplicada às mensagens
Selecione SHA como protocolo de autenticação e pelo menos AES-128 como protocolo de privacidade é recomendado.

Através da linha de comando
O SNMP também pode ser configurado através da Interface de Linha de Comando (CLI). A CLI oferece parâmetros de configuração adicionais, como a capacidade de atribuir uma lista de acesso à comunidade v2 ou ao usuário v3.
Exemplo de configuração da comunidade v2 leitura+gravação, grupo v3 leitura+gravação e usuário v3 que pertence a este grupo:
snmp-server manager
snmp-server community RW
snmp-server community RO
snmp-server group v3 auth write v1default
snmp-server user v3 auth sha priv aes 128 access
Exemplo de uma lista de acesso que só permite que o dispositivo no endereço IP 192.168.10.10 consulte a comunidade WLC v2 chamada "ReadWriteCommunity":
ip access-list standard 50
10 permit 192.168.10.10
20 deny any
snmp-server manager
snmp-server community ReadWriteCommunity RW 50
Note: No momento da gravação deste documento, somente ACLs padrão são suportadas. As ACLs estendidas podem ser atribuídas, mas não funcionam.
Nomes de objetos e IDs de objetos (OIDs)
O que são nomes de objetos e OIDs?
Os IDs de objeto, ou OIDs abreviados, são identificadores exclusivos que representam uma determinada variável ou objeto. Por exemplo, o uso atual do processador é considerado variável, cujos valores podem ser recuperados com a chamada em seu ID de objeto. Cada OID é exclusivo e não pode haver dois iguais em todo o mundo, muito semelhante a um endereço MAC.
Esses identificadores seguem uma hierarquia de árvore e cada OID pode ser rastreado até sua raiz. Cada fornecedor tem sua própria filial com uma raiz comum.
Uma analogia poderia ser um endereço residencial, onde a raiz seria o país ou o estado, seguido por um CEP da cidade, a rua e, finalmente, o número residencial.
Os números seguidos de 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, abreviando, em cada dispositivo de rede. Cada identificador tem nome e uma definição (intervalo de valores possíveis, tipo...).
Não é necessário carregar uma MIB na ferramenta de monitoramento SNMP para usar o SNMP e consultar um dispositivo.
Desde que um OID válido seja conhecido, o dispositivo responde com o valor que é armazenado na variável que o OID representa. No entanto, se você carregar o MIB em sua ferramenta de consulta, ele fornecerá a vantagem de converter os nomes de objetos em suas IDs e permitirá que o saiba sua descrição.
Neste exemplo, a ferramenta SNMP consulta o agente SNMP de um dispositivo para obter sua descrição do sistema com o uso do OID 1.3.6.1.2.1.1.1.0.

MIBs e lista de todos os nomes de objetos e IDs em Cisco WLCs
A Cisco oferece Base de Informações de Gerenciamento (MIBs - Management Information Base) para 9800 WLCs. Não é de fácil leitura, mas o MIB contém todos os nomes de objetos disponíveis e suas descrições.
Todos os modelos 9800 (9800-80, 9800-40, 9800-L, 9800-CL, EWC) usam o mesmo MIB que pode ser baixado aqui: https://cfnng.cisco.com/mibs
A mais atualizada é aquela com a data mais recente, não aquela com o nome de versão de código mais alto.
O arquivo morto baixado contém vários arquivos de texto .my que podem ser importados para qualquer servidor SNMP de terceiros ou simplesmente abertos com um editor de texto. 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 a monitorar o estado físico do dispositivo (como CPU e memória) estão localizados dentro de um MIB chamado CISCO-PROCESS-MIB.my.
Aqui, "cpmCPUMemoryUsed" é o nome do objeto que é usado para fornecer a quantidade de memória usada pelo WLC em bytes. Todos os arquivos MIB seguem uma sintaxe semelhante. As informações sobre o objeto de memória usado se parecem com:
cpmCPUMemoryUsed OBJECT-TYPE
SYNTAX Gauge32
UNITS "kilo-bytes"
MAX-ACCESS read-only
STATUS current
DESCRIPTION
"The overall CPU wide system memory which is currently
under use."
::= { cpmCPUTotalEntry 12 }
A maioria dos softwares de terceiros para monitorar 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 com o uso da ferramenta de navegador de objetos Cisco SNMP.
Digite o nome do objeto na barra de pesquisa. O Output fornece o OID e uma breve descrição. Além disso, a mesma ferramenta pode ser usada para localizar o nome do objeto do OID fornecido.

Usar OIDs para monitorar o estado da WLC
Após a aquisição do OID do objeto que precisa ser monitorado, a primeira consulta SNMP pode ser executada.
Exemplos neste capítulo mostram como adquirir uma memória livre de WLC (OID = 1.3.6.1.4.1.9.9.48.1.1.1.5) para SNMPv2 community private e usuário SNMPv3 snmpadmin com a senha SHA Auth Cisco123# e a senha AES Privacy definida como Cisco123#. A interface de gerenciamento do controlador está localizada em 10.48.39.133.
Monitor via Snmpwalk
Snmpwalk é uma aplicação SNMP que usa solicitações SNMP GETNEXT para consultar uma entidade de rede em busca de uma árvore de informações. Ele está presente por padrão no MacOS e na maioria das distribuições Linux. Para o SNMPv2c, o comando segue a sintaxe:
snmpwalk -v2c -c
Exemplo:
VAPEROVI:~ vaperovi$ snmpwalk -v2c -c private 10.48.39.133 1.3.6.1.4.1.9.9.109.1.1.1.1.12
SNMPv2-SMI::enterprises.9.9.109.1.1.1.1.12.2 = 3783236 <-------- Free Memory in Bytes
Se o SNMPv3 for usado, o comando segue 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:~ vaperovi$ snmpwalk -v3 -l authPriv -u snmpadmin -a SHA -A Cisco123# -x AES -X Cisco123# 10.48.39.133 1.3.6.1.4.1.9.9.109.1.1.1.1.12
SNMPv2-SMI::enterprises.9.9.109.1.1.1.1.12.2 = 3783236 <-------- Free Memory in Bytes
#snmpwalk output still shows v2 even though v3 is used
Monitor através da biblioteca Python3 e pysnmp
Os trechos de código são escritos para Python 3.9 e utilizam o módulo pysnmp (pip install pysnmp) para fazer consultas SNMP para utilização de memória do Catalyst 9800-CL WLC. Esses exemplos usam a mesma comunidade SNMPv2 e o usuário SNMPv3 criados em um dos capítulos anteriores. Basta substituir os valores de variáveis e integrar o código em seus próprios scripts personalizados.
Exemplo de SNMPv2:
from pysnmp.hlapi import *
communityName = 'private'
ipAddress = '10.48.39.133'
OID = '1.3.6.1.4.1.9.9.109.1.1.1.1.12'
for (errorIndication,
errorStatus,
errorIndex,
varBinds) in nextCmd(SnmpEngine(),
CommunityData(communityName),
UdpTransportTarget((ipAddress, 161)),
ContextData(),
ObjectType(ObjectIdentity(OID)),
lexicographicMode=False):
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]))
A saída é impressa:
SNMPv2-SMI::enterprises.9.9.109.1.1.1.1.12.2 = 3783236
Exemplo de SNMPv3:
from pysnmp.hlapi import *
username = 'snmpadmin'
ipAddress = '10.48.39.133'
OID = '1.3.6.1.4.1.9.9.109.1.1.1.1.12'
authKey = 'Cisco123#'
privKey = 'Cisco123#'
for (errorIndication,
errorStatus,
errorIndex,
varBinds) in nextCmd(SnmpEngine(),
UsmUserData(username, authKey, privKey,
authProtocol=usmHMACSHAAuthProtocol,
privProtocol=usmAesCfb128Protocol),
UdpTransportTarget((ipAddress, 161)),
ContextData(),
ObjectType(ObjectIdentity(OID)),
lexicographicMode=False):
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+Prometheus/PRTG Network Monitor/SolarWinds)
O Cisco Prime Infrastructure oferece a capacidade de monitorar e configurar facilmente vários dispositivos de rede, o que inclui controladores sem fio.
A Prime Infrastructure vem pré-carregada com todos os OIDs e a integração com a WLC consiste simplesmente na adição das credenciais da WLC ao Prime. Com 9800 WLCs, Prime depende principalmente de Telemetria para coletar a maioria dos detalhes da WLC, enquanto a pequena parte das informações é obtida através do SNMP.
Por outro lado, o Cisco WLC também pode ser integrado a várias soluções de terceiros para monitoramento, desde que os OIDs sejam conhecidos.
Programas como Grafana+Prometheus, PRTG Network monitor e SolarWinds server permitem que as MIBs ou OIDs sejam importadas e os valores sejam exibidos em um gráfico de fácil utilização.
Essa integração pode exigir alguns ajustes no lado do servidor SNMP. Neste exemplo, o servidor monitor PRTG é fornecido com o OID de utilização de CPU por núcleo que retorna a string "0%/1%, 1%/1%, 0%/1%, 0%/1%". PRTG espera um valor inteiro e gera um erro.

Integração com CUCM
O Cisco Unified Communications Manager (CUCM) tem um recurso de rastreamento de endpoint sem fio que permite rastrear aproximadamente a localização do cliente com base no AP ao qual o cliente está conectado. Para que esse recurso funcione, o CUCM precisa extrair informações da WLC através de consultas SNMP.
Importante: Muitas versões do CUCM são afetadas pelo bug da Cisco ID CSCv07486 - Não é possível sincronizar pontos de acesso na WLC devido a solicitações de SNMP muito grandes. Esse problema é acionado em situações em que o CUCM executa uma versão afetada e a WLC tem mais de 10 pontos de acesso. Devido à forma incorreta como o CUCM consulta uma grande quantidade de OIDs em uma única solicitação em massa, a WLC se recusa a responder ou responde com uma resposta tooBig. A resposta tooBig nem sempre é enviada imediatamente e pode ser atrasada. Depurações de SNMP em WLC imprimem "SNMP: Pacote recebido via UDP de x.x.x.x em VlanXXSrParseV1SnmpMessage: o pacote é muito grande SrDoSnmp: ASN Parse Error" (Erro de análise ASN).
Tabela dos OIDs mais comumente monitorados
A tabela inclui alguns dos nomes de objetos mais comuns e seus OIDs, considerando que os MIBs apresentam os dados em sintaxe não amigável:
Note: Comando "show snmp mib | em <Nome do objeto>" pode ser usado para verificar se um determinado nome de objeto está disponível na WLC 9800.
Descrição
|
Nome do objeto
|
OID
|
Resposta esperada
|
Uso geral de CPU em % nos últimos 5 segundos (equivalente a "show process cpu platform")
|
cpmCPUTotal5sec
|
1.3.6.1.4.1.9.9.109.1.1.1.1.3
|
INTEGER: 5
|
Uso geral da CPU em % últimos 1 min
|
cpmCPUTotal1min
|
1.3.6.1.4.1.9.9.109.1.1.1.1.4
|
INTEGER: 5
|
Uso geral de CPU em % nos últimos 5 minutos
|
cpmCPUTotal5min
|
1.3.6.1.4.1.9.9.109.1.1.1.1.5
|
INTEGER: 5
|
Uso da CPU em % nos últimos 5 minutos, por núcleo
|
cpmCore5min
|
.1.3.6.1.4.1.9.9.109.1.1.2.1.5.5 (.0 a .X, dependendo do número de núcleos)
|
INTEGER: 5
|
Memória usada atualmente em bytes
|
cpmCPUMemoryUsed
|
1.3.6.1.4.1.9.9.109.1.1.1.1.12
|
INTEGER: 3783236
|
Memória livre atual em bytes
|
cpmCPUMemoryFree
|
1.3.6.1.4.1.9.9.109.1.1.1.1.13
|
INTEGER: 4263578
|
Menor quantidade de memória livre desde a última inicialização em bytes
|
cpmCPUMemoryLowest
|
1.3.6.1.4.1.9.9.109.1.1.1.1.15
|
INTEGER: 4251212
|
Motivo do último recarregamento
|
por queRecarregar
|
1.3.6.1.4.1.9.2.1.2
|
SÉRIE: "recarregar"
|
Imagem de software de todos os APs associados
|
bsnAPSoftwareVersion
|
1.3.6.1.4.1.14179.2.2.1.1.8
|
SÉRIE: "17.5.1.12 "
|
Número do modelo de todos os APs associados
|
bsnAPModel
|
1.3.6.1.4.1.14179.2.2.1.1.16
|
SÉRIE: "AIR-AP1840I-E-K9"
|
Número de clientes
|
cLApActiveClientCount
|
.1.3.6.1.4.1.9.9.513.1.1.1.1.72
|
Número inteiro
|
Número de APs unidos
|
cLApGlobalAPConnectCount
|
1.3.6.1.4.1.9.9.513.1.3.35
|
Medidor32: 1
|
Estado da unidade de fonte de alimentação
|
CiscoEnvMonSupplyStatusTable
|
.1.3.6.1.4.1.9.9.13.1.5(adicionado através do CSCwb73163 )
|
tabela
|
Estado do ventilador
|
TabelaDeStatusDoVentiladorDoEnvCisco
|
.1.3.6.1.4.1.9.9.13.1.4 (adicionado através do CSCwb73163 )
|
tabela
|
Atualmente, há solicitações de aprimoramento abertas para suportar OIDs do número total de clientes e do número de pontos de acesso unidos:
ID de bug Cisco CSCvu26309 - OID SNMP para contagem de cliente ausente no 9800
O estado da PSU (Power Supply Unit, unidade de fonte de alimentação) e o estado do ventilador não são suportados no momento em que este artigo foi escrito. A solicitação de aprimoramento foi aberta:
ID de bug Cisco CSCwa23598 - Aprimoramento de WLC 9800 / Suporte para PSU e SNMP OID de estado do ventilador (1.3.6.1.4.1.9.9.13)
Monitorar a WLC em standby em HA
Monitorar uma WLC em standby no cluster de alta disponibilidade só é possível a partir da versão 17.5.1. A WLC em standby pode ser monitorada diretamente através da RMI ou com a consulta da WLC ativa.
Monitorar diretamente a WLC em standby
A WLC em standby pode ser monitorada diretamente somente se as WLCs que são executadas no tipo RMI + RP HA. Isso é feito através do endereço IP da interface de gerenciamento de redundância (RMI - Redundancy Management Interface) do WLC em standby.
Neste cenário, somente OIDs de IF-MIB são oficialmente suportados, o que torna possível apenas monitorar o estado de todas as interfaces na WLC em standby. Exemplo de saída do WLC 9800-CL:
Descrição
|
Nome do objeto
|
OID
|
Resposta esperada
|
Nome da interface
|
ifDescr
|
1.3.6.1.2.1.2.2.1.2
|
SNMPv2-SMI::mib-2.2.1.2.1 = GigabitEthernet1 SNMPv2-SMI::mib-2.2.1.2.2 = GigabitEthernet2 SNMPv2-SMI::mib-2.2.1.2.3 = GigabitEthernet3 SNMPv2-SMI::mib-2.2.1.2.4 = VoIP-Null0 SNMPv2-SMI::mib-2.2.1.2.5 = Null0 SNMPv2-SMI::mib-2.2.1.2.6 = Vlan1 SNMPv2-SMI::mib-2.2.1.2.7 = Vlan39
|
Estado operacional da interface (1=ativo, 2=inativo)
|
ifOperStatus
|
1.3.6.1.2.1.2.2.1.8
|
SNMPv2-SMI::mib-2.2.1.8.1 = 2 SNMPv2-SMI::mib-2.2.2.1.8.2 = 2 SNMPv2-SMI::mib-2.2.1.8.3 = 1 SNMPv2-SMI::mib-2.2.1.8.4 = 2 SNMPv2-SMI::mib-2.2.2.1.8.5 = 2 SNMPv2-SMI::mib-2.2.1.8.6 = 1
|
Note: Espera-se que a porta de standby WLC Gig 2 (porta de tronco usada para switching de tráfego) esteja em estado de desligamento. Uma vez que o failover ocorre, a porta Gig 2 na WLC em standby é ativada. O mesmo ocorre com portas TenGigabit em 9800 dispositivos físicos (9800-80, 9800-40 e 9800-CL).
Monitorar a WLC em standby por meio da WLC ativa
O estado da WLC em standby também pode ser monitorado com a consulta à WLC ativa. Somente MIBs CISCO-LWAPP-HA-MIB e CISCO-PROCESS-MIB são oficialmente suportados. Quando a WLC ativa no HA é consultada, a primeira resposta representa o valor da WLC ativa, enquanto a segunda resposta representa o valor da WLC em standby.
Descrição
|
Nome do objeto
|
OID
|
Resposta esperada
|
Uso geral de CPU em % nos últimos 5 segundos
|
cpmCPUTotal5sec
|
1.3.6.1.4.1.9.9.109.1.1.1.1.3
|
SNMPv2-SMI::empresas.9.9.109.1.1.1.1.3.5 = 3 SNMPv2-SMI::empresas.9.9.109.1.1.1.1.3.6 = 7
|
Uso geral da CPU em % últimos 1 min
|
cpmCPUTotal1min
|
1.3.6.1.4.1.9.9.109.1.1.1.1.4
|
SNMPv2-SMI::empresas.9.9.109.1.1.1.1.4.5 = 8 SNMPv2-SMI::empresas.9.9.109.1.1.1.1.4.6 = 6
|
Uso geral de CPU em % nos últimos 5 minutos
|
cpmCPUTotal5min
|
1.3.6.1.4.1.9.9.109.1.1.1.1.5
|
SNMPv2-SMI::empresas.9.9.109.1.1.1.1.5.5 = 10 SNMPv2-SMI::empresas.9.9.109.1.1.1.1.5.6 = 15
|
Memória usada atualmente em bytes
|
cpmCPUMemoryUsed
|
1.3.6.1.4.1.9.9.109.1.1.1.1.12
|
SNMPv2-SMI::empresas.9.9.109.1.1.1.1.12.5 = 4318980 SNMPv2-SMI::empresas.9.9.109.1.1.1.1.12.6 = 3950332
|
Memória livre atual em bytes
|
cpmCPUMemoryFree
|
1.3.6.1.4.1.9.9.109.1.1.1.1.13
|
SNMPv2-SMI::empresas.9.9.109.1.1.1.1.12.5 = 4318739 SNMPv2-SMI::empresas.9.9.109.1.1.1.1.12.6 = 3950738
|
Menor quantidade de memória livre desde a última inicialização em bytes
|
cpmCPUMemoryLowest
|
1.3.6.1.4.1.9.9.109.1.1.1.1.15
|
SNMPv2-SMI::empresas.9.9.109.1.1.1.1.15.5 = 3763868 SNMPv2-SMI::empresas.9.9.109.1.1.1.1.15.6 = 4132588
|
Estado da WLC em standby (1=ativo, 0=inativo)
|
EventoHotStandbyPeerLHaPeer
|
1.3.6.1.4.1.9.9.843.1.3.4
|
SNMPv2-SMI::empresas.9.9.843.1.3.4.0 = 1
|