はじめに
このドキュメントでは、Cisco 9800ワイヤレスLANコントローラ(WLC)を監視するためにSimple Network Management Protocol(SNMP)を設定する方法について説明します。
前提条件
要件
- 9800 WLCとSNMPプロトコルに関する基礎知識
- SNMPサーバ/ツール
使用するコンポーネント
すべてのテストは、MacOS 10.14およびイメージバージョン17.5.1の9800-CL WLCで実施しました。この記事に記載されているOIDの一部は、古いイメージバージョンには存在しません。
このドキュメントの情報は、特定のラボ環境にあるデバイスに基づいて作成されました。このドキュメントで使用するすべてのデバイスは、クリアな(デフォルト)設定で作業を開始しています。本稼働中のネットワークでは、各コマンドによって起こる可能性がある影響を十分確認してください。
SNMPとテレメトリ
古いAireOS WLCは、モニタのメインプロトコルとしてSNMPに依存しています。クライアント数、参加しているアクセスポイントの数、プロセッサおよびメモリの使用量などの関連情報の大部分は、モニタを行うツールからWLCにSNMPクエリを実行することで取得できます。
9800 WLCでは、テレメトリに重点が置かれています。テレメトリは「プッシュ」モデルで動作します。このモデルでは、WLCはクエリを実行することなく、関連する情報をサーバに送信します。Catalyst 9800では、従来の目的に対して引き続きSNMPを提供しています。一部の情報はテレメトリ専用であり、以前はAireOSで使用できたOIDの一部は9800ではまだ使用できません。
WLCでのSNMPの設定
Cisco IOS XEバンガロール17.6.1以降では、Cisco Catalyst 9800シリーズワイヤレスコントローラでイーサネットサービスポート(管理インターフェイスVRF/GigabitEthernet 0)がサポートされています。
このリリースよりも前のリリースでは、Catalyst 9800 WLCは、ワイヤレス管理インターフェイス(WMM)またはリダンダンシーマネジメントインターフェイス(バージョン17.5.1以降のHAクラスタのスタンバイWLCの場合)を介してSNMPによってのみモニタできました。
Webインターフェイス経由
SNMPv2cはSNMPのコミュニティベースのバージョンであり、デバイス間のすべての通信はクリアテキストで行われます。SNMPv3は、メッセージ整合性チェック、認証、およびパケットの暗号化を提供する最も安全なバージョンです。SNMPv1は非常に時代遅れですが、レガシーソフトウェアとの互換性を確保するために存在しています。この記事には記載されていません。
重要:SNMPv2cは、読み取り+書き込み権限を持つコミュニティ「private」と、読み取り専用権限を持つコミュニティ「public」では、デフォルトで有効になっています。これらを削除し、別の名前で新しいコミュニティを作成することをお勧めします。
9800 WLCのWebインターフェイスにログインします。Administration > Management > SNMPの順に選択し、SNMPがグローバルに有効になっていることを確認します。Community Stringsの下に、現在設定されているすべてのコミュニティとその権限レベルが表示されます。

SNMP V3ユーザを作成する前に、SNMP V3グループを定義する必要があります。読み取り+書き込み権限を持つユーザグループを作成するには、読み取りビューと書き込みビューをv1defaultに設定します。読み取り専用グループの書き込みビューを空にする必要があります

SNMP V3 Usersタブでは、設定されているすべてのユーザ、その権限、認証と暗号化に使用されるプロトコルを確認できます。Newボタンを使用すると、新しいユーザを作成できます。
次の3つのセキュリティモードを使用できます。
- AuthPriv =メッセージは認証され、暗号化される
- AuthNoPriv =メッセージは認証されているが、暗号化されていない
- NoAuthNoPriv =メッセージに適用されるセキュリティなし
認証プロトコルとしてSHAを選択し、プライバシープロトコルとして少なくともAES-128を選択することをお勧めします。

コマンドライン経由
SNMPは、コマンドラインインターフェイス(CLI)を使用して設定することもできます。 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は一意であり、MACアドレスに非常によく似た2つのOIDを世界中で同じにすることはできません。
これらの識別子はツリー階層に従い、各OIDをルートまで追跡できます。各ベンダーには、共通のルートを持つ独自のブランチがあります。
例えば、自宅の住所を考えてみましょう。ルートは国または州で、その後に市の郵便番号、番地、最後に自宅の番号が続きます。
ドットの後に続く数字は、ツリーまたはブランチ内の特定のポイントに到達するために必要な各ステップを表します。

これらの値はすべて、各ネットワークデバイスのManagement Information Base(MIB;管理情報ベース)に保存されます。各識別子には、名前と定義(可能な値の範囲、型…)があります。
SNMPモニタツールでMIBをロードすることは、SNMPを使用してデバイスにクエリを実行するために必要ではありません。
有効なOIDがわかっている限り、デバイスはOIDが表す変数に格納されている値で応答します。ただし、クエリーツールにMIBをロードすると、オブジェクト名をIDに変換する利点があり、オブジェクトの説明を知ることができます。
この例では、SNMPツールはOID 1.3.6.1.2.1.1.1.0を使用して、デバイスのSNMPエージェントにシステムの説明を照会します。

MIBおよびCisco WLC上のすべてのオブジェクト名とIDのリスト
シスコでは、9800 WLC用のManagement Information Base(MIB;管理情報ベース)を提供しています。これは簡単に読み取ることはできませんが、MIBには使用可能なすべてのオブジェクト名とその説明が含まれています。
9800の全モデル(9800-80、9800-40、9800-L、9800-CL、EWC)で同じMIBが使用されています。https://cfnng.cisco.com/mibsからダウンロードできます。
最も新しい日付は、より高いコードバージョン名の日付ではなく、最も新しい日付の日付です。
ダウンロードされたアーカイブファイルには、サードパーティ製のSNMPサーバにインポートしたり、テキストエディタで開いたりできる複数の.myテキストファイルが含まれています。特定のオブジェクト名のOIDを見つけるには、まずその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に依存し、オブジェクト名には依存しません。オブジェクト名とオブジェクトIDの変換は、Cisco SNMPオブジェクトナビゲータツールを使用して実行できます。
検索バーにオブジェクト名を入力します。OIDと簡単な説明が出力されます。 また、同じツールを使用して、提供されたOIDのオブジェクト名を検索できます。

OIDを使用したWLCの状態の監視
監視する必要があるオブジェクトのOIDを取得した後、最初のSNMPクエリを実行できます。
この章の例では、SNMPv2コミュニティプライベートおよびSNMPv3ユーザsnmpadmin用のWLCの空きメモリ(OID = 1.3.6.1.4.1.9.48.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 install 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 Network Monitor/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が提供され、文字列「0%/1%、1%/1%、0%/1%、0%/1%」が返されます。PRTGには整数値が必要ですが、エラーが発生します。

CUCMとの統合
Cisco Unified Communications Manager(CUCM)には、ワイヤレスエンドポイントトラッキング機能があり、クライアントが接続しているAPに基づいてクライアントの場所を約トラッキングできます。この機能が動作するには、CUCMがSNMPクエリを使用してWLCから情報を取得する必要があります。
重要:多くのCUCMリリースは、Cisco Bug ID CSCvv07486 - Unable to sync Access Points in WLC due to SNMP requests too largeの影響を受けます。この問題は、CUCMが該当のリリースを実行していて、WLCに10を超えるアクセスポイントがある場合に発生します。CUCMが1つのバルク要求で大量のOIDを照会する方法が正しくないため、WLCは応答を拒否するか、tooBig応答で応答します。tooBig応答は必ずしも即座に送信されるわけではなく、遅延が発生する可能性があります。WLCでのSNMPデバッグには、「SNMP: Packet received via UDP from x.x.x.x on VlanXXSrParseV1SnmpMessage: packlet is too large SrDoSnmp: ASN Parse Error」と表示されます。
最も一般的にモニタされるOIDの表
この表には、最も一般的なオブジェクト名の一部とそのOIDが含まれており、MIBではデータがわかりやすい構文で表示されるという点が考慮されています。
注:コマンド「show snmp mib | in <Object name>」を使用すると、9800 WLCで特定のオブジェクト名を使用できるかどうかを確認できます。
説明
|
Object Name
|
OID
|
予想される応答
|
過去5秒間の全体的なCPU使用率(「show process cpu platform」と同等)
|
cpmCPUTotal5sec
|
1.3.6.1.4.1.9.9.109.1.1.1.1.3
|
整数: 5
|
過去1分間の全体的なCPU使用率(%)
|
cpmCPUTotal1分
|
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
|
コアあたりの過去5分間のCPU使用率
|
cpmCore5分
|
.1.3.6.1 .4.1.9.9.109.1.1.2.1.5.5 (.0から.Xはコア数によって異なる)
|
整数: 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
|
前回の再読み込みの理由
|
whyReload
|
1.3.6.1.4.1.9.2.1.2
|
文字列: "reload"
|
加入しているすべてのAPのソフトウェアイメージ
|
bsnAPSoftwareVersion
|
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」
|
クライアントの数
|
cLApActiveClientCount
|
.1.3.6.1.4.1.9.9.513.1.1.1.1.72
|
整数
|
参加しているAPの数
|
cLApGlobalAPConnectCount
|
1.3.6.1.4.1.9.9.513.1.3.35
|
ゲージ32: 1
|
電源装置の状態
|
ciscoEnvMonSupplyStatusTable
|
.1.3.6.1 .4.1.9.9.13.1.5(CSCwb73163で追加) )
|
テーブル
|
ファンの状態
|
ciscoEnvMonFanStatusTable
|
.1.3.6.1 .4.1.9.9.13.1.4(CSCwb73163で追加) )
|
テーブル
|
現在、クライアントの総数と加入アクセスポイントの数のOIDをサポートするために、次の機能拡張要求がオープンされています。
Cisco Bug ID CSCvu26309 - 9800にクライアント数のSNMP OIDがない
この記事の執筆時点では、電源装置(PSU)の状態とファンの状態はサポートされていません。拡張機能の要求が開かれました:
Cisco Bug ID CSCwa23598 - 9800 WLCの拡張/PSUおよびファン状態のSNMP OIDのサポート(1.3.6.1.4.1.9.9.13)
HAでのスタンバイWLCのモニタ
ハイアベイラビリティクラスタでスタンバイWLCをモニタできるのは、リリース17.5.1以降だけです。スタンバイWLCは、RMIを使用して直接監視することも、アクティブWLCのクエリーを使用して監視することもできます。
スタンバイWLCの直接監視
スタンバイWLCは、RMI + RP HAタイプで稼働するWLCの場合にのみ直接監視できます。これは、スタンバイWLCのスタンバイ冗長管理インターフェイス(RMI)のIPアドレスを介して実行されます。
このシナリオでは、IF-MIBからのOIDのみが正式にサポートされています。これにより、スタンバイWLC上のすべてのインターフェイスの状態をモニタすることだけが可能になります。9800-CL WLCからの出力例:
説明
|
Object Name
|
OID
|
予想される応答
|
Interface Name
|
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=アップ、2=ダウン)
|
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 MIBとCISCO-PROCESS-MIB MIBのみが正式にサポートされています。HA内のアクティブWLCが照会されると、最初の応答はアクティブWLCの値を表し、2番目の応答はスタンバイWLCの値を表します。
説明
|
Object Name
|
OID
|
予想される応答
|
過去5秒間のCPU使用量全体(%)
|
cpmCPUTotal5sec
|
1.3.6.1.4.1.9.9.109.1.1.1.1.3
|
SNMPv2-SMI::enterprises.9.9.109.1.1.1.1.3.5 = 3 SNMPv2-SMI::enterprises.9.9.109.1.1.1.1.3.6 = 7
|
過去1分間の全体的なCPU使用率(%)
|
cpmCPUTotal1分
|
1.3.6.1.4.1.9.9.109.1.1.1.1.4
|
SNMPv2-SMI::enterprises.9.9.109.1.1.1.1.4.5 = 8 SNMPv2-SMI::enterprises.9.9.109.1.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.1.5.5 = 10 SNMPv2-SMI::enterprises.9.9.109.1.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.1.12.5 = 4318980 SNMPv2-SMI::enterprises.9.9.109.1.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.1.12.5 = 4318739 SNMPv2-SMI::enterprises.9.9.109.1.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.1.15.5 = 3763868 SNMPv2-SMI::enterprises.9.9.109.1.1.1.1.15.6 = 4132588
|
スタンバイWLCの状態(1=アップ、0=ダウン)
|
cLHaPeerHotStandbyEvent
|
1.3.6.1.4.1.9.9.843.1.3.4
|
SNMPv2-SMI::enterprises.9.9.843.1.3.4.0 = 1
|