SNMP の基礎
Simple Network Management Protocol (SNMP) は、ネットワーク・デバイスで管理者の注意を必要とする条件の発生をモニターするために、主にネットワーク管理システム内で使用されるインターネット標準プロトコルです。SNMP がサポートする代表的なデバイスは、ルーター、スイッチ、サーバー、ワークステーション、プリンターなどです。このセクションでは、SNMP の基礎および Cast Iron MIB の概要について説明します。
SNMP の用語では、Cast Iron 統合アプライアンスを「ネットワーク・エレメント」または「管理対象デバイス」と呼びます。これは、ネットワーク上のメンバーであり、管理対象として使用可能であることを示します。ネットワーク・エレメントには、エレメントについての情報を提供するエージェント が含まれます。エージェントは 2 つの重要な機能を実行します。1 つ目の機能は管理システムからの要求に応答することであり、2 つ目の機能はネットワーク・エレメント上のイベントについての通知を送信することです。エージェントからマネージャーへの非同期通知をトラップ と呼びます。
SNMP トラップを使用すると、エージェントは、非送信請求 SNMP メッセージという手段を通じて、管理ステーションに重要なイベントを通知できます。ポーリングまたはトラップを通じて提供される情報は、管理情報ベース (MIB) 内で定義されます。MIB は、通信ネットワーク内のエンティティーを管理するために使用される仮想データベースです。MIB は、オブジェクトの階層を定義し、各オブジェクトに固有のオブジェクト ID (OID) を割り当てます。OID は、ピリオドで区切られた数字 (例:「.1.3.6.1.2.1.1」) によって指定されます。OID を特定の共通名によって参照することもあります。例えば、特定の OID .1.3.6.1.2.1.1 を「システム」として参照できます。SNMP プロトコルでは多くの共通 MIB が定義されています。また、組織がアプリケーション固有のカスタム MIB を定義することもできます。
Cast Iron MIB の理解
Cast Iron WMC からダウンロードされたファイルには、複数の MIB DEFINITIONS = BEGIN - END セクションがあります。各セクションは、1 つの MIB と固有の階層から成り立っています。Cast Iron 固有情報をポーリングするには、CASTIRON-IA-MIB を使用します。各 MIB には、MIB 機能を記述する MODULE-IDENTITY があります。MODULE-IDENTITY に続くコメント・セクションには、MIB コンテンツの概要があり、各 MIB オブジェクトの名前と OID をリストするオブジェクト要約が含まれています。
-- ciIaProjectSummary ciia.1.1.1
-- ciIaNbrProjects ciia.1.1.1.1
-- ciIaNbrRunningOrchs ciia.1.1.1.2
-- ciIaNbrStoppedOrchs ciia.1.1.1.3
-- ciIaNbrRunningJobs ciia.1.1.1.4
-- ciIaNbrCompletedJobs ciia.1.1.1.5
-- ciIaNbrErroredJobs ciia.1.1.1.6
ciIaNbrRunningJobs OBJECT-TYPE -- ciia.1.1.1.4
SYNTAX Unsigned32
MAX-ACCESS read-only
STATUS current
DESCRIPTION
"Total number of currently running jobs.
"
::= { ciIaProjectSummary 4 }
重要な領域は以下のとおりです。- ciIaNbrRunningJobs OBJECT-TYPE - オブジェクトの名前を定義します。行末には、OID の短縮形を示すコメントがあります。
- SYNTAX Unsigned32 - これは符号なし整数であり、その値は上または下に変動することがあります。
- MAX-ACCESS read-only - 読み取り専用値。マネージャーはこの値を要求できますが、変更することはできません。
- DESCRIPTION - オブジェクトを記述します。
$ snmpwalk -v 2c -c public -M "+/home/choller/mibs" -m "+CASTIRON-IA-MIB" flintstone2 ciIaProjectSummary
CASTIRON-IA-MIB::ciIaNbrProjects.0 = Gauge32: 2
CASTIRON-IA-MIB::ciIaNbrRunningOrchs.0 = Gauge32: 0
CASTIRON-IA-MIB::ciIaNbrStoppedOrchs.0 = Gauge32: 14
CASTIRON-IA-MIB::ciIaNbrRunningJobs.0 = Gauge32: 0
CASTIRON-IA-MIB::ciIaNbrCompletedJobs.0 = Gauge32: 0
CASTIRON-IA-MIB::ciIaNbrErroredJobs.0 = Gauge32: 0
lciIaProjectTable をポーリングしたときには、以下のデータが表示されます。-- ciIaProjectTable ciia.1.1.2
-- ciIaProjectEntry ciia.1.1.2.1
-- ciIaProjEntryIndex ciia.1.1.2.1.1
-- ciIaProjEntryName ciia.1.1.2.1.2
-- ciIaProjEntryVersion ciia.1.1.2.1.3
-- ciIaProjEntryConfig ciia.1.1.2.1.4
-- ciIaProjEntryState ciia.1.1.2.1.5
-- ciIaProjEntryNbrRunning ciia.1.1.2.1.6
-- ciIaProjEntryNbrCompleted ciia.1.1.2.1.7
-- ciIaProjEntryNbrErrored ciia.1.1.2.1.8
-- ciIaProjEntryTimePublished ciia.1.1.2.1.9
SNMP テーブルでの作業には困難が伴う場合があります。SNMP テーブルは、アプライアンス上の各プロジェクトについて、名前、バージョン、構成、状態などの情報を示します。これはデータベース・スキーマに類似しています。各エントリー項目 (ciIaProjEntryName、ciIaProjEntryVersion など) は、テーブル内の列を記述します。MIB 内でストリングを検索して、各項目についての詳細情報を検出できます。注: 反復方式で Project テーブルを「ウォーク」しようとすると、問題が発生することがあります。代わりに、テーブル情報を表示するときには、テーブルを認識するツール機能を常に使用してください。以下の例は「ウォーク」手法を示しています。この例では、プロジェクトが公開された後で、新規構成を作成するためにクローンが作成されたため、2 つのテーブル行が存在します。出力が示しているように、どの項目が特定の行に関連付けられているかを理解することは困難です。この場合には、索引 (OID の最後の部分) を参照して、項目と行の正しい配列を判別する必要があります。$ snmpwalk -v 2c -c public -M "+/home/choller/mibs" -m "+CASTIRON-IA-MIB" flintstone2 ciIaProjectTable
CASTIRON-IA-MIB::ciIaProjEntryName.98304 = STRING: OnlineLicensing
CASTIRON-IA-MIB::ciIaProjEntryName.98305 = STRING: OnlineLicensing
CASTIRON-IA-MIB::ciIaProjEntryVersion.98304 = STRING: 1.0
CASTIRON-IA-MIB::ciIaProjEntryVersion.98305 = STRING: 1.0
CASTIRON-IA-MIB::ciIaProjEntryConfig.98304 = STRING: Default
CASTIRON-IA-MIB::ciIaProjEntryConfig.98305 = STRING: OnlineLicensingClone
CASTIRON-IA-MIB::ciIaProjEntryState.98304 = INTEGER: undeployed(1)
CASTIRON-IA-MIB::ciIaProjEntryState.98305 = INTEGER: undeployed(1)
CASTIRON-IA-MIB::ciIaProjEntryNbrRunning.98304 = Gauge32: 0
CASTIRON-IA-MIB::ciIaProjEntryNbrRunning.98305 = Gauge32: 0
CASTIRON-IA-MIB::ciIaProjEntryNbrCompleted.98304 = Counter32: 0
CASTIRON-IA-MIB::ciIaProjEntryNbrCompleted.98305 = Counter32: 0
CASTIRON-IA-MIB::ciIaProjEntryNbrErrored.98304 = Counter32: 0
CASTIRON-IA-MIB::ciIaProjEntryNbrErrored.98305 = Counter32: 0
CASTIRON-IA-MIB::ciIaProjEntryTimePublished.98304 = STRING: 2009-6-12,16:36:20.0,+0:0
CASTIRON-IA-MIB::ciIaProjEntryTimePublished.98305 = STRING: 2009-6-12,16:36:20.0,+0:0
snmptable コマンドを使用して情報をマップすると、以下の例に示すように、表示はより明確になります。$ snmptable -v 2c -c public -M "+/home/choller/mibs" -m "+CASTIRON-IA-MIB" flintstone2 ciIaProjectTable
SNMP table: CASTIRON-IA-MIB::ciIaProjectTable
PEN* PEV PEC PES PER COM PEE PETP
OnlineLicensing 1.0 Default undeployed 0 0 0 2009-6-12,16:36:20.0,
+0:0
OnlineLicensing 1.0 OnlineLicensingClone undeployed 0 0 0 2009-6-12,16:36:20.0,
+0:0
*Table Key: PEN=ciIaProjEntryName, PEV=ciIaProjEntryVersion, PEC=ciIaProjEntryConfig,
PES=ciIaProjEntryState, PER=ciIaProjEntryNbrRunning, COM=ciIaProjEntryNbrCompleted,
PEE=ciIaProjEntryNbrErrored, PETP=ciIaProjEntryTimePublished
これらの例では、OID ではなくテキスト名が使用されています。MIB の機能の 1 つは OID とテキスト名をマップすることであるため、OID を常に使用する必要はありません。