Solstice Enterprise Agents 1.0 ユーザーズガイド

DMI による SNMP の使用

DMI による SNMP の使用の概要

Solstice Enterprise Agents (SEA) の技術を採用すれば、SNMP で通信する管理アプリケーションから、snmpXdmid という DMI マッパーを介して DMI の利用可能な構成要素に対してアクセスできます。SNMP は、プロトコルデータユニットを使って、ネットワークに分散しているエージェントと管理アプリケーションとの間で情報の通信を行います。標準の MIB には、SNMP 管理アプリケーションによってすべての被管理オブジェクトが記述されます。エージェントプログラムは、管理アプリケーションの要求に従って MIB オブジェクトの値を提供したり、変更したりします。

DMI マッパー snmpXdmid は、SNMP 管理アプリケーションと通信するために、DMI 情報を SNMP MIB フォーマットに動的に変換するマップ機能を提供します。SNMP 管理アプリケーションは、snmpXdmid に要求を送信します。すると、その SNMP 要求は DMI 要求に順番に変換されます。DMI 応答が返送されると、今度は逆変換が行われます。この技術を採用することによって、SNMP 管理アプリケーションは、DMI の利用可能な構成要素の管理に積極的に関与することができます。

この章では、DMI と SNMP の結び付きを示し、SNMP MIB と DMI MIF の間でデータをマップする方法を説明します。

図 6-1 に、どのようにして snmpXdmid が Solstice Enterprise Agents のほかの部分と協同して動作するのかを示します。

図 6-1 snmpXdmid の概要

Graphic

SNMP と DMI との通信

SNMP 管理アプリケーションと DMI の間の通信経路は、次の節で説明するように、 SNMP マスターエージェントと DMI マッパーで構成されます。

SNMP マスターエージェント

SNMP マスターエージェントは、システム内の管理アプリケーションと登録されたサブエージェント間の SNMP 要求とその応答を処理します。Solstice Enterprise Agents によってインストールされた snmpd 実行形式ファイルは、システムにすでにインストールされている snmpd ファイルと置き換えられます。

SNMP マスターエージェントは、SNMP PDU を介してシステム内のサブエージェントと通信を行います。サブエージェントとしての役割を果たすプロセスでは、MIB サブツリーを SNMP エージェントに登録できます。登録された変数に対する要求をマスターエージェントが受信すると、その要求はすべてsnmpdXdmid を経由してサブエージェントに渡されます。次にその要求が実行され、マスターエージェントに応答が返送されます。

DMI マッパー

DMI マッパーは、システム内の SNMP マスターエージェントからの要求と SNMP マスターエージェントへの応答を処理します。マッパーは、特定の MIB 変数に対する SNMP Get 要求などの要求を受信すると、その MIB 変数を対応する DMI MIF 属性に変換します。システム内の DMI 構成要素より送信されたインジケーションは、SNMP トラップに変換され、管理アプリケーションに送信されます。MIB 変数の MIF 属性への変換やインジケーションのトラップへの変換は、マッパーが SNMP マスターエージェントに登録した構成要素にかぎり実行されます。

SNMP マスターエージェントへの構成要素の登録

snmpXdmid によって構成要素のマップが行われるようにするには、構成要素の MIF ファイルと、SNMP オブジェクト識別子 (OID) の接頭辞とが相互に関係付けられている必要があります。OID の接頭辞は、DMI 構成要素を SNMP マスターエージェントに結び付けるための登録点です。

OID と構成要素との関係付けは、構成要素のエントリをマップファイルに追加することによって行われます。.MAP ファイルの書式については、「MIF から MIB へのマップ」を参照してください。Solaris 環境では、.MAP ファイルは /var/dmi/map ディレクトリにあります。


注 -

DMI マッパーがマップ処理を適切に実行するために、マップファイルの構成要素名のフィールドのエントリが、MIF ファイルのその構成要素に対して指定された名前の値と一致していなければなりません。このとき、文字列のスペースや大文字小文字なども一致している必要があります。


マップファイルに変更が行われる場合は、DMI マッパーが現在のマップ情報を管理できるようにするために、次のどちらかの処置を行う必要があります。


注 -

マップファイル内で異なるエンタープライズ ID を持つ同じ構成要素名が繰り返される場合は、DMI マッパーはその構成要素を 2 回マップします。


Solaris での DMI マッパーの実行

Solaris 環境で DMI マッパー snmpXdmid を実行するときは、次の操作を行なって、SNMP 情報の流れが必ず適正になるようにします。

snmp.conf ファイルには、エントリの書式に関する記述が含まれています。これは、エントリを追加するときの参考になります。snmp.conf ファイルは、/etc ディレクトリにあります。

DMI マッパーの機能

サブエージェントは、システム内の DMI 構成要素を SNMP マスターエージェントに登録します。マッパーが正しくマップ処理を行うには、SNMP エージェントからの要求を処理するときに、サブエージェントによって使用されるマップファイル内で、構成要素の MIF 構造が認識される必要があります。マップファイルには、構成要素に対する一意の SNMP OID が保存されています。この OID は、マスターエージェントの登録点として使われます。

マップファイルを生成するには、次の作業のどちらかを行います。

サブエージェントの処理プロセスには、次のような状態があります。

これらの状態によって、一般的な処理の流れが規定されます。マッパー snmpXdmid は、デーモンとして動作し、通常、SNMP 要求を待ち、要求を受信するとすぐにその要求を処理し、応答を返送し、次の SNMP 要求を待ちます。また、マッパーは DMI SP からインジケーションも受信し、デフォルトでは、これらのインジケーションを SNMP トラップとして転送します。

サブエージェントの初期化と再初期化

通常、マッパーは、起動スクリプトを介してシステムのブート時に起動されます。マッパーの起動は、システムの起動段階のあとの方で行う必要があります。マッパーの起動によって、SNMP マスターエージェントと DMI (SP) が初期化されます。初期化の際には、snmpXdmid とマスターエージェントの間、および snmpXdmid と DMI SP の間の両方で動的に登録が行われます。

  1. 管理アクティビティが開始される前に、マッパーは、管理インタフェース (MI) の登録の呼び出しを使用して、サービスプロバイダ (SP) にマッパー自身を登録します。

    これによって、SP が、MIF データベースへのアクセスなどのサービスを提供できるようになります。また、マッパーは、インジケーションを受信できるように、SP の登録テーブルとフィルタテーブルにエントリを追加します。

  2. マッパーが変換テーブルを構築します。

    変換テーブルには、.MAP ファイル内にある、それぞれ一意の SNMP OID 接頭辞と構成要素の名前の組み合わせに対するマスターエージェントの登録点が保存されます。これらの変換テーブルを構築するときに、マッパーは /var/dmi/map ディレクトリにあるすべての .MAP ファイルを検索します。

    これらの構成要素の識別子と、それぞれの構成要素に関連付けられているグループの識別子は、変換のために保存されます。インストール済みの構成要素でも、MAP ファイルに登録されていないためにプログラムで検索できないものには、SNMP エージェントはアクセスできません。構成要素のインストール、またはインストールの解除のたびに、変換テーブルは適切に調整されます。

    新しい構成要素が SP に登録されると、マッパーはすべてのマップファイルを読み込み直して、変換テーブルが常に最新になるようにします。

  3. マッパーがマスターエージェントに接続されます。

    この接続で通信が行われる前に、マッパーは接続を確立し、マスターエージェントに登録する必要があります。

    次の定義を使って登録が行われます。

    • サブエージェント ID

    • エージェント状態 = ACTIVE

    • タイムアウトの値

    • サブエージェント名

    • サブエージェントのアドレス

  4. この時点で、エージェントは、管理する MIB のオブジェクト ID を登録します。

    .MAP ファイルから取得される MIB OID の接頭辞が登録に使われます。構成要素がインストールされていなくても、その構成要素名に関連付けられている OID の接頭辞を登録することもできます。

    初期化の際には、DMI とそのインタフェースが機能できる状態で、しかも変換テーブルが正しければ、コールドスタートトラップがエージェントに送信されます。トラップの詳細は、 「例外の報告」を参照してください。

    再初期化は、重大なエラーまたは潜在的に重大なエラーが検出されたときに行います。この場合、DMI とマスターエージェントとの通信中にそのどちらかでエラーが発生した可能性があります。DMI、マスターエージェント、およびテーブルの初期化をやり直すと、ウォームスタートトラップがマスターエージェントに送信されます。

SNMP 要求の DMI への変換

SNMP マスターエージェントは要求を受信すると、そのオブジェクトが、マッパーを登録したサブツリー内にあるかどうかを判断します。そのオブジェクトがサブツリー内にある場合は、マッパーに SNMP 要求を送ります。マッパーはそのパケットを受け取ると、次の SNMP の種類に従ってパケットを解析します。

SNMP 要求の DMI への変換について、表 6-1 に示します。

表 6-1 SNMP 要求の DMI への変換

SNMP 

オブジェクト 

DMI 

データ 

{verb}{noun}{verb}{noun}
getOIDMI_cmdsID と Key
getnext  comp ID/group ID/attr ID
set/commit/undo   

構成要素、グループ、または属性のリストを問い合わせたり、個別の属性を取得 (Get) したり設定 (Set) したりするための MI コマンドを実行することによって、MIF データベースにアクセスできます。

マッパーはマスターエージェントから GET 要求を受け取ると、次の処理を行います。

  1. 変換テーブル内のエントリの有無に応じて、その要求が MIF に対するものかまたは MIB に対するものかを判断します。

  2. OID の残りの部分をパース処理することによって、妥当性をチェックします。

  3. 指定されたグループと構成要素があるかどうか変換テーブルを検索します。

  4. OID に DMI テーブルインデックスが指定されている場合は、それを DMI キー形式に変換します。

  5. DMI からオブジェクト値を検索します。オブジェクト値が見つかると、サブエージェントはそのオブジェクト値をエージェントに渡します。

GETNEXT 要求の処理中に、サブエージェントは、字句解析上の順序が維持されていることを確かめる必要があります。SMI オブジェクトとして返される属性を検出するまでに、MIF データベースの検索規模がかなり大きくなることがあります。その属性に固有なエラーなどの小さなエラーが原因で、目的の属性の値が利用できないときは、/RFC1448/ によって規定されている genErr が返されます。次のオブジェクトがサブエージェントのツリーになければ、その要求と同じオブジェクトのインスタンスとともに、値 noSuchName が返されます。

DMI 属性の識別子は、一意の OID にコード化されます。DMI テーブルのオブジェクトにアクセスしたり、DMI テーブルの行を識別したりするときは、INDEX 句を使います。GETNEXT の実行中に DMI テーブルの属性を検査するときは、すべての行識別子 (キーの値) を調べることによって、属性の字句解析上の順序を保ちます。

マスターエージェントによる SET 要求の処理は、GET 要求よりも少し複雑です。通常のコマンドシーケンスでは、GET コマンドの次に SET コマンドがマスターエージェントから送信されます。渡された SNMP PDU に対し、SET コマンドを全部完了できなかったときは、別の SET コマンドをサブエージェントに送信します。この SET コマンドには、GET コマンドから得られた oi.d 値が指定されます。サブエージェントは SET コマンドを受信すると、いくつかの基本的なチェックを行います。基本的なチェックとは、オブジェクトとインスタンスの存在、値のデータ型、有効な内容、操作に必要とされるメモリーの有効性のチェックなどです。この時点で、属性を保持 (RESERVE) するための DmiSetAttribute() による DMI の呼び出しが完了します。RESERVE を使うと、SET を実行しなくても SET の妥当性チェックを行うことができます。RESERVE が失敗すると、マスターエージェントに genErr が返されます。RESERVE が成功すると、サブエージェントは DmiSetAttribute()SET オプションを指定して実行することによって、実際に属性を設定します。

別のサブエージェントが、その PDU の SET は実行できないということを SNMP エージェントに通知した場合は、SNMP エージェントは既存の値を使ってマッパーに SET を渡します。

例外の報告

マスターエージェントのトラップ PDU を作成し、そのトラップをマスターエージェントに送信することによって、マッパーがマスターエージェントにトラップを報告します。

トラップは、DMI SP から発行される要求外通知メッセージによって発生します。このメッセージはインジケーションの 1 つです。構成要素から送られたインジケーションは、「イベント」と呼ばれます。マッパーは、SP の登録テーブルにエントリを追加することによって、SP に登録したあと、すべてのインジケーションを受け取ります。また、マッパーは、すべての種類のイベントを受け取るためにフィルタの条件を設定します。マッパーはエージェントからの要求をすでに待っているため、このルーチンは個別のスレッドになります。サブエージェントが、トラップと共に送る OID を決めます。インジケーションには、次のようなさまざまな種類のものがあります。

サブエージェントの停止

通常、snmpXdmid デーモンは、明示的に停止されたり、メモリー資源不足のような致命的な状況に遭遇したりしないかぎり、永続的に動作します。

MIF から MIB へのマップ

MIF から MIB へのマップでは、MIF から OID を割り当てる必要があります。トランスレータ (miftomib.EXE) によって、MIF 定義から拡張子が .MAP.MIB のファイルを構築できます。このトランスレータを、.MIB.MAP ファイルを生成するためのツールとして使うこともできます。また、テキストエディタを使って手動でマップファイルを生成することもできます。/var/dmi/map の下のディレクトリにあるすべての .MAP ファイルは走査され、サブエージェントの変換テーブルに取り込まれます。

図 6-2 MIF から MIB へのマップ

Graphic

マップファイルの書式を、表 6-2 に示します。

表 6-2 マップファイルの書式

OID 接頭辞 

構成要素名 

"1.3.6.1.4.1.42.2000.2" 

"Client Access/400 Family - Base Product" 

DMI のコンポーネント ID、グループ ID、および属性 ID を MIB のオブジェクト ID にマップすることを目的として設計されています。管理するエンティティでは、マッパーが MIF 定義へのマップに使用する MIB 定義をあらかじめ定義しておく必要があります。miftomib トランスレータを使って MIB マップファイルを生成すると、マップが容易になります。

マップファイルは、マッパーの外部に生成されます。新しい MIF 定義を動的に追加できるようにするには、システムの新しいファイルまたは更新されたファイルについてマッパーに通知するための機構が必要です。これは、マッパーがすべての .MAP ファイルを読み込み直すときに、dmispd によって生成された DmiGroupAdded インジケーションを使うことによって実現されます。

OID 接頭辞と、完成した OID レイアウトの例については、図 6-3 を参照してください。マッパーはマップファイルを使うことによって、OID を SNMP エージェントの中継に登録したり、OID を構成要素名と相互に関連付けたりします。グループに表形式のデータが含まれている場合は、マッピングファイルにコンポーネント ID とグループキーが含まれています。

マッパーでは、OID 接頭辞に制限はありません。OID 接頭辞は、ネットワーク管理者によって制御されます。SNMP マスターエージェントでサブツリーの登録ができるときは、.MAP ファイルにどんな OID を登録してもかまいません。OID の登録に失敗したときは、OID を修正するために .MAP ファイルを変更する必要があります。

図 6-3 MIB OID レイアウト

Graphic

オブジェクト識別子を構成する部分を次に示します。

クライアントのアクセス属性(キーなし)に対する OID の例を次に示します。

MIB テーブルではカラムからカラムに渡って検索が実行され、MIB テーブルでは行から行に渡って検索が実行されるため、GetNext の操作によってオブジェクトを検索するときは注意が必要です。

特殊なマップの考慮事項

DMI の仕様では、DMI SP に対して ComponentId=1 を予約しています。また、この仕様は、SP の MIF ファイルも定義します。.MAP ファイルを作成したり、miftomib ユーティリティにのコマンド行パラメタとして OID 設定を指定したりするときは、ネットワーク管理者はこれを考慮する必要があります。すべての MIF ファイルには、ID 1 の標準グループを含める必要があります。

表 6-3 DMI MIB に変換される ComponentID グループ

MIS オブジェクトの識別子と構文 

MIF データ 

説明 

注 

DMIcompindex

INTEGER (1...217483647) 

コンポーネント ID 

構成要素の一意の値 

SP によってインストール時に割り当てられる。インストールが解除されるまで、SP はこの構成要素とやりとりする。管理アプリケーションは、あとで属性を要求するためにこの ID を記録する 

DMIcompManufacture

DisplayString (0...64) 

属性「Manufacture」 

コンポーネントプロバイダによって割り当てられる値 

この構成要素を作成した組織の名前 

DMIcompProduct

DisplayString (0...64) 

属性「Product」 

コンポーネントプロバイダによって割り当てられる値 

構成要素の名前 

DMIcompVersion

DisplayString (0...64) 

属性「Version」 

コンポーネントプロバイダによって割り当てられる値 

構成要素のバージョン 

DMIcompSerialnumber

DisplayString (0...64) 

属性「Serial Number」 

コンポーネントプロバイダによって割り当てられる値 

構成要素のシリアル番号 

DMIcompInstallation

Date 

属性「Installation」 

インストール時に SP によって割り当てられる値 

日付と時刻から成る 28 オクテットの表示可能文字列 

DMIcompVerify

Integer (0...7) 

属性「Verify」 

インストール時のこの構成要素の検査レベル 

この属性を要求すると、構成要素がまだシステム内にあり、正しく動作しているかどうかが調べられる 

このマップを使うと、DMI を使ってインストールされる MIF は、管理アプリケーションに表示できる最小限の ComponentID グループを持つだけで済みます。このグループ内の属性はすべて、読み取り専用のアクセス権を持ちます。MIF が基準となって MIB に変換されると、グループ内の属性にアクセス可能となりますが、DmtfGroups ツリーにアンカーポイントが付きます。たとえば、ソフトウェア MIF が定義されていると、変換によって DMISW MIB が作成され、次のようにアンカーポイントが付けられます。

enterprise.sun.DmtfGroups.DMISW(2)

あるいは、次のようになります。

1.3.6.1.4.1.42.2000.3

管理アプリケーションでは、同じ構成要素が、DmtfGroups ツリーの 2 つの異なる枝に表示されるように設定されている必要があります。

追加の OID 接頭辞は、次のとおりです。

DMI マッパー構成ファイル

デフォルトの構成ファイル snmpXdmid.conf は、/etc/dmi/conf ディレクトリにあります。この代わりに、コマンド行オプションで、このプログラムに snmpXdmid.conf ファイルの位置を表わす別のパスを指定することもできます。

WARNING_TIMESTAMP

snmpXdmid は、インジケーションを受け取るために DMI SP に登録する必要があります。DMI 2.0 の仕様では、この登録は、特定のタイムスタンプまで有効です。SP は、登録を終了する前に、登録の警告通知を発行します。このタイムスタンプは、登録の警告通知が発行された時間を示します。

デフォルトの値は、次のとおりです。

WARNING_TIMESTAMP = 20101231110000.000000-420

EXPIRATION_TIMESTAMP

登録の期限が実際に切れる時刻を示します。登録し直さないかぎり、この時刻よりあとでにインジケーションを受け取ることはありません。デフォルトでは、実際にその登録が永久的に存在するように、かなり先のタイムスタンプが選択されます。この選択が行われると、snmpXdmid は、常にそのインジケーションの登録を SP に保存します。

デフォルトの値は、次のとおりです。

EXPIRATION_TIMESTAMP = 250101231120000.000000-420

FAILURE_THRESHOLD

DMI SP が xnmpXdmid にインジケーションを配信するときにエラーが発生した場合、インジケーションを破棄し登録のエントリをクリアする前に、インジケーションの配信を試みる回数を示します。

デフォルトの値は、次のとおりです。

FAILURE_THRESHOLD = 1

TRAP_FORWARD_TO_MAGENT

この値がゼロ以外の場合、snmpXdmid は、DMI SP のインジケーションに従った SNMP トラップを生成します。この値がゼロの場合、DMI SP のインジケーションに従った SNMP トラップを生成しません。

デフォルトの値は、次のとおりです。

TRAP_FORWARD_TO_MAGENT = 1

MIB ファイルの生成

通常、SNMP 管理アプリケーションは、管理データを定義する MIB を必要とします。SNMP マネージャにアクセスできるようにしたい各 MIF ファイルに対して、その MIF ファイルに対応する SNMP MIB を生成します。次に、DMI 構成要素と通信するために MIB の定義を使う管理アプリケーションに、MIB をロードします。管理アプリケーションは、ブラウザや他の MIB ベースのアプリケーションに対して MIB 情報を利用可能にすることもできます。

MIF ファイルから SNMP MIB を生成するには、コマンドプロンプトで miftomib ユーティリティを使います。MIB ファイルを作成したら、それを SNMP 管理アプリケーションに転送できます。