簡介
本檔案介紹如何在思科無線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。登入控制器的網頁介面。在Management > SNMP > General下,確保啟用想要的協定版本。
社群選單下將顯示所有當前建立的社群。
最佳作法是移除預設的預先設定社群並建立新的社群。IP地址和網路掩碼的行為類似於訪問清單。預設情況下,兩者均設定為0.0.0.0,這意味著允許所有IP地址對此社群進行SNMP查詢。訪問模式欄位保留為只讀,因為此社群僅用於監控,不用於WLC的配置。
注意:所有早於8.7.1.135的版本都受到思科漏洞ID CSCvg61933的影響,此處的網路掩碼不能設定為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都是唯一的,全球範圍內沒有兩個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月,無線區域網控制器的簡單、使用者友好的表不存在,其中包含每個可用的對象名稱及其相應的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使用者獲取每個核心(OID = 1.3.6.1.4.1.9.9.618.1.4.1)的WLC CPU使用率。控制器管理介面位於10.48.39.164上。
透過SNMPwalk監控
SNMPwalk是一種SNMP應用程式,它使用SNMP GETNEXT請求來查詢網路實體的資訊樹。預設情況下,在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 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使用率 |
clsAllCpu使用情況 |
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 |
Gauge32: 33 |
CPU溫度(以攝氏度為單位) |
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 |
Gauge32:2 |
使用者端數目 |
clsMaxClientsCount |
1.3.6.1.4.1.9.9.618.1.8.12.0 |
Gauge32: 0 |
每個WLAN的客戶端數量 |
bsnDot11EssNumberOfMobileStation |
1.3.6.1.4.1.14179.2.1.1.1.38.0 |
計數器32: 3 計數器32: 2 |