简介
本文档介绍如何配置和监控思科无线局域网控制器(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 |