簡介
本檔案介紹如何在思科無線LAN控制器(WLC)上設定和監控SNMP。
必要條件
需求
思科建議您在作業系統上使用預設簡單網路管理協定(SNMP)工具或知識來安裝該工具。
採用元件
本檔案不限於特定軟體和硬體版本。所有測試都是在執行映像版本8.9和MacOS 10.14的3504 WLC上執行。本檔案中的OID在早期的AireOS版本和其他基於AireOS的無線控制器(8540/5508/5520/2504)上也是有效的。
本文中的資訊是根據特定實驗室環境內的裝置所建立。文中使用到的所有裝置皆從已清除(預設)的組態來啟動。如果您的網路運作中,請確保您瞭解任何指令可能造成的影響。
設定WLC上的SNMP設定
SNMPv2c是基於社群的SNMP版本,並且裝置之間的所有通訊都是明文的。SNMPv3是最安全的版本,它提供對資料包的消息完整性檢查、身份驗證和加密。SNMPv1非常過時,但仍能提供舊版軟體相容性。
附註:預設情況下,SNMPv2c通過具有讀寫許可權的community private以及具有只讀許可權的community public啟用。建議刪除這些社群並使用其他名稱建立新社群。
在本文中,只使用SNMPv2c和SNMPv3。登入控制器的Web介面。在Management > SNMP > General
下,確保啟用所需的協定版本。

社群選單下會顯示當前建立的所有社群。

最佳作法是移除預設的社群並建立一個新社群。IP地址和網路掩碼的行為類似於訪問清單。預設情況下,兩者都設定為0.0.0.0,這意味著允許所有IP地址對此社群進行SNMP查詢。存取模式欄位保留為唯讀,因為此群體僅用於監控,而不用於WLC的組態。
附註:所有低於8.7.1.135的版本都受Cisco錯誤ID CSCvg61933影響,其中子網掩碼無法設定為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月,不存在一個簡單、使用者友好的表,其中包含無線LAN控制器的每個可用對象名稱及其各自的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 Object Navigator Tool完成對象名稱和對象ID之間的轉換。在搜尋欄中輸入對象名稱。輸出提供OID和簡短說明。此外,同一工具還可用於查詢OID的相應對象名稱。

使用OID監控WLC的狀態
獲取需要監控的對象的OID後,可以執行第一個SNMP查詢。snmp_test
admin
Cisco123Cisco123
以下範例示範如何在SHA身份驗證密碼和AES隱私密碼設定為Cisco123Cisco123
時,為SNMPv2社群和SNMPv3使用者獲取每個核心的WLC CPU使用率(OID = 1.3.6.1.4.1.9.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網路監視器/SolarWinds)
Cisco Prime Infrastructure能夠輕鬆監控和設定多個網路裝置,包括無線控制器。Prime Infrastructure已預先載入所有OID,且與WLC的整合僅包含將WLC憑證新增到Prime中。同步後,可以同時為多個無線控制器設定警報和推送配置模板。
另一方面,只要OID是已知的,Cisco WLC還可以與多個第三方監控解決方案整合。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%
|
記憶體使用率(%)
|
clsSysCurrentMemoryUsage
|
1.3.6.1.4.1.9.9.618.1.8.6.0
|
Gage32:33
|
CPU溫度(°C)
|
bsnSensor溫度
|
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
|
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
|