概要
このドキュメントでは、Cisco 9800ワイヤレスLANコントローラ(WLC)を監視するための簡易ネットワーク管理プロトコル(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は、ワイヤレス管理インターフェイス(WLC)または冗長管理インターフェイス(バージョン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グループを定義する必要があります。読み取り/書き込み権限を持つユーザグループを作成するには、[Read View] と[Write View] を[v1default] に設定します。読み取り専用グループの書き込みビューを空にする必要があります
SNMP V3 Usersタブでは、設定されているすべてのユーザ、その権限、および認証と暗号化に使用されるプロトコルを確認できます。 [New] ボタンを使用すると、新しいユーザを作成できます。
次の3つのセキュリティモードを使用できます。
- AuthPriv =メッセージが認証され、暗号化される
- AuthNoPriv =メッセージは認証されるが、暗号化されない
- NoAuthNoPriv =メッセージにセキュリティが適用されない
認証プロトコルとして[SHA]を選択し、プライバシープロトコルとして少なくとも[AES-128]を選択することをお勧めします。
コマンドラインから
SNMPは、Command Line Interface(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をルートまで追跡できます。各ベンダーには、共通のルートを持つ独自のブランチがあります。
例えば、自宅の住所を使用できます。ルートは国または州で、その後に都市の郵便番号、番地、最後に自宅の電話番号が続きます。
ドットの後に続く数字は、そのツリーまたはブランチ内の特定のポイントに到達するために必要な各ステップを表します。
これらの値はすべて、各ネットワークデバイスの管理情報ベース(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)は、https://software.cisco.com/download/home/286322605/type/280775088/release/からダウンロードできる同じMIBを使用します。
最も新しいものは最も新しい日付を持つものであり、より高いコードバージョン名を持つものではありません。
ダウンロードされたアーカイブファイルには、サードパーティの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クエリを実行できます。
この章の例では、SHA認証パスワードCisco123#とAESプライバシーパスワードをCisco123#に設定したSNMPv2コミュニティプライベートおよびSNMPv3ユーザsnmpadmin用のWLCの空きメモリ(OID = 1.3.6.1.4.1.9.9.48.1.1.1.5)を取得する方法を示しています。コントローラ管理インターフェイスは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およびPythonライブラリによる監視
コードスニペットは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との統合はPrimeにWLCクレデンシャルを追加するだけで行われます。9800 WLCでは、PrimeはWLCから詳細の大部分をテレメトリに依存して収集しますが、情報のごく一部はSNMPを介して取得します。
一方、Cisco WLCは、OIDが既知である限り、モニタ用の複数のサードパーティソリューションと統合することもできます。
Grafana+Prometheus、PRTGネットワークモニタ、SolarWindsサーバなどのプログラムを使用すると、MIBまたはOIDをインポートし、値を使いやすいグラフで表示できます。
この統合では、SNMPサーバ側の調整が必要になる場合があります。この例では、PRTGモニタサーバに、文字列「0%/1%、1%/1%、0%/1%、0%/1%」を返すコアごとのCPU使用率OIDが用意されています。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が単一のバルク要求で大量の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 |
予想される応答 |
全体の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 |
前回のリロードの理由 |
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」 |
クライアントの数 |
X |
X |
X |
加入しているAPの数 |
X |
X |
X |
電源装置の状態 |
X |
X |
X |
ファンの状態 |
X |
X |
X |
現在、クライアントの総数と接続されたアクセスポイントの数のOIDをサポートするために、拡張要求がオープンされています。
Cisco Bug ID CSCvu26309:クライアント数のSNMP OIDが9800に存在しない
Cisco Bug ID CSCvv44330 - 9800に存在しないAPの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=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の値を表し、2番目の応答はスタンバイWLCの値を表します。
説明 |
Object Name |
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.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.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.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=アップ、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 |