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 をリストするオブジェクト要約が含まれています。

注: NET-SNMP によって提供されるツールなど、一部のツールでは、各 MIB を単一のファイルに分割する必要があります。MIB の分割について詳しくは、SNMP レシーバーのセットアップを参照してください。
CASTIRON-IA-MIB のオブジェクト要約のセクションの 1 つを以下に示します。
--   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
示したように、ciIaProjectSummary と呼ばれる組織ノード (ディレクトリーに類似した概念。この例では OBJECT-IDENTITY) に、プロジェクトについての一般情報が含まれています。その「ディレクトリー」の内部には、個別の項目 (OBJECT-TYPE) があり、それぞれにプロジェクトの数、実行中のオーケストレーションの数、停止したオーケストレーションの数などが含まれています。これらの項目の意味についての詳細情報を取得するには、ファイル内で該当する項目の名前を検索します。例えば、ciIaNbrRunningJobs についての情報を取得するには、ファイル内でそのストリングを検索します。以下の内容が検出されます。
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 - オブジェクトを記述します。
以下の例は、ProjectSummary 情報をポーリングしたときに表示されるデータを示しています。
$ 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 を常に使用する必要はありません。