エージェントにはそれぞれ、固有のエージェント登録ファイルがあります。このため、マスターエージェントとサブエージェントがそれぞれに変更を加えたファイルを持つことになります。登録ファイルには、それぞれのエージェントに直接関係のある情報が収められています。また、エージェントの名前、エージェントによって管理されているサブツリー OID、要求のタイムアウト、選択されたポート番号も含まれています。このファイル内の各エントリの書式の例を次に示します。
<Config> : <Macro> <Agents> <Macro> : "macros" "=" "{" <MacrosList>"}" <MacrosList> : <MacrosList> <MacroItem> | empty <MacroItem> : label "=" <SubidList> <SubidsLis> : <SubidsList> "." <Subid> | <Subid> <Subid> : "mib2" | "sun" | "enterprise" | identifier | number <Agents> : "agents" "=" "{" <AgentList> "}" <AgentList> : <AgentList> <AgentItem> | <AgentItem> <AgentItem> : "{" <Name> <SubtreesTables> <TimeOut> <WatchDogTimer> <Port>"}" <Name> : label "=" quotestring <SubtreesTables> : <SubtreesTables> | <Subtrees> | <Tables> <Subtrees> : "subtrees" "=" "{" <SubtreesList> "}" <SubtreesList> : <SubtreesList> "," <SubtreeItem> | <SubtreeItem> | empty <SubtreeItem> : <SubidsList> <Tables> : "tables" "=" "{" <TableList>"}" <TableList> : <TableList> <TableItem> | empty| <TableItem> : "{" <Table> <Columns> <Indexs> "}" <Table> : "table" "=" <SubidsList> <Columns> : "column" "=" <Range> <Range> : "[" number "]" | number <Index>s : "indexs" "=" <Range> <TimeOut> : "timeout" "=" number <WatchDogTimer>: "watch-dog-time" "=" number <Port> : "port" = number
登録ファイルの名前には、拡張子を付けることができます。その場合、reg という拡張子にすることをお勧めします。実際のサブツリーのファイルの例を次に示します。
macros = { applicationTable = mib-2.27 sun = enterprise.42 } agents = { { name = "ExampleAgent" subtrees = { mib-2, sun } tables = { { #begin table table = applicationTable columns = [ 2 -15 ] indexes = [ 2 -3 ] } #end table } #end of tables timeout = 20000 # Optional. Each SNMP request time out. This is in microseconds. watch_dog_time = 300 # This is in seconds port = 4000 # Optional } } #end of agents
この構成ファイルは、次のような 2 つの情報のグループで構成されています。
name - この変数には、サブエージェントの名前を指定します。別のプロセスとして呼び出される複数のエージェントの実行形式ファイルが同じでも、エージェント名は一意でなければなりません。マスターエージェントは、エージェントテーブル MIB 内のキーとしてエージェント名を使います。
subtrees - この変数には、特定のエージェントによって管理されているサブツリー OID のリストを指定します。サブエージェントは複数のツリーを管理できます。前述のサブツリーの例では、ExampleAgent という名前のエージェントが、mib-2 と sun というサブツリーを管理しています。
tables - MIB テーブル全体またはテーブルの一部を管理するように、サブエージェント登録ファイルを構成できます。tables グループには、テーブル名、カラム番号、および特定の行番号 (indexes) を指定します。前述のサブツリーの例では、ExampleAgent が、サブツリー mib-2 と sun のほかに、そのアプリケーションテーブルのカラム 2〜15 と行 2〜3 を管理しています。
timeout - timeout 変数はマスターエージェントに登録されます。マスターエージェントは、timeout で指定された時間 (単位 : マイクロ秒)、SNMP 要求に対する応答を受信するのを待ちます。timeout には、マスターエージェントのリソース構成ファイルであらかじめ定義されている max_agent_time_out を超えない適切な値を設定します。
watch_dog_time - マスターエージェントはこのタイムアウトを使って、サブエージェントが実行状態であるかどうかを判断します。watch_dog_time の間にマスターエージェントとサブエージェントのあいだにアクティビティがない場合にだけ、マスターエージェントはサブエージェントに対してポーリングを行います。
port - マスターエージェントから SNMP 要求を受信するためにサブエージェントが待機しているポート番号を指定します。この変数は省略可能です。通常、サブエージェントは、この変数に値を割り当てません。この変数が構成ファイルにない場合、マスターエージェントは、オープンしていないポートを検索し、そのポート番号を使用して各サブエージェントを呼び出します。port に値が割り当てられている場合、マスターエージェントは、その特定のポート番号を使用してサブエージェントを呼び出します。サブエージェントは、マスターエージェントのリソースファイル内の command 変数に従って呼び出されます。
Solstice Enterprise Agents のライブラリを使って開発された動的なエージェントは、マスターエージェントで呼び出す必要はありません。この場合は、マスターエージェントのリソースファイル内には、そのようなエージェントに対するエントリがないことがあります。このようなエージェントは、エージェント自身で利用可能なポートをオープンします。