目錄

簡介

必要條件

需求

採用元件

在WLC上配置SNMP設定

物件名稱和物件ID (OID)

什麼是物件名稱和OID

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

使用OID監控WLC的狀態

透過SNMPwalk監控

透過Python 3和pysmnpLibrary進行監控

與第三方軟體整合(Grafana/PRTG Network Monitor/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。登入控制器的網頁介面。在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