内容

はじめに

前提条件

要件

使用するコンポーネント

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は、読み取りおよび書き込み権限を持つprivateコミュニティと、読み取り専用権限を持つpublicコミュニティに対してデフォルトで有効になっています。これらを削除し、別の名前で新しいコミュニティを作成することをお勧めします。

この記事では、SNMPv2cとSNMPv3のみを使用します。コントローラのWeb interfaceにログインします。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

を作成します。

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認証パスワードsnmp_testadmin Cisco123Cisco123とAESプライバシーパスワードをCisco123Cisco123に設定したSNMPv2コミュニティのSNMPv3ユーザのコアごとのWLC CPU使用率(OID = 1.3.6.1.4.1.9.618.1.4.1)を取得する方法を示しています。コントローラ管理インターフェイスは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 Libraryによる監視

これらのコードスニペットは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のデータがわかりやすい構文で表示されている場合、次の表には、Ciscoのお客様が使用する最も一般的なオブジェクト名とその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