简介
本文档介绍如何在思科无线局域网控制器(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通过具有读写权限的社区“private”和具有只读权限的社区“public”启用。建议删除这些社区并使用其他名称创建新社区。
本文只使用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。将控制器升级到最新推荐版本(高于8.7.1.135),或在CLI中使用此命令创建新社区 config snmp community ipaddr
.

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

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

所有这些值都存储在每台网络设备的管理信息库(MIB)中。每个标识符都有一个名称和定义(可能的值、类型等范围)。
您无需在SNMP工具上加载MIB即可使用SNMP和查询设备,只要知道有效的OID,设备就会使用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,首先需要找到包含它的确切文件。
例如,与监控设备的物理状态(如温度和风扇速度)相关的所有对象都位于称为 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 object navigator工具在对象名称和对象ID之间进行转换。 在搜索栏中输入对象名称。输出提供了OID和简短说明。 此外,同一工具还可用于查找OID的相应对象名称。

使用OID监控WLC的状态
获取需要监控的对象的OID后,可以执行第一个SNMP查询。这些示例展示如何为SNMPv2团体获取每个核心的WLC CPU使用率(OID = 1.3.6.1.4.1.9.9.618.1.4.1) snmp_test
和SNMPv3用户 admin
使用SHA身份验证密码 Cisco123Cisco123
和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和 pysnmp
库
这些代码片段用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利用率OID 0%/1%, 1%/1%, 0%/1%, 0%/1%
.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 |