WBEM 用 SNMP サービスには、WBEM 用 SNMP アダプタおよび SNMP プロバイダという 2 つの要素があります。
この章の内容は以下のとおりです。
WBEM 用 SNMP アダプタは、システム管理者が使用することを意図して設計されたもので、Simple Network Management Protocol (SNMP) の管理アプリケーションが、Solaris WBEM Services によって提供されるシステム管理情報にアクセスすることを可能にします。
WBEM 用 SNMP アダプタは、snmpdx (Solstice Enterprise AgentsTM 技術のマスターエージェント) とともに使用して、SNMP 要求を、それと同等の WBEM の Common Information Model (CIM) プロパティまたはインスタンスに対応づけます。マスターエージェントについては、snmpdx(1M) のマニュアルページを参照してください。
また、WBEM 用 SNMP アダプタは、CIM Object Manager からの応答を SNMP 応答に再び対応付けて、それを管理アプリケーションに返します。
マッピングファイルには、対応する Object Identifier (OID)、クラス名、プロパティ名、Abstract Syntax Notation One (ASN.1) タイプが含まれます。ユーザーは独自のマッピングファイルを作成できます。
Solaris オペレーティング環境は、Solstice Enterprise Agents のマスターエージェントを起動する前に、WBEM サービスを初期化します。デフォルトでは、WBEM 用 SNMP アダプタ (以下、アダプタ) は無効にされています。しかし、アダプタを有効にしたあとは、Solstice Enterprise Agents のマスターエージェント (snmpdx) がアダプタを自動的に起動します。アダプタについては、snmpXwbemd(1M) のマニュアルページに説明があります。
SNMP Manager は、SNMP の Get 要求を Solstice Enterprise Agents のマスターエージェントに渡します。マスターエージェントは、そのあと、Get 要求をアダプタに送り、アダプタは /var/sadm/wbem/snmp/map にあるマッピングファイルを使って、Get 要求内のオブジェクトを対応する CIM オブジェクトに変換します。さらに、アダプタは、CIM オブジェクトを Get 要求内の SNMP オブジェクトに変換します。
現在のところ、Solaris 9 では、Get 要求とスカラーオブジェクトだけがサポートされています。Get-next 要求、Get-bulk 要求、Set 要求、およびその他のオブジェクトは、現在のところサポートされていません。
アダプタは、このディレクトリを英数字順に検索して、拡張子 .map が付いている最初のファイルを見つけます。そのあと、アダプタは、ディレクトリ内のすべてのマッピングファイルを読み取り、その内容をキャッシュに書き込みます。アダプタは、これらのファイルの内容を使って、Get 要求の中に指定されたオブジェクトを、対応する CIM オブジェクトに変換します。アダプタは、ディレクトリ内の後続のマッピングファイルにある重複した OID を無視します。たとえば、次の OID が 002SUNWlvma.map にある場合、
1.3.6.1.2.1.1.1.0 My_ComputerSystem Description SnmpString
それと同じ次の OID が 050SUNWwbcou.map (アダプタはこのファイルを 002SUNWlvma.map よりあとに読み取る) にもあると、
1.3.6.1.2.1.1.1.0 Solaris_ComputerSystem Description SnmpString
アダプタは、050SUNWwbcou.map に指定された OID を無視します。
次いで、アダプタは、SNMP Manager が送信した各 Get 要求に対して、Get 応答を生成します。アダプタは、マッピングファイル内に対応する項目を見つけられない場合、Get 応答エラーを返します。
WBEM 用 SNMP アダプタがリリースされるまでは、SNMP Manager が SNMP MIB-2 変数のための Get 要求を Solstice Enterprise Agents のマスターエージェントに送信すると、マスターエージェントはその要求を Sun SNMP MIB-2 エージェント ( mibiisa) に転送していました。アダプタが SNMP MIB-2 要求も処理することから考えると、Sun SNMP エージェントと WBEM 用 SNMP アダプタが両方同時に実行されている場合には、どうなるのでしょうか。マスターエージェントは要求をどのように転送するのでしょうか。
マスターエージェントは、各サブエージェント登録ファイルで定義されているサブツリーに基づいてノードテーブルを構築します。mibiisa サブエージェントは、MIB-2 サブツリー全体と、Sun Microsystems MIB サブツリーを登録します。アダプタは、MIB-2.system サブツリーと hostRsrc サブツリーを登録します。マスターエージェントは、2 つのエージェントが同じサブツリーを登録することを許可しません。
Sun SNMP MIB-2 エージェントについては、mibiisa(1M) のマニュアルページを参照してください。マスターエージェントについては、『Solstice Enterprise Agents 1.0 ユーザーズガイド』を参照してください。
初期化の際に、マスターエージェントは、登録されている各サブツリーを含むノードテーブルを作成します。マスターエージェントは、各 Get 要求を、その要求に含まれている OID が最も適しているサブツリーのエージェントに転送します。たとえば、mib-2.system.5.0 に対する要求は、アダプタに転送されます。一方、mib-2.interfaces.1.0 に対する要求は、mibiisa サブエージェントに転送されます。マスターエージェントによって登録されたどのサブツリー内にも定義されていない OID の場合は、マスターエージェントは Get 応答でエラーを返します。
WBEM 用 SNMP アダプタは、SNMP V1 の要求だけをサポートしています。
この節では、WBEM 用 SNMP アダプタを構成するために使用するファイルについて説明します。そのファイルは、 /etc/snmp/conf/ にあります。
snmpXwbem.acl では、アダプタに関連付けられるアクセス制御リストの方針を、次の書式で定義します。
#pragma ident "@(#)snmpXwbem.acl 1.2 01/04/18 SMI" #Copyright (c) 2001 by Sun Microsystems, Inc. #All rights reserved. # WBEM の SNMP サブエージェントの構成ファイル ################## # アクセス制御 # ################## # MIB 全体に対する読み取りおよび書き込みアクセスに必要な # コミュニティ名のリスト # リストが空の場合、有効なコミュニティ名は "public" だけで、 # そのアクセスタイプは読み取り専用 # # managers リストに * がある場合は、任意のホストから # 要求を受け取り可能であることを示している acl = { { communities = public, private access = read-only managers = * } } ################### # トラップパラメータ # ################### trap = { }
複数のコミュニティおよびマネージャをコンマで区切って指定できます。アクセス方針は読み取り専用です。空の trap 句が必要です。Solaris 9 では、アダプタによってトラップはサポートされません。
snmpXwbem.reg では、アダプタが担当するサブツリーのオブジェクト識別子 (OID) を、次の書式で定義します。
#pragma ident "@(#)snmpXwbem.reg 1.3 01/10/04 SMI" # #Copyright (c) 2001 by Sun Microsystems, Inc. #All rights reserved. # WBEM の SNMP サブエージェントの構成ファイル ########## # マクロ # ########## # 次の 3 つのマクロが事前に定義されている # # mib-2 = 1.3.6.1.2.1 # enterprise = 1.3.6.1.4.1 # sun = 1.3.6.1.4.1.42 # # 独自のマクロを定義すれば、エージェントを定義するときに、 # OID ではなく文字列を操作できる # このあとのエージェントセクションを参照 macros = { system = mib-2.1 hostRsrc = mib-2.25 } ############# # エージェント# ############# # 次のフィールドは必ず指定する必要がある # # - name: エージェントの名前 (たとえば、エージェントの # 実行可能ファイルの名前) # # - subtrees: エージェントがサポートしている OID / OID のサブツリーの # リスト。リストに含める項目はコンマで区切らなければならない # # # さらに、次のフィールドを変更または追加できる # # - timeout: SNMP Relay がエージェントからの応答を待機する # マイクロ秒数 # # - watch-dog-time: サブエージェントがアクティブかどうかをテストするために # SNMP Relay が待機する秒数。watch-dog-time に指定された秒数 # の間、何かの活動があったかどうかがテストされる # # - port: エージェントを起動する UDP ポート番号 # agents = { { name = "WBEMsubagent" subtrees = { system, hostRsrc } timeout = 20000000 watch-dog-time = 240 } }
timeout の単位はマイクロ秒です。watch-dog-time の単位は秒です。デフォルトでは、マスターエージェントは 4 分 (または、watch-dog-time に設定された秒数) ごとにアダプタを起動しようとします。
マスターエージェントは、アダプタによって使用されるポートを自動的に判別します。
snmpXwbem.rsrc- では、登録ファイルへのポインタを定義し、SNMP マスターエージェントがアダプタをどのように起動するかを次のような書式で定義します。
#pragma ident "@(#)snmpXwbem.rsrc- 1.2 01/04/18 SMI" #Copyright (c) 2001 by Sun Microsystems, Inc. #All rights reserved. # WBEM の SNMP サブエージェント構成ファイル ############## # エージェント # ############## resource = { { registration_file = "/etc/snmp/conf/snmpXwbem.reg" security = "/etc/snmp/conf/snmpXwbem.acl" policy = "spawn" type = "legacy" command = "/usr/sadm/lib/wbem/snmpXwbemd -p $PORT" } }
マスターエージェントが Get 要求を WBEM 用 SNMP アダプタに渡すと、アダプタは、/var/sadm/wbem/snmp/map にあるマッピングファイルを使用して、その Get 要求を CIM オブジェクト要求に変換します。Solaris オペレーティング環境では、マッピングファイルがこのディレクトリに組み込まれています。さらに、SNMP Manager を使用して表示したい CIM 計測について、独自のマッピングファイルを定義することもできます。
この節では、Solaris オペレーティング環境が提供しているマッピングファイルの内容を紹介し、アダプタのマッピングファイルを作成するために知っておく必要のある事項を説明します。
この例は、Solaris オペレーティング環境に組み込まれているマッピングファイルの内容を示しています。
# #pragma ident "@(#)050SUNWwbcou.map 1.0 01/04/03 SMI" # # Copyright (c) 2001 by Sun Microsystems, Inc. # All rights reserved. # # *** 内容の説明 *** # # コメント行とブランク行以外の最初の行は、必須のバージョンラベルを含む # それ以降のコメント行とブランク行以外の行は、マッピング項目とみなされ、このあとの # 説明に従って利用される # # 列 1 - SNMP OID - SNMP 変数を一意に記述する # 例 2 - CIM クラス名 - この変数に関連付けられた CIM クラス # 列 3 - CIM プロパティ名 - SNMP OID 変数に対応する CIM プロパティ # 列 4 - ASN.1 型 - SNMP 要求との間でデータがどのように対応付けられるかを示す # SNMP データ型。サポートされている型: SnmpString、SnmpOid、 # SnmpTimeticks、SnmpCounter、SnmpInt、SnmpGauge、SnmpIpAddress、 # SnmpOpaque # 列 5 以降は無視される # Version 1.0 1.3.6.1.2.1.1.1.0 Solaris_ComputerSystem Description SnmpString 1.3.6.1.2.1.1.3.0 Solaris_OperatingSystem LastBootUpTime SnmpTimeticks 1.3.6.1.2.1.1.4.0 Solaris_ComputerSystem PrimaryOwnerContact SnmpString 1.3.6.1.2.1.1.5.0 Solaris_ComputerSystem Name SnmpString 1.3.6.1.2.1.25.1.5.0 Solaris_OperatingSystem NumberOfUsers SnmpGauge 1.3.6.1.2.1.25.1.6.0 Solaris_OperatingSystem NumberOfProcesses SnmpGauge 1.3.6.1.2.1.25.1.7.0 Solaris_OperatingSystem MaxNumberOfProcesses SnmpGauge 1.3.6.1.2.1.25.1.2.0 Solaris_OperatingSystem LocalDateTime SnmpString |
このマッピングファイルの内容は、SNMP MIB-2 システムグループのスカラーオブジェクトを、それぞれ対応する CIM オブジェクトに関連付けています。
MIB-2 システムグループのスカラーオブジェクト |
CIM オブジェクト |
---|---|
sysDescr |
Solaris_ComputerSystem.Description |
sysUpTime |
Solaris_OperatingSystem.LastBootUpTime |
sysContact |
Solaris_ComputerSystem.PrimaryOwnerContact |
sysName |
Solaris_ComputerSystem.Name |
さらに、このマッピングファイルの内容は、SNMP Host Resources MIB オブジェクトを、それぞれ対応する CIM オブジェクトに関連付けています。
SNMP Host Resources MIB オブジェクト |
CIM オブジェクト |
---|---|
hrSystemNumUsers |
Solaris_OperatingSystem.NumberOfUsers |
hrSystemProcesses |
Solaris_OperatingSystem.NumberOfProcesses |
hrSystemMaxProcesses |
Solaris_OperatingSystem.MaxNumberOfProcesses |
hrSystemDate |
Solaris_OperatingSystem.LocalDateTime |
マッピングファイルの内容の構文については、「マッピングファイルの内容の構文」で説明します。
現在のところ、ホストリソースデータを取得する唯一の方法は、CIM Object Manager を使用することです。これは、Solaris が現在、SNMP Host Resource エージェントを提供していないためです。
アダプタが確実にマッピングファイルを読み取るようにするには、次の構文に従ってファイル名を付けます。
alphanumeric-string.map
alphanumeric-string は、英数字の文字列を表します。たとえば、Solaris が組み込んでいるマッピングファイルの名前は、次のとおりです。
050SUNWwbcou.map
アダプタが、より正確な順序でファイルを読み取るようにするため、先頭に 3 桁の数字を付けます。たとえば、002SUNWlvma.map は 050SUNWwbcou.map より前に読み取られます。
少なくとも root は、独自に作成したマッピングファイルを読み取ることができるようにする必要があります。
$ chmod 400 002SUNWlvma.map
次の表は、WBEM 用 SNMP アダプタ (以降、アダプタ) をインストール、起動、停止、および使用するために従う必要のある手順を示しています。
作業 |
説明 |
参照先 |
---|---|---|
WBEM 用 SNMP アダプタをインストールする |
Solaris オペレーティング環境をインストールする時に、アダプタをインストールする | |
WBEM 用 SNMP アダプタを起動する |
snmpXwbem.rsrc- を snmpXwbem.rsrc に移動することによって WBEM 用 SNMP アダプタを起動する | |
WBEM 用 SNMP アダプタを無効にする、または停止する |
pkill コマンドを使用することによって、WBEM 用 SNMP アダプタを停止する | |
WBEM 用 SNMP アダプタにマッピングファイルディレクトリを再び強制的に読み取らせる |
snmpXwbem.reg を更新して新しいサブツリーを組み込み pkill コマンドを使用することにより、WBEM 用 Solaris アダプタにマッピングファイルディレクトリを再び強制的に読み取らせる |
この節では、WBEM 用 SNMP アダプタをインストール、起動、停止、および使用する方法について説明します。
SNMP アプリケーションを使用して CIM Object Manager からデータを取得する準備ができたら、このあとの手順に従って、アダプタを起動します。
スーパーユーザーになります。
マスターエージェントを停止します。
# /etc/init.d/init.snmpdx stop |
ディレクトリを /etc/snmp/conf に変更します。
snmpXwbem.rsrc- をアダプタリソースファイルに移動します。
# mv snmpXwbem.rsrc- snmpXwbem.rsrc |
マスターエージェントを再起動します。
# /etc/init.d/init.snmpdx start |
CIM Object Manager からのデータの取得が完了したとき、または /etc/snmp/conf にあるファイルを変更する場合には、アダプタを使用不可にする必要があります。次の手順に従ってください。
スーパーユーザーになります。
マスターエージェントを停止します。
# /etc/init.d/init.snmpdx stop |
アダプタを停止します。
# /usr/bin/pkill -9 -x -u 0 snmpXwbemd |
ディレクトリを /etc/snmp/conf に変更します。
snmpXwbem.rsrc の名前を一時的に変更します。
# mv snmpXwbem.rsrc snmpXwbem.rsrc- |
マスターエージェントを再起動します。
# /etc/init.d/init.snmpdx start |
/var/sadm/wbem/snmp/map に新しいマッピングファイルを置いたり、そのディレクトリ内の既存のマッピングファイルを更新したりしたあとは、ディレクトリ内のすべてのマッピングファイルを再度読み取るようにアダプタに通知しなければなりません。アダプタに通知するには、シグナル SIGHUP を指定します。
次の手順に従って、アダプタにすべてのマッピングファイルを再び強制的に読み取らせてください (CIM Object Manager を再起動する必要はありません)。
スーパーユーザーになります。
新しいマッピングファイル、またはマッピングファイル内の新しい項目が、アダプタによって登録されていないサブツリーを参照しているかどうか確認します。
参照している場合は、次の手順に進みます。
参照していない場合は、手順 5 に進みます。
/etc/snmp/conf/snmpXwbem.reg を更新して、新しいサブツリーを組み込みます。
マスターエージェントを停止し、再起動します。
# /etc/init.d/init.snmpdx stop
# /etc/init.d/init.snmpdx start
アダプタに、マッピングファイルを更新したことを通知します。
# /usr/bin/pkill -1 -x -u 0 snmpXwbemd |
この節では、アダプタを使用しているときに、発生する可能性のあるコンソールエラーメッセージを取り上げます。
この節で説明されていないエラー、問題、または予期しない結果が発生した場合、またはもっと綿密に障害追跡したい場合には、Solaris Management Console のログビューアを使ってログデータを調査してください。
Solaris Management Console のログビューアを起動する方法についての説明は、「ログビューアを使ってログデータを調べる」 を参照してください。
ERROR: sending request to Adapter Service. |
ERROR: receiving request from Adapter Service. |
snmpXwbemd は WBEM が有効だと認識したにもかかわらず、Adapter Service と通信できなかったか、要求がタイムアウトになったかのいずれかです。
別の要求を送信します。別の要求の送信にも失敗する場合は、要求および応答の FIFO に保留状態のメッセージが含まれていない (つまり、含まれているのが 0 バイトである) ことを確認します。
次のコマンドを入力します。
# cd /var/sadm/wbem/snmp
次のコマンドを入力します。
# ls -l
要求および応答の FIFO の一覧が表示されます。
要求と応答のどちらかの FIFO に保留状態のメッセージが含まれて (0 バイトより多く含まれて) いるかどうかを確認します。
含まれている場合、手順 4 に進みます。
含まれていない場合、次のようにします。
Solaris Management Console のログビューアを使ってログデータを調べ、問題を判別することにより、WBEM を停止させる必要があるかどうか確認します。
Solaris Management Console のログビューアを起動する方法についての説明は、「ログビューアを使ってログデータを調べる」を参照してください。
必要な場合は、WBEM を停止します。
# /etc/init.d/init.wbem stop
手順 9 に進みます。
WBEM を停止します。
# /etc/init.d/init.wbem stop
マスターエージェントを停止します。
# /etc/init.d/init.snmpdx stop
FIFO のあるディレクトリに変更します。
# cd /var/sadm/wbem/snmp
要求と応答の両方の FIFO を削除します。
# rm _adapter_rcv.fifo
# rm _adapter_snd.fifo
マスターエージェントを再起動します。
# /etc/init.d/init.snmpdx start
手順 3 または 手順 4 で WBEM を停止した場合は、それを再起動します。
# /etc/init.d/init.wbem start
ERROR: request FIFO cannot be opened. |
ERROR: response FIFO cannot be opened. |
アダプタが要求を受信したとき、またはアダプタが応答を処理したときに、プロトコルの問題が発生しました。
別の要求を送信します。別の要求の送信にも失敗する場合は、要求および応答の FIFO に保留状態のメッセージが含まれていない (つまり、含まれているのが 0 バイトである) ことを確認します。
次のコマンドを入力します。
# cd /var/sadm/wbem/snmp
次のコマンドを入力します。
# ls -l
要求および応答の FIFO の一覧が表示されます。
要求と応答のどちらかの FIFO に保留状態のメッセージが含まれて (0 バイトより多く含まれて) いるかどうかを確認します。
含まれている場合、手順 4 に進みます。
含まれていない場合、次のようにします。
Solaris Management Console のログビューアを使ってログデータを調べ、問題を判別することにより、WBEM を停止させる必要があるかどうか確認します。
Solaris Management Console のログビューアを起動する方法についての説明は、「ログビューアを使ってログデータを調べる」を参照してください。
必要な場合は、WBEM を停止します。
# /etc/init.d/init.wbem stop
手順 9 に進みます。
WBEM を停止します。
# /etc/init.d/init.wbem stop
マスターエージェントを停止します。
# /etc/init.d/init.snmpdx stop
FIFO のあるディレクトリに変更します。
# cd /var/sadm/wbem/snmp
要求と応答の両方の FIFO を削除します。
# rm _adapter_rcv.fifo
# rm _adapter_snd.fifo
マスターエージェントを再起動します。
# /etc/init.d/init.snmpdx start
手順 3 または 手順 4 で WBEM を停止した場合は、それを再起動します。
# /etc/init.d/init.wbem start
ERROR: FIFO cannot be created. |
アダプタが要求または応答 FIFO を作成しようとした時にシステムエラーが発生しました。
/var/sadm/wbem/snmp が存在すること、および書き込み権を持っていることを確認します。
ERROR: WBEM Services are not started. |
マスターエージェントが、WBEM サービスが起動して実行中であるかどうかを検出できません。
WBEM を再起動して、snmpXwbem.reg で watch-dog-time に設定された秒数だけ待ちます。
# /etc/init.d/init.wbem start |
設定された秒数が経過すると、マスターエージェントがアダプタを自動的に起動します。デフォルトでは、マスターエージェントは 4 分 (または、watch-dog-time に設定された秒数) ごとにアダプタを起動しようとします。
マスターエージェントがアダプタを自動的に起動するまで待てない場合は、マスターエージェントを停止してから再起動します。
# /etc/init.d/init.snmpdx stop
# /etc/init.d/init.snmpdx start
マスターエージェントは、ただちにアダプタを起動します。
SNMP プロバイダ は、管理要素についての情報を CIM Object Manager に提供するソフトウェアコンポーネントであり、提供する情報には、SNMP デバイスについての構成情報が含まれます。
SNMP プロバイダは、ポート 162 で SNMP V1 および SNMP V2 トラップを待機することにより、トラップをサポートします。これらのトラップによって生成されたイベントを表示するには、CIM_SNMPTrapIndication を選択しなければなりません。
SNMP プロバイダを使用して Simple Network Management Protocol (SNMP) 情報にアクセスしたいときは、Management Information Base (MIB) ファイルを使用して Managed Object Format (MOF) ファイルを生成します。mib2mof コマンドは、CIM クラスに対して実行される MOF ファイル内の CIM 操作を、SNMP Provider が SNMP 操作に対応付けることを可能にする修飾子を生成します。mib2mof コマンドについては、mib2mof(1M) マニュアルページを参照してください。
SNMP プロバイダは、SNMP トラップをサポートします。トラップは、CIM プロセスのインジケーションイベント CIM_SNMPTrapIndication として報告されます。クライアントがこのイベントのプロバイダに参加すると、そのプロバイダはポート 162 で SNMP V1 および SNMP V2 トラップを待機します。情報は、トラップからインジケーションにコピーされます。そのあと、インジケーションがクライアントに送信されます。
CIM スキーマおよび Solaris スキーマを記述した MOF ファイルは、/usr/sadm/mof にあります。MOF ファイルについては、『Solaris WBEM SDK 開発ガイド』を参照してください。