目錄

簡介

必要條件

需求

採用元件

SNMP與遙測

在WLC上設定SNMP

通過Web介面

通過命令列

對象名稱和對象ID(OID)

什麼是對象名稱和OID?

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

使用OID監控WLC的狀態

通過Snmpwalk監控

通過Python3和Pysnmp庫進行監控

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

與CUCM整合

最常見受監控OID的表

在HA中監控待命WLC

直接監控待命WLC

透過作用中WLC監控待命WLC

簡介

本文說明如何設定簡易網路管理通訊協定(SNMP)以監控Cisco 9800無線LAN控制器(WLC)。

必要條件

需求

- 9800 WLC和SNMP通訊協定的基礎知識

- SNMP伺服器/工具

採用元件

所有測試均在MacOS 10.14和映像版本為17.5.1的9800-CL WLC上執行。本文中提到的一些OID在舊映像版本中不存在。

本文中的資訊是根據特定實驗室環境內的裝置所建立。文中使用到的所有裝置皆從已清除（預設）的組態來啟動。如果您的網路運作中，請確保您瞭解任何指令可能造成的影響。

SNMP與遙測

舊版AireOS WLC依靠SNMP作為監控的主要通訊協定。大多數相關資訊（如客戶端計數、加入的接入點數量、處理器和記憶體使用率）都可以通過監控工具中的SNMP查詢獲取到WLC。

在9800 WLC中，重點在於遙測。遙測在「推送」模式下工作，在該模式下WLC無需查詢即可向伺服器傳送相關資訊。Catalyst 9800仍提供SNMP供舊版使用。某些資訊可以獨佔用於遙測，而以前在AireOS上可用的一些OID在9800上尚不可用。

在WLC上設定SNMP

Cisco Catalyst 9800系列無線控制器支援Cisco IOS XE Bengaluru 17.6.1乙太網服務埠（管理介面VRF/GigabitEthernet 0）。

在此版本之前，只能使用SNMP透過其無線管理介面或備援管理介面來監控Catalyst 9800 WLC（如果版本17.5.1及更高版本上的HA叢集中有待命WLC）。

通過Web介面

SNMPv2c是基於社群的SNMP版本，並且裝置之間的所有通訊都是明文的。SNMPv3是最安全的版本，它提供對資料包的消息完整性檢查、身份驗證和加密。SNMPv1已經非常過時，但仍能提供傳統軟體的相容性。這篇文章沒有提到這一點。

重要信息：預設情況下，SNMPv2c啟用，社群為「private」，具有讀+寫許可權，社群為「public」，具有只讀許可權。建議刪除這些社群並使用其他名稱建立新社群。

登入9800 WLC的Web介面。在Administration > Management > SNMP下，確保全域性啟用SNMP。在Community Strings下，將顯示所有當前配置的社群及其許可權級別：

建立SNMP V3使用者之前，需要定義SNMP V3組。要建立具有讀+寫許可權的使用者組，請將Read View和Write View設定為v1default。只讀組需要將寫檢視為空

在SNMP V3 Users頁籤下，您可以看到所有已配置的使用者、其許可權以及用於身份驗證和加密的協定。 按鈕New允許建立新使用者。

有3種安全模式可用：

1. AuthPriv =郵件經過身份驗證和加密

2. AuthNoPriv =郵件經過身份驗證，但未加密

3. NoAuthNoPriv =未對郵件應用安全性

選擇SHA作為身份驗證協定，建議至少使用AES-128作為隱私協定。

通過命令列

也可透過指令行介面(CLI)設定SNMP。CLI提供了其他配置引數，如為v2社群或v3使用者分配訪問清單的功能。

v2讀+寫社群、v3讀+寫組以及屬於此組的v3使用者的配置示例：

snmp-server manager

snmp-server community

RW

snmp-server community

RO

snmp-server group

v3 auth write v1default snmp-server user

v3 auth sha

priv aes 128

access

僅允許IP地址192.168.10.10上的裝置查詢名為「ReadWriteCommunity」的WLC v2社群的訪問列表示例：

ip access-list standard 50

10 permit 192.168.10.10

20 deny   any

snmp-server manager

snmp-server community ReadWriteCommunity RW 50

附註： 撰寫本檔案時，系統僅支援標準型ACL。可以分配擴展ACL，但它們無法正常工作。

對象名稱和對象ID(OID)

什麼是對象名稱和OID?

對象ID（簡稱為OID）是表示特定變數或對象的唯一識別符號。例如，當前處理器使用情況被視為變數，這些值可通過呼叫根據其對象ID進行檢索。每個OID都是唯一的，全世界沒有兩個OID可以相同，非常類似於MAC地址。

這些識別符號遵循樹層次結構，每個OID都可以追溯到其根。每個供應商都有自己的分支機構，它們具有共同的根。

一個類比可能是家庭地址，其根基是國家或州，後跟城市郵遞區號、街道以及最後的家庭號碼。

後跟一個點的數字表示到達樹或樹枝中某個點所需的每一步驟。

所有這些值都儲存在每台網路裝置的管理資訊庫（簡稱為MIB）中。每個識別符號都有名稱和定義（可能值的範圍，型別……）。

要使用SNMP和查詢裝置，不需要在SNMP監控工具上載入MIB。

只要已知有效的OID，裝置就會使用儲存在OID所代表的變數中的值進行響應。但是，如果將MIB載入到查詢工具中，則它提供了將對象名稱轉換為其ID的優勢，並允許瞭解其說明。

在本示例中，SNMP工具使用OID 1.3.6.1.2.1.1.1.0查詢裝置的SNMP代理的系統說明。

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

思科為9800 WLC提供管理資訊庫(MIB)。它不容易讀取，但MIB包含所有可用的對象名稱及其說明。

所有9800型號(9800-80、9800-40、9800-L、9800-CL、EWC)使用相同的MIB，該MIB可在此處下載：https://software.cisco.com/download/home/286322605/type/280775088/release/。

最新版本是擁有最新日期的，而不是代碼版本名稱較高的。

已下載的存檔檔案包含多個.my文本檔案，可以匯入到任何第三方SNMP伺服器，也可以使用文本編輯器開啟。為了查詢特定對象名稱的OID，首先需要找到包含該名稱的準確檔案。

例如，與監控裝置物理狀態相關的所有對象（例如CPU和記憶體）都位於名為CISCO-PROCESS-MIB.my的MIB中。

這裡，「cpmCPUMemoryUsed」是物件名稱，用於提供WLC使用的記憶體數量（以位元組為單位）。MIB檔案都遵循相似的語法。有關已用記憶體對象的資訊如下所示：

cpmCPUMemoryUsed OBJECT-TYPE

SYNTAX          Gauge32

UNITS           "kilo-bytes"

MAX-ACCESS      read-only

STATUS          current

DESCRIPTION

"The overall CPU wide system memory which is currently

under use."

::= { cpmCPUTotalEntry 12 }

大多數要監控的第三方軟體依賴於OID，而不是對象名稱。可以使用Cisco SNMP object navigator工具在對象名稱和對象ID之間進行轉換。

在搜尋欄中輸入對象名稱。輸出提供OID和簡短說明。 此外，可以使用相同的工具來查詢所提供的OID的對象名稱。

使用OID監控WLC的狀態

在獲取需要監控的對象的OID之後，可以執行第一個SNMP查詢。

本章中的範例示範如何為SNMPv2社群私人和SNMPv3使用者snmpadmin取得WLC自由記憶體(OID = 1.3.6.1.4.1.9.9.48.1.1.1.5)，並將SHA身份驗證密碼Cisco123#和AES隱私密碼設定為Cisco123#。控制器管理介面位於10.48.39.133上。

通過Snmpwalk監控

Snmpwalk是使用SNMP GETNEXT請求查詢網路實體以獲取資訊樹的SNMP應用程式。預設情況下，它存在於MacOS和大多數Linux發行版中。對於SNMPv2c，命令遵循語法：

snmpwalk -v2c -c

範例：

VAPEROVI:~ vaperovi$ snmpwalk -v2c -c private 10.48.39.133 1.3.6.1.4.1.9.9.109.1.1.1.1.12

SNMPv2-SMI::enterprises.9.9.109.1.1.1.1.12.2 = 3783236 <-------- Free Memory in Bytes

如果使用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:~ vaperovi$ snmpwalk -v3  -l authPriv -u snmpadmin -a SHA -A Cisco123# -x AES -X Cisco123# 10.48.39.133 1.3.6.1.4.1.9.9.109.1.1.1.1.12

SNMPv2-SMI::enterprises.9.9.109.1.1.1.1.12.2 = 3783236 <-------- Free Memory in Bytes

#snmpwalk output still shows v2 even though v3 is used

通過Python3和Pysnmp庫進行監控

為Python 3.9編寫代碼片段，並利用pysnmp模組（pip安裝pysnmp）對Catalyst 9800-CL WLC的記憶體利用率進行SNMP查詢。這些示例使用在前面章節之一中建立的同一SNMPv2社群和SNMPv3使用者。只需替換變數值並將代碼整合到您自己的自定義指令碼中即可。

SNMPv2示例：

from pysnmp.hlapi import *

communityName = 'private'

ipAddress = '10.48.39.133'

OID = '1.3.6.1.4.1.9.9.109.1.1.1.1.12'

for (errorIndication,

errorStatus,

errorIndex,

varBinds) in nextCmd(SnmpEngine(),

CommunityData(communityName),

UdpTransportTarget((ipAddress, 161)),

ContextData(),

ObjectType(ObjectIdentity(OID)),

lexicographicMode=False):

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.9.9.109.1.1.1.1.12.2 = 3783236

SNMPv3示例：

from pysnmp.hlapi import *

username = 'snmpadmin'

ipAddress = '10.48.39.133'

OID = '1.3.6.1.4.1.9.9.109.1.1.1.1.12'

authKey = 'Cisco123#'

privKey = 'Cisco123#'

for (errorIndication,

errorStatus,

errorIndex,

varBinds) in nextCmd(SnmpEngine(),

UsmUserData(username, authKey, privKey,

authProtocol=usmHMACSHAAuthProtocol,

privProtocol=usmAesCfb128Protocol),

UdpTransportTarget((ipAddress, 161)),

ContextData(),

ObjectType(ObjectIdentity(OID)),

lexicographicMode=False):

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+Prometheus/PRTG網路監控器/SolarWinds）整合

Cisco Prime Infrastructure能夠輕鬆監控和設定多個網路裝置，包括無線控制器。

Prime Infrastructure已預先載入所有OID，且與WLC的整合僅包含將WLC憑證新增到Prime中。由於9800個WLC，Prime主要依靠遙測技術收集WLC的大部分詳細資訊，而一小部分資訊是通過SNMP獲得的。

另一方面，Cisco WLC還可以與多個第三方監控解決方案整合，只要已知的OID。

Grafana+Prometheus、PRTG Network monitor和SolarWinds伺服器等程式允許匯入MIB或OID並在使用者友好的圖形中顯示值。

此整合可能需要在SNMP伺服器端進行一些調整。在此示例中，PRTG監控伺服器提供每核心CPU使用率OID，OID返回字串「0%/1%、1%/1%、0%/1%、0%/1%」。PRTG需要整數值並引發錯誤。

與CUCM整合

Cisco Unified Communications Manager(CUCM)具有無線終端跟蹤功能，允許它根據客戶端所連線的AP大致跟蹤客戶端位置。若要使用此功能，CUCM必須通過SNMP查詢從WLC獲取資訊。

重要信息：許多CUCM版本受Cisco錯誤ID CSCvv07486的影響 — 由於SNMP請求過大，無法在WLC中同步接入點。當CUCM運行受影響的版本並且WLC具有10個以上接入點時，會觸發此問題。由於CUCM在單個批次請求中查詢大量OID的方式不正確，WLC拒絕應答或響應過大而過。「過大」響應並非總是立即發出，而且可能會被延遲。WLC上的SNMP調試顯示「SNMP：通過UDP從VlanXXSrParseV1SnmpMessage上的x.x.x.x接收的資料包： packlet過大SrDoSnmp: ASN分析錯誤」。

最常見受監控OID的表

該表包括一些最常用的對象名稱及其OID，考慮了MIB以非使用者友好語法顯示資料：

附註： 命令「show snmp mib 「|in <Object name>」可用於驗證9800 WLC上是否有可用的特定對象名稱。

說明

對象名稱

OID

預期響應

總CPU使用率（以過去5秒的百分比為單位）

cpmCPUTotal5sec

1.3.6.1.4.1.9.9.109.1.1.1.1.3

整數： 5

過去1分鐘內CPU總使用率(%)

cpmCPUTotal1min

1.3.6.1.4.1.9.9.109.1.1.1.1.4

整數： 5

過去5分鐘內CPU總使用率(%)

cpmCPUTotal5min

1.3.6.1.4.1.9.9.109.1.1.1.1.5

整數： 5

當前使用的記憶體（以位元組為單位）

cpmCPUMemoryUsed

1.3.6.1.4.1.9.9.109.1.1.1.1.12

整數： 3783236

當前可用記憶體（以位元組為單位）

cpmCPUMemoryFree

1.3.6.1.4.1.9.9.109.1.1.1.1.13

整數： 4263578

自上次啟動以來可用記憶體的最小量（以位元組為單位）

cpmCPUMemoryLowest

1.3.6.1.4.1.9.9.109.1.1.1.1.15

整數： 4251212

上次重新載入原因

為什麼重新載入

1.3.6.1.4.1.9.2.1.2

字串：「reload」

所有加入的AP的軟體映像

bsnAPSsoftwareVersion

1.3.6.1.4.1.14179.2.2.1.1.8

字串：「17.5.1.12」

所有加入的AP的型號

bsnAPModel

1.3.6.1.4.1.14179.2.2.1.1.16

字串：「AIR-AP1840I-E-K9」

客戶端數量

X

X

X

加入的AP數量

X

X

X

電源裝置狀態

X

X

X

風扇狀態

X

X

X

目前存在支援客戶端總數和加入的接入點數中的OID的增強請求：

Cisco錯誤ID CSCvu26309 - 9800上不存在客戶端計數的SNMP OID

Cisco錯誤ID CSCvv44330 - 9800上不存在AP的SNMP OID

在撰寫本文時，不支援電源單元(PSU)的狀態和風扇狀態。已開啟增強請求：

思科漏洞ID CSCwa23598 - 9800 WLC增強功能/對PSU和風扇狀態SNMP OID(1.3.6.1.4.1.9.9.13)的支援

在HA中監控待命WLC

從17.5.1版開始，只能在高可用性群集中監視備用WLC。待命WLC可以直接透過RMI監控，也可以透過作用中WLC的查詢來監控。

直接監控待命WLC

只有在RMI + RP HA型別中運行的WLC才能直接監控待命WLC。這是透過待命WLC的備援備援備援管理介面(RMI)IP位址完成。

在此案例中，僅正式支援IF-MIB的OID，因此只能監控待命WLC上所有介面的狀態。9800-CL WLC的輸出範例：

說明

對象名稱

OID

預期響應

介面名稱

ifDescr

1.3.6.1.2.1.2.2.1.2

SNMPv2-SMI::mib-2.2.2.1.2.1 = GigabitEthernet1

SNMPv2-SMI::mib-2.2.2.1.2.2 = GigabitEthernet2

SNMPv2-SMI::mib-2.2.2.1.2.3 = GigabitEthernet3

SNMPv2-SMI::mib-2.2.2.1.2.4 = VoIP-Null0

SNMPv2-SMI::mib-2.2.2.1.2.5 = Null0

SNMPv2-SMI::mib-2.2.2.1.2.6 = Vlan1

SNMPv2-SMI::mib-2.2.2.1.2.7 = Vlan39

介面運行狀態(1=up， 2=down)

ifOperStatus

1.3.6.1.2.1.2.2.1.8

SNMPv2-SMI::mib-2.2.2.1.8.1 = 2

SNMPv2-SMI::mib-2.2.2.1.8.2 = 2

SNMPv2-SMI::mib-2.2.2.1.8.3 = 1

SNMPv2-SMI::mib-2.2.2.1.8.4 = 2

SNMPv2-SMI::mib-2.2.2.1.8.5 = 2

SNMPv2-SMI::mib-2.2.2.1.8.6 = 1

注意：備用WLC Gig 2埠（用於流量交換的中繼埠）預計處於關閉狀態。發生故障切換後，備用WLC上的Gig 2埠將啟動。9800物理裝置（9800-80、9800-40和9800-CL）上的TenGigabit埠也存在類似情況。

透過作用中WLC監控待命WLC

也可透過對作用中WLC的查詢來監控待命WLC狀態。只有CISCO-LWAPP-HA-MIB和CISCO-PROCESS-MIB MIB才能得到官方支援。在查詢HA中的作用中WLC時，第一個回應代表作用中WLC的值，而第二個回應代表待命WLC的值。

說明

對象名稱

OID

預期響應

總CPU使用率（以過去5秒的百分比為單位）

cpmCPUTotal5sec

1.3.6.1.4.1.9.9.109.1.1.1.1.3

SNMPv2-SMI::enterprises.9.9.109.1.1.1.3.5 = 3

SNMPv2-SMI::enterprises.9.9.109.1.1.1.3.6 = 7

過去1分鐘內CPU總使用率(%)

cpmCPUTotal1min

1.3.6.1.4.1.9.9.109.1.1.1.1.4

SNMPv2-SMI::enterprises.9.9.109.1.1.1.4.5 = 8

SNMPv2-SMI::enterprises.9.9.109.1.1.1.4.6 = 6

過去5分鐘內CPU總使用率(%)

cpmCPUTotal5min

1.3.6.1.4.1.9.9.109.1.1.1.1.5

SNMPv2-SMI::enterprises.9.9.109.1.1.1.5.5 = 10

SNMPv2-SMI::enterprises.9.9.109.1.1.1.5.6 = 15

當前使用的記憶體（以位元組為單位）

cpmCPUMemoryUsed

1.3.6.1.4.1.9.9.109.1.1.1.1.12

SNMPv2-SMI::enterprises.9.9.109.1.1.1.12.5 = 4318980

SNMPv2-SMI::enterprises.9.9.109.1.1.1.12.6 = 3950332

當前可用記憶體（以位元組為單位）

cpmCPUMemoryFree

1.3.6.1.4.1.9.9.109.1.1.1.1.13

SNMPv2-SMI::enterprises.9.9.109.1.1.1.12.5 = 4318739

SNMPv2-SMI::enterprises.9.9.109.1.1.1.12.6 = 3950738

自上次啟動以來可用記憶體的最小量（以位元組為單位）

cpmCPUMemoryLowest

1.3.6.1.4.1.9.9.109.1.1.1.1.15

SNMPv2-SMI::enterprises.9.9.109.1.1.1.15.5 = 3763868

SNMPv2-SMI::enterprises.9.9.109.1.1.1.15.6 = 4132588

待命WLC的狀態(1=up， 0=down)

cLHaPeerHotStandbyEvent

1.3.6.1.4.1.9.9.843.1.3.4

SNMPv2-SMI::enterprises.9.9.843.1.3.4.0 = 1