目錄

簡介

必要條件

需求

採用元件

設定WLC上的SNMP設定

對象名稱和對象ID(OID)

什麼是對象名稱和OID

MIB和Cisco WLC上所有對象名稱和ID的清單

使用OID監控WLC的狀態

通過SNMPwalk監控

通過Python 3和pysmnpLibrary進行監控

與第三方軟體整合（Grafana/PRTG網路監視器/SolarWinds）

最常見受監控OID的表

簡介

本檔案介紹如何在思科無線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_testadmin 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