本文档介绍如何配置简单网络管理协议(SNMP)以监控Cisco 9800无线局域网控制器(WLC)。
所有测试均在MacOS 10.14和映像版本17.5.1的9800-CL WLC上执行。本文中提到的一些OID在较早的映像版本上不存在。
本文档中的信息都是基于特定实验室环境中的设备编写的。本文档中使用的所有设备最初均采用原始(默认)配置。如果您的网络处于活动状态,请确保您了解所有命令的潜在影响。
旧版AireOS WLC依靠SNMP作为监控的主要协议。大多数相关信息(如客户端计数、加入的接入点数量、处理器和内存使用率)都可以通过SNMP查询从监控到WLC的工具获取。
9800 WLC的重点在于遥测。遥测在“推送”模式下工作,其中WLC向服务器发送相关信息而无需查询。Catalyst 9800仍提供用于传统用途的SNMP。有些信息可以独家用于遥测,而一些OID以前在AireOS上可用,现在在9800上尚不可用。
Cisco Catalyst 9800系列无线控制器支持Cisco IOS XE® Bengaluru 17.6.1的以太网服务端口(管理接口VRF/GigabitEthernet 0)。
在此版本之前,Catalyst 9800 WLC只能通过SNMP通过其无线管理接口或冗余管理接口进行监控(在版本17.5.1及更高版本的HA集群中的备用WLC的情况下)。
SNMPv2c是基于团体的SNMP版本,设备之间的所有通信都以明文形式进行。SNMPv3是最安全的版本,可提供数据包的消息完整性检查、身份验证和加密。SNMPv1已相当过时,但仍存在以提供传统软件兼容性。本文未提及。
1.登录9800 WLC的Web界面。在Administration > Management > SNMP下,确保全局启用SNMP。在社区字符串下,将显示所有当前配置的社区及其权限级别:

2.创建SNMP V3用户之前,需要定义SNMP V3组。要创建具有读+写权限的用户组,请将Read View和Write View设置为v1default。将只读组Write View字段框保留为空:

3.在SNMP v3 Users选项卡下,您可以看到所有已配置的用户,以及他们用于身份验证和加密的权限和协议。使用New按钮可以创建新用户。
有3种安全模式可用:
4.选择SHA作为身份验证协议,建议至少选择AES-128作为隐私协议。

也可通过命令行界面(CLI)配置SNMP。CLI提供其他配置参数,例如为v2社区或v3用户分配访问列表的功能。v2读+写社区、v3读+写组以及属于此组的v3用户的示例配置:
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
这是访问列表的示例,该列表仅允许设备的IP地址为:192.168.10.10。要查询名为“ReadWriteCommunity”的WLC v2社区,请执行以下操作:
ip access-list standard 50
10 permit 192.168.10.10
20 deny any
snmp-server manager
snmp-server community ReadWriteCommunity RW 50
对象ID(简称为OID)是表示特定变量或对象的唯一标识符。例如,当前处理器使用率被视为变量,可根据对象ID通过调用检索这些值。每个OID都是唯一的,不能有两个,这类似于MAC地址。
这些标识符与树层次结构一致,每个OID都可以追溯到其根目录。每个供应商都有自己的具有公共根的分支机构。打个比方,可以是一个家庭地址,其根部是国家/地区或州,包括所在城市、邮政编码、街道以及最终的家庭号码。
以点号结尾的数字表示到达树或分支中的某个点所需的每个步骤。

所有这些值都存储在管理信息库中,简称MIB存储在每台网络设备中。每个标识符都有名称和定义(可能值的范围、类型等)。
无需在SNMP监控工具上加载MIB即可使用SNMP查询设备。只要知道有效的OID,设备就会以OID所代表的变量中存储的值进行响应。但是,如果将MIB加载到查询工具中,则它提供了将对象名称转换为其ID并解释其说明的好处。
在本示例中,SNMP工具使用OID 1.3.6.1.2.1.1.1.0查询设备的SNMP代理的系统说明。

思科为9800 WLC提供MIB。它不容易读取,但MIB包含所有可用的对象名称及其说明。
所有9800型号(9800-80、9800-40、9800-L、9800-CL、EWC)使用相同的MIB,该MIB可在Cisco Feature Navigator上下载。最新的版本名称是最近日期,而不是代码版本名称较高的版本。
下载的存档文件包含多个.my文本文件,这些文件可以导入到任何第三方SNMP服务器中,也可以使用文本编辑器打开。要查找特定对象名称的OID,必须首先找到包含它的确切文件。
例如,与监控设备物理状态相关的所有对象(如CPU和内存)都位于名为CISCO-PROCESS-MIB.my的MIB中。
“cpmCPUMemoryUsed”是用于提供WLC使用的内存量(以字节为单位)的对象名称。MIB文件都使用类似的语法。有关已用内存对象的信息如下所示:
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 }
大多数要监控的第三方软件依赖于OID,而不是对象名称。可以使用Cisco SNMP Object Navigator Tool在对象名称和对象ID之间进行转换。
若要使用此工具,请在搜索栏中输入对象名称,输出中会提供OID和简短说明。此外,可以使用同一工具查找所提供OID的对象名称。

在获取必须监控的对象的OID后,可以执行第一个SNMP查询。本章中的示例展示如何获取SNMPv2社区专用和SNMPv3用户snmpadmin的WLC空闲内存(OID = 1.3.6.1.4.1.9.48.1.1.1.5),以及SHA身份验证密码:Cisco123#和AES隐私密码:Cisco123#。控制器管理接口位于:10.48.39.133 的多播地址发送一次邻居消息。
Snmpwalk是使用SNMP GETNEXT请求查询网络实体以获取信息树的SNMP应用。默认情况下,它存在于MacOS和大多数Linux发行版上。对于SNMPv2c,命令符合以下语法:
snmpwalk -v2c -c
这是另一个示例:
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
如果使用SNMPv3,则命令遵循以下语法:
snmpwalk -v3 -l authPriv -u <username> -a [MD5|SHA] -A <auth_password> -x [AES|DES] -X <priv_password> <WLC_management_interface_ip> <OID>
根据在控制器上创建SNMPv3用户的方式,选择MD5/SHA和AES/DES。这是另一个示例:
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
为Python 3.9编写代码片段,并利用pysnmp模块(pip install pysnmp)运行SNMP查询,以获取Catalyst 9800-CL WLC的内存利用率。这些示例使用前几章中创建的相同SNMPv2社区和SNMPv3用户。只需替换变量值并将代码集成到您自己的自定义脚本中即可。
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]))
输出输出为:
SNMPv2-SMI::enterprises.9.9.109.1.1.1.1.12.2 = 3783236
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]))
Cisco Prime基础设施能够轻松监控和配置多个网络设备,包括无线控制器。Prime基础设施预加载了所有OID以及与WLC的集成,包括向Prime添加WLC凭证。由于9800个WLC,Prime主要依靠遥测从WLC收集大部分详细信息,而少量信息通过SNMP获取。
另一方面,Cisco WLC还可以与多个第三方监控解决方案集成,只要已知OID。Grafana+Prometheus、PRTG Network Monitor和SolarWinds服务器等程序允许导入MIB或OID,并以用户友好的图形显示值。
此集成可能需要在SNMP服务器端进行一些调整。在本例中,PRTG监控服务器提供每核心CPU利用率OID,其中返回字符串“0%/1%、1%/1%、0%/1%、0%/1%”。PRTG需要整数值并引发错误。

Cisco Unified Communications Manager(CUCM)具有无线终端跟踪功能,允许它根据客户端所连接的AP大致跟踪客户端位置。要使用此功能,CUCM必须通过SNMP查询从WLC提取信息。
该表包括一些最常用的对象名称及其OID,考虑的是MIB以非用户友好的语法显示数据:
| 描述 |
对象名称 |
OID |
预期响应 |
| 最后5秒的总CPU使用率(%)(相当于“show process cpu platform”) |
cpmCPUTotal5sec |
1.3.6.1.4.1.9.9.109.1.1.1.1.3 |
整数:5 |
| 过去1分钟内CPU总使用率(%) |
cpmCPUTotal1min |
1.3.6.1.4.1.9.9.109.1.1.1.1.4 |
整数:5 |
| 过去5分钟内CPU总使用率(%) |
cpmCPUTotal5min |
1.3.6.1.4.1.9.9.109.1.1.1.1.5 |
整数:5 |
| CPU使用率(按每个内核的最后5分钟百分比) |
cpmCore5min |
.1.3.6.1.4.1.9.9.109.1.1.2.1.5.5(.0到.X,具体取决于内核数量) |
整数:5 |
| 当前使用的内存(字节) |
cpmCPUMemoryUsed |
1.3.6.1.4.1.9.9.109.1.1.1.1.12 |
整数:3783236 |
| 当前可用内存(字节) |
cpmCPUMemoryFree |
1.3.6.1.4.1.9.9.109.1.1.1.1.13 |
整数:4263578 |
| 自上次启动以来可用内存的最小量(以字节为单位) |
cpmCPUMemoryLowest |
1.3.6.1.4.1.9.9.109.1.1.1.1.15 |
整数:4251212 |
| 上次重新加载原因 |
为什么重新加载 |
1.3.6.1.4.1.9.2.1.2 |
字符串:"重新加载" |
| 所有加入的AP的软件映像 |
bsnAPSoftwareVersion |
1.3.6.1.4.1.14179.2.2.1.1.8 |
字符串:"17.5.1.12 " |
| 所有加入的AP的型号 |
bsnAPModel |
1.3.6.1.4.1.14179.2.2.1.1.16 |
字符串:"AIR-AP1840I-E-K9" |
| 客户端数量 |
cLApActiveClientCount |
.1.3.6.1.4.1.9.9.513.1.1.1.1.72 |
整数 |
| 加入的AP数量 |
cLApGlobalAPConnectCount |
1.3.6.1.4.1.9.9.513.1.3.35 |
Gage32:1 |
| 电源设备状态 |
ciscoEnvMonSupplyStatusTable |
.1.3.6.1.4.1.9.9.13.1.5(通过CSCwb添加73163 |
表 |
| 风扇状态 |
ciscoEnvMonFanStatusTable |
.1.3.6.1.4.1.9.9.13.1.4(通过CSCwb添加73163 |
表 |
目前,有一些增强请求,用于支持Cisco Bug ID下的OID客户端总数和加入的接入点数量:CSCvu26309 - 9800上不存在客户端计数的SNMP OID。
本文不支持电源单元(PSU)的状态和风扇状态。已在以下位置打开增强请求:
思科漏洞ID:CSCwa23598 - 9800 WLC增强功能/支持PSU和风扇状态SNMP OID(1.3.6.1.4.1.9.9.13)。
可以从版本17.5.1监控高可用性集群中的备用WLC。可以直接通过RMI或查询活动WLC监控备用WLC。
只有在RMI + RP HA类型中运行的WLC才能直接监控备用WLC。这是通过备用WLC的备用冗余管理接口(RMI)IP地址完成的。
在此方案中,仅支持IF-MIB中的OID,因此可以监控备用WLC上所有接口的状态。9800-CL WLC的输出示例:
| 描述 |
对象名称 |
OID |
预期响应 |
| 接口名称 |
ifDescr |
1.3.6.1.2.1.2.2.1.2 |
SNMPv2-SMI::mib-2.2.2.1.2.1 = GigabitEthernet1 |
| 接口运行状态(1=up, 2=down) |
ifOperStatus |
1.3.6.1.2.1.2.2.1.8 |
SNMPv2-SMI::mib-2.2.2.1.8.1 = 2 |
还可以通过查询活动WLC来监控备用WLC状态。仅CISCO-LWAPP-HA-MIB和CISCO-PROCESS-MIB MIB受官方支持。当查询HA中的活动WLC时,第一个响应表示活动WLC的值,而第二个响应表示备用WLC的值。
| 描述 |
对象名称 |
OID |
预期响应 |
| 前5秒的总CPU使用率(%) |
cpmCPUTotal5sec |
1.3.6.1.4.1.9.9.109.1.1.1.1.3 |
SNMPv2-SMI::enterprises.9.9.109.1.1.1.1.3.5 = 3 |
| 过去1分钟内CPU总使用率(%) |
cpmCPUTotal1min |
1.3.6.1.4.1.9.9.109.1.1.1.1.4 |
SNMPv2-SMI::enterprises.9.9.109.1.1.1.1.4.5 = 8 |
| 过去5分钟内CPU总使用率(%) |
cpmCPUTotal5min |
1.3.6.1.4.1.9.9.109.1.1.1.1.5 |
SNMPv2-SMI::enterprises.9.9.109.1.1.1.1.5.5 = 10 |
| 当前使用的内存(字节) |
cpmCPUMemoryUsed |
1.3.6.1.4.1.9.9.109.1.1.1.1.12 |
SNMPv2-SMI::enterprises.9.9.109.1.1.1.12.5 = 4318980 |
| 当前可用内存(字节) |
cpmCPUMemoryFree |
1.3.6.1.4.1.9.9.109.1.1.1.1.13 |
SNMPv2-SMI::enterprises.9.9.109.1.1.1.12.5 = 4318739 |
| 自上次启动以来可用内存的最小量(以字节为单位) |
cpmCPUMemoryLowest |
1.3.6.1.4.1.9.9.109.1.1.1.1.15 |
SNMPv2-SMI::enterprises.9.9.109.1.1.1.15.5 = 3763868 |
| 备用WLC的状态(1=up, 0=down) |
cLHaPeerHotStandbyEvent |
1.3.6.1.4.1.9.9.843.1.3.4 |
SNMPv2-SMI::enterprises.9.9.843.1.3.4.0 = 1 |
| 版本 | 发布日期 | 备注 |
|---|---|---|
8.0 |
27-Oct-2026
|
更新的拼写、语法、间距、插入的水平线分隔各部分的可读性、固定CCW警报和替换文本。 |
7.0 |
01-Jul-2025
|
添加风扇、电源和客户端计数OID |
6.0 |
31-Mar-2025
|
固定MIB URL |
5.0 |
15-Nov-2023
|
每个CPU核心OID已添加 |
4.0 |
01-Apr-2022
|
提及的OID |
2.0 |
01-Oct-2021
|
首次公开发布 |
1.0 |
12-Oct-2021
|
初始版本 |