简介
本文档介绍如何在思科无线局域网控制器(WLC)上配置和监控SNMP。
先决条件
要求
Cisco建议您在操作系统上使用默认简单网络管理协议(SNMP)工具或安装知识。
使用的组件
本文档不限于特定的软件和硬件版本。所有测试都是在运行映像版本8.9和MacOS 10.14的3504 WLC上执行的。本文中的OID在较早的AireOS版本和其他基于AireOS的无线控制器(8540/5508/5520/2504)上也是有效的。
本文档中的信息都是基于特定实验室环境中的设备编写的。本文档中使用的所有设备最初均采用原始(默认)配置。如果您的网络处于活动状态,请确保您了解所有命令的潜在影响。
在WLC上配置SNMP设置
SNMPv2c是基于团体的SNMP版本,设备之间的所有通信都以明文形式进行。SNMPv3是最安全的版本,它提供数据包的消息完整性检查、身份验证和加密。SNMPv1非常过时,但仍能提供传统软件兼容性。
注意:默认情况下,SNMPv2c通过具有读写权限的社区专用以及具有只读权限的社区公共启用。建议删除这些社区并使用其他名称创建新社区。
本文只使用SNMPv2c和SNMPv3。登录到控制器的Web界面。在Management > SNMP > General
“确保”下,启用所需的协议版本。

社区菜单下会显示当前创建的所有社区。

最佳实践是删除默认预配置社区并创建新社区。IP地址和网络掩码的行为类似于访问列表。默认情况下,两者均设置为0.0.0.0,这意味着允许所有IP地址对此社区进行SNMP查询。访问模式字段保留为只读,因为此社区仅用于监控,不用于WLC的配置。
注意:所有早于8.7.1.135的版本都受Cisco bug ID CSCvg61933的影响,在该示例中,网络掩码不能设置为255.255.255.255.255。请将控制器升级到最新推荐的8.7.1.135或更高版本,或者在CLI中使用此命令创建新社区config snmp community ipaddr
。

在SNMP V3 Users(SNMP V3用户)菜单下,您可以看到所有已配置的用户、其权限以及用于身份验证和加密的协议。使用“新建”按钮可以创建新用户。建议选择HMAC-SHA作为身份验证协议,选择CFB-AES-128作为隐私协议。使用身份验证和隐私密码设置为,创建名为admin的用户Cisco123Cisco123
。

对象名称和对象ID(OID)
什么是对象名称和OID
OID是表示特定变量或对象的唯一标识符。例如,当前CPU使用率被视为一个变量,在调用其对象ID时可以检索其值。每个OID都是唯一的,全球没有两个OID必须相同,非常类似于MAC地址。这些标识符位于树状层次结构中,每个OID都可以追溯回其根。每个供应商在公用根之后都有自己的分支。
打个比方,可以是一个家庭地址,其根是国家/地区或州,然后是城市的邮政编码、街道以及最终的家庭号码。
后跟圆点的数字表示到达树或分支中的某个点所需的每个步骤。

所有这些值都存储在每台网络设备的管理信息库(MIB)中。每个标识符都有一个名称和定义(可能的值、类型等范围)。
只要知道有效的OID,您就无需在SNMP工具上加载MIB即可使用SNMP和查询设备。设备使用存储在OID表示的变量中的值进行响应。例如,在显示的图像中,SNMP管理器使用OID 1.3.6.1.2.1.1.1.0查询设备的SNMP代理的系统说明。

如果将MIB加载到查询工具中,您可以使用它将OID编号转换为名称并发现其定义。
MIB和Cisco WLC上所有对象名称和ID的列表
截至2019年5月,不存在一个简单、用户友好的表,其中包含无线局域网控制器的每个可用对象名称及其各自的OID。作为替代方案,思科提供管理信息库(MIB),该信息库不容易读取,但包含所有可用的对象名称及其说明。Cisco 3504 WLC MIB可在此处下载。
下载的存档文件包含多个.my文本文件,可以导入到任何第三方SNMP监控服务器,也可以使用常规文本编辑器打开。要查找特定对象名称的OID,首先需要找到包含它的确切文件。
例如,与监控设备的物理状态(如温度和风扇速度)相关的所有对象都位于称为的MIB中CISCO-ENVMON-MIB.my
。此处ciscoEnvMonFanState
是用来提供WLC风扇状态的对象名称。MIB文件的语法如下所示。有关风扇状态对象的信息如下所示:
ciscoEnvMonFanState OBJECT-TYPE
SYNTAX CiscoEnvMonState
MAX-ACCESS read-only
STATUS current
DESCRIPTION
"The current state of the fan being instrumented."
::= { ciscoEnvMonFanStatusEntry 3 }
大多数第三方监控软件依赖于OID,而不是对象名称。可以使用Cisco SNMP对象导航器工具完成对象名称和对象ID之间的转换。在搜索栏中输入对象名称。输出提供了OID和简短说明。此外,同一工具还可用于查找OID的相应对象名称。

使用OID监控WLC的状态
获取需要监控的对象的OID后,可以执行第一个SNMP查询。snmp_test
admin
Cisco123Cisco123
这些示例展示如何为SNMPv2社区和SNMPv3用户获取WLC CPU使用率(每个核心(OID = 1.3.6.1.4.1.9.9.618.1.4.1),且SHA身份验证密码和AES隐私密码设置为Cisco123Cisco123
。控制器管理接口位于10.48.39.164。
通过SNMPwalk监控
SNMPwalk是使用SNMP GETNEXT请求向网络实体查询信息树的SNMP应用。默认情况下,它存在于MacOS和大多数Linux发行版上。对于SNMPv2c,该命令具有以下语法:
snmpwalk -v2c -c <community_name> <WLC_management_interface_ip> <OID>
例如:
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%"
如果使用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-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%"
通过Python 3和pysmnp库进行监控
这些代码段以Python 3.7编写,并利用模pysnmp
块(pip install pysnmp
)对Cisco 3504 WLC的CPU利用率进行SNMP查询。这些示例使用在前面的章节之一中创建的相同SNMPv2社区和SNMPv3用户。只需替换变量值并将代码与自己的自定义脚本集成即可。
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]))
输出:
SNMPv2-SMI::enterprises.14179.2.3.1.13.0 = 73
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]))
与第三方软件集成(Grafana/PRTG网络监控器/SolarWinds)
Cisco Prime基础设施能够轻松监控和配置多个网络设备,包括无线控制器。Prime基础设施预装了所有OID,与WLC的集成只是将WLC凭证添加到Prime。同步后,可以同时为多个无线控制器设置警报和推送配置模板。
另一方面,Cisco WLC还可以与多个第三方监控解决方案集成,只要已知OID。Grafana、PRTG Network Monitor和SolarWinds服务器等程序允许导入MIB或OID,并以用户友好的图形显示值。
监控服务器可能需要调整以适应此集成。在图中所示的示例中,为PRTG监控服务器提供返回字符串的每核心CPU利用率0%/1%, 1%/1%, 0%/1%, 0%/1%
OID。PRTG需要整数值并引发错误。

最常见受监控OID的表
如果您认为MIB以非用户友好的语法显示数据,则此表包括思科客户使用的一些最常用的对象名称及其OID。
描述
|
对象名称
|
OID
|
预期响应
|
整体CPU使用率(%)
|
agentCurrentCPUutilization
|
1.3.6.1.4.1.14179.1.1.5.1.0
|
整数:0
|
每个核心CPU使用率
|
clsAllCpuUsage
|
1.3.6.1.4.1.9.9.618.1.4.1.0
|
字符串:0%/1%、0%/1%、0%/1%、0%/1%
|
RAM使用率(%)
|
clsSysCurrentMemoryUsage
|
1.3.6.1.4.1.9.9.618.1.8.6.0
|
Gage32:33
|
CPU温度(°C)
|
bsnSensorTemperate
|
1.3.6.1.4.1.14179.2.3.1.13.0
|
整数:76
|
加入的无线接入点数量
|
clsSysApConnectCount
|
1.3.6.1.4.1.9.9.618.1.8.4.0
|
Gage32:2
|
客户端数量
|
clsMaxClientsCount
|
1.3.6.1.4.1.9.9.618.1.8.12.0
|
Gage32:0
|
每个WLAN的客户端数量
|
bsnDot11EssNumberOfMobileStation
|
1.3.6.1.4.1.14179.2.1.1.1.38.0
|
计数器32:3
计数器32:2
|