目录

简介

先决条件

要求

使用的组件

配置WLC上的SNMP设置

对象名称和对象ID (OID)

什么是对象名称和OID

MIB和Cisco WLC上所有对象名称和ID的列表

使用OID监控WLC的状态

通过SNMPwalk监控

通过Python 3和pysmnpLibrary进行监控

与第三方软件集成(Grafana/PRTG Network Monitor/SolarWinds)

最常监控的OID的表

简介

本文档介绍如何配置和监控思科无线局域网控制器(WLC)上的SNMP。

先决条件

要求

思科建议您在操作系统上使用默认简单网络管理协议(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下，确保启用所需版本的协议。

在communities（社区）菜单下，会显示当前创建的所有社区。

最佳实践是删除默认的预配置社区并创建新社区。IP地址和网络掩码的行为类似于访问列表。默认情况下，两者均设置为0.0.0.0，这意味着允许所有IP地址对此社区进行SNMP查询。访问模式字段保留为只读，因为此社区仅用于监控，不用于WLC的配置。

注意：所有早于8.7.1.135的版本都会受Cisco Bug ID CSCvg61933的影响，其中Netmask不能设置为255.255.255.255。将控制器升级到最新推荐的8.7.1.135版本或在CLI中使用此命令创建新社区config snmp community ipaddr <ip_address> <netmask> <community_name>。

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

对象名称和对象ID (OID)

什么是对象名称和OID

OID是表示特定变量或对象的唯一标识符。例如，当前CPU使用率被视为一个变量，在调用其对象ID时可以检索其值。每个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的MIB中。此处， 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 Tool完成对象名称和对象ID之间的转换。 在搜索栏中输入对象名称。输出提供OID和简短说明。 此外，同一工具还可用于查找OID的相应对象名称。

使用OID监控WLC的状态

在获取需要监控的对象的OID之后，可以执行第一个SNMP查询。以下示例展示如何在SHA身份验证密码Cisco123Cisco123   和AES隐私密码设置为 Cisco123Cisco123 的情况下，获取SNMPv2社区snmp_test    admin   和SNMPv3用户的每个核心WLC CPU使用率(OID = 1.3.6.1.4.1.9.618.1.4.1)。控制器管理接口位于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 Network Monitor/SolarWinds)

Cisco Prime基础设施能够轻松监控和配置包括无线控制器在内的多个网络设备。Prime基础设施预加载了所有OID，与WLC的集成只是将WLC凭证添加到Prime。同步完成后，可以同时为多个无线控制器设置警报和推送配置模板。

另一方面，只要OID已知，Cisco WLC还可以与多个第三方监控解决方案集成。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

加入的AP数量

clsSysApConnectCount

1.3.6.1.4.1.9.9.618.1.8.4.0

Gauge32： 2

客户端数量

clsMaxClientsCount

1.3.6.1.4.1.9.9.618.1.8.12.0

Gauge32： 0

每个WLAN的客户端数量

bsnDot11EssNumberOfMobileStations

1.3.6.1.4.1.14179.2.1.1.1.38.0

计数器32： 3

计数器32： 2