簡介
本檔案介紹如何在思科無線LAN控制器(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。登入控制器的網頁介面。在 Management > SNMP > General
確保啟用所需版本的協定。
社群選單下會顯示當前建立的所有社群。
最佳作法是移除預設的社群並建立一個新社群。IP地址和網路掩碼的行為類似於訪問清單。預設情況下,兩者都設定為0.0.0.0,這意味著允許所有IP地址對此社群進行SNMP查詢。存取模式欄位保留為「唯讀」,因為此群體僅用於監控,而不用於WLC的組態。
註:所有低於8.7.1.135的版本都受思科錯誤ID CSCvg6193的影響,該錯誤的子網掩碼不能設定為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月,不存在一個簡單、使用者友好的表,其中包含無線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對象導航工具在對象名稱和對象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 Infrastructure能夠輕鬆監控和設定多個網路裝置,包括無線控制器。Prime Infrastructure已預先載入所有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% |
記憶體使用率(%) |
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 |