エージェントリソース構成ファイルは、マスターエージェントによってのみ使用されます。マスターエージェントが実行状態になった直後に、このファイルが読み込まれます。 このファイルには、マスターエージェントが管理するすべてのエージェントについての情報が保存されます。この構成ファイル内の各エントリには、サブエージェントの起動方法も指定されています。サブエージェントに構成ファイルがなくても、そのサブエージェントが動作可能になると、動的にマスターエージェントに登録されます。サブエージェントの動的な呼び出しと登録の詳細は、「サブエージェントについて」を参照してください。
エージェントに対してマスターエージェントによる呼び出しと静的な登録が選択されていると、そのエージェントは独自のリソース構成ファイルを持つことができます。このファイルには、サブエージェントの呼び出しに関する情報に加えて、サブエージェントに関連付けられている登録ファイルについての情報が含まれています。エージェント登録ファイルについては、「エージェント登録ファイル」を参照してください。
<ResourceFile> : Resource | Environment Resource <Resource> : "resource" "=" "{" ResourceList "}" <ResourceList> : /*empty*/ | ResourceList ResourceItem <ResourceItem> : "{" StringList "}" <Environment> : "environment" "=" "{" EnvironmentList "}" <EnvironmentList> : /*empty*/ | EnvironmentList EnvironmentListItem <EnvironmentListItem> : EnvironmentToken "=" Number <EnvironmentToken> : "poll-interval" | "Max-agent-time-out" <Number> : Integer <StringList>: StringItem | StringList StringItem <StringItem> : StringToken "=" QuotedString <StringToken> : "registration_file" |"policy" | "command" |'type"|"user" <QuotedString> : """ AlphanumericString """
snmpdx.rsrc ファイルと mibiisa.rsrc ファイルの例を次に示します。
構成ファイルで使う変数は、例のように記述します。コメント行は、# の文字で始めます。
snmpdx.rsrc environment = { poll-interval = 5 # This is in seconds max-agent-time_out = 10000000 # This is microseconds } mibiisa.rsrc resource = { { registration_file = /etc/snmp/conf/mibiisa.reg security = "/etc/snmp/conf/snmpd.conf type = "legacy" policy = "spawn" command = "/usr/lib/bin/mibiisa -p $PORT" } }
environment グループは、マスターエージェントのふるまいを制御します。このグループには、次の 2 つの変数が含まれます。
poll-interval - このフィールドの値は、秒単位で指定します。マスターエージェントは、指定した間隔をおいて SNMP メッセージの送受信以外の処理を実行します。また、すべてのエージェントが応答するかどうかを調べることによって、リソースファイルに変更が発生したことがわかると、機能を維持するために必要となる定型的な処理を行います。
max-agent-time-out - このフィールドの値は、マイクロ秒単位で指定します。この変数は、サブエージェントが登録の際に要求できる最大許容タイムアウト値を表します。たとえば、マスターエージェントは、サブエージェントに要求を送るとタイムアウトの間は応答を受信するのを待ちます。このタイムアウト値は、登録ファイル内で指定します。または、動的登録によって指定されることもあります。エージェントがこのタイムアウト値にあまりにも大きな値を設定すると、マスターエージェントや他のエージェントで問題が生じます。そのような問題を避けるために、マスターエージェントがサブエージェントからの応答を待つタイムアウトの最大値を、マスターエージェントで指定する必要があります。そのタイムアウトの最大値が、この変数を使って指定できる最大許容タイムアウト値です。
resource グループの変数は、サブエージェントにだけ関係します。前述の例の構成ファイルには、2 つのエントリが含まれています。各エントリはそれぞれのサブエージェントに対応しています。エントリには、値の指定された次の変数を記述できます。
registration_file - このフィールドには、それぞれのサブエージェントの登録構成ファイルを指定します。マスターエージェントは、このフィールドに指定されたファイルからさまざまなエントリを読み込み、MIB テーブルに適切なエントリを作成します。このファイルの詳細は、「エージェント登録ファイル」を参照してください。このエントリは、すべてのレガシータイプのエージェントに必須です。この変数にフルパスで値が指定されていなければ、プログラムは、デフォルトのディレクトリ /etc/snmp/conf を調べます。
policy - このフィールドには、load および spawn の 2 つの値を指定できます。値に load が指定されていると、マスターエージェントは登録エントリを読み込んで、MIB テーブルの行エントリを作成します。値に spawn が指定されていると、マスターエージェントは、command フィールドの指定内容に従ってそれぞれのサブエージェントを呼び出します。
command - このフィールドには、サブエージェントの実行形式の名前を指定します。command にはフルパスを指定します。この変数にフルパスで値が指定されていなければ、プログラムは、デフォルトのディレクトリ /usr/lib/bin を調べます。command では、 $PORT マクロを使用して、サブエージェントが SNMP 要求を受信するポート番号を指定することができます。$PORT の値は、各サブエージェントの登録ファイルの内容に従ってマスターエージェントが割り当てます。$PORT マクロが必要とされるのは、レガシーエージェントやサブエージェントが、-p、-n、-port などのポートオプションに対して異なる引数を取ることがあるためです。