内容

はじめに

前提条件

要件

使用するコンポーネント

WLCでのSNMPの設定

オブジェクト名とオブジェクトID(OID)

オブジェクト名とOIDとは

MIBおよびCisco WLC上のすべてのオブジェクト名とIDのリスト

OIDを使用したWLCの状態の監視

SNMPwalkによる監視

Python 3とpysmnpLibraryによる監視

サードパーティソフトウェアとの統合(Grafana/PRTG Network Monitor/SolarWinds)

最も一般的にモニタされるOIDの表

はじめに

このドキュメントでは、CiscoワイヤレスLANコントローラ(WLC)でSNMPを設定およびモニタする方法について説明します。

前提条件

要件

オペレーティングシステムまたはインストールに関する知識に基づいて、デフォルトのSimple Network Management Protocol(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の設定には使用されないため、アクセスモードフィールドはRead Onlyのままになっています。

注：8.7.1.135よりも前のすべてのバージョンは、Cisco Bug 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は一意であり、MACアドレスに非常によく似た2つのOIDが世界中で同じである必要はありません。これらの識別子はツリー階層にあり、各OIDはルートまで追跡できます。各ベンダーは、共通のルートの後に独自のブランチを持ちます。

自宅の住所に例えると、ルートは国または州、都市の郵便番号、番地、そして最後に自宅の電話番号です。

ドットの後に続く数字は、そのツリーまたはブランチの特定のポイントに到達するために必要な各ステップを表します。

これらの値はすべて、各ネットワークデバイスのManagement Information Base（MIB；管理情報ベース）に保存されます。各識別子には、名前と定義（使用可能な値の範囲、タイプなど）があります。

有効なOIDがわかっていれば、SNMPを使用してデバイスにクエリーを実行するために、SNMPツールにMIBをロードする必要はありません。デバイスは、OIDが表す変数に格納された値で応答します。たとえば、図に示すように、SNMPマネージャはOID 1.3.6.1.2.1.1.1.0を使用してデバイスのSNMPエージェントにシステムの説明を照会します。

MIBをクエリーツールにロードすると、これを使用してOID番号を名前に変換し、その定義を検出できます。

MIBおよびCisco WLC上のすべてのオブジェクト名とIDのリスト

2019年5月の時点では、すべての使用可能なオブジェクト名とそれぞれのワイヤレスLANコントローラ用のOIDを含む、単純で使いやすいテーブルは存在しません。代わりに、シスコではManagement Information Base（MIB；管理情報ベース）を提供しています。MIBは読みにくいものの、利用可能なすべてのオブジェクト名とその説明が含まれています。Cisco 3504 WLC MIBは、ここからダウンロードできます。

ダウンロードされたアーカイブファイルには、サードパーティのSNMP監視サーバにインポートしたり、通常のテキストエディタで開いたりできる複数の.myテキストファイルが含まれています。特定のオブジェクト名のOIDを見つけるには、まずその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を使用します。オブジェクト名とオブジェクトID間の変換は、Cisco SNMPオブジェクトナビゲータツールを使用して実行できます。 検索バーにオブジェクト名を入力します。この出力は、OIDと簡単な説明を提供します。 また、同じツールを使用して、OIDの対応するオブジェクト名を検索できます。

OIDを使用したWLCの状態の監視

監視する必要があるオブジェクトのOIDを取得した後、最初のSNMPクエリを実行できます。次の例では、SHA認証パスワードとAESプライバシーパスワードを Cisco123Cisco123 に設定したSNMPv2コミュニティsnmp_test   とSNMPv3ユーザに対して、コアごとのWLC CPU使用率(OID = 1.3.6.1.4.1.9.9.618.1.4.1)を取得す admin   る方法Cisco123Cisco123   を紹介しています。コントローラ管理インターフェイスは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 Network Monitor/SolarWinds)

Cisco Prime Infrastructureは、ワイヤレスコントローラを含む複数のネットワークデバイスを簡単に監視および設定する機能を提供します。Prime InfrastructureにはすべてのOIDがプリロードされており、WLCとの統合は、PrimeへのWLCクレデンシャルの追加だけで構成されます。同期後に、複数のワイヤレスコントローラに対してアラームを設定し、設定テンプレートを一度にプッシュできます。

一方、Cisco WLCは、OIDが既知であれば、複数のサードパーティ製モニタリングソリューションと統合することもできます。Grafana、PRTG Network Monitor、およびSolarWindsサーバなどのプログラムを使用すると、MIBまたはOIDをインポートして、値を使いやすいグラフで表示できます。

この統合に対応するには、モニタリングサーバを調整する必要があります。図に示す例では、PRTGモニタリングサーバに、文字列 0%/1%, 1%/1%, 0%/1%, 0%/1%を返すコアごとのCPU使用率のOIDが提供されています。PRTGには整数値が必要ですが、エラーが発生します。

最も一般的にモニタされるOIDの表

MIBのデータがわかりやすい構文ではないと考えられる場合、次の表に、シスコのお客様が使用する最も一般的なオブジェクト名とそのOIDの一部を記載します。

説明

Object Name

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%

RAM使用率(%)

clsSysCurrentMemoryUsage

1.3.6.1.4.1.9.9.618.1.8.6.0

ゲージ32: 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

ゲージ32: 2

クライアントの数

clsMaxClientsCount

1.3.6.1.4.1.9.9.618.1.8.12.0

ゲージ32: 0

WLANあたりのクライアント数

bsnDot11EssNumberOfモバイルステーション

1.3.6.1.4.1.14179.2.1.1.1.38.0

カウンタ32: 3

カウンタ32: 2