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

Enterprise Agents の構成

Enterprise Agents の概要

次のファイルは、構成用に使用されます。

エージェントリソース構成ファイル

エージェントリソース構成ファイルは、マスターエージェントによってのみ使用されます。マスターエージェントが実行状態になった直後に、このファイルが読み込まれます。 このファイルには、マスターエージェントが管理するすべてのエージェントについての情報が保存されます。この構成ファイル内の各エントリには、サブエージェントの起動方法も指定されています。サブエージェントに構成ファイルがなくても、そのサブエージェントが動作可能になると、動的にマスターエージェントに登録されます。サブエージェントの動的な呼び出しと登録の詳細は、「サブエージェントについて」を参照してください。

エージェントに対してマスターエージェントによる呼び出しと静的な登録が選択されていると、そのエージェントは独自のリソース構成ファイルを持つことができます。このファイルには、サブエージェントの呼び出しに関する情報に加えて、サブエージェントに関連付けられている登録ファイルについての情報が含まれています。エージェント登録ファイルについては、「エージェント登録ファイル」を参照してください。

リソース構成ファイルの記述例を次に示します。

<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 グループ

environment グループは、マスターエージェントのふるまいを制御します。このグループには、次の 2 つの変数が含まれます。

resource グループ

resource グループの変数は、サブエージェントにだけ関係します。前述の例の構成ファイルには、2 つのエントリが含まれています。各エントリはそれぞれのサブエージェントに対応しています。エントリには、値の指定された次の変数を記述できます。

エージェント登録ファイル

エージェントにはそれぞれ、固有のエージェント登録ファイルがあります。このため、マスターエージェントとサブエージェントがそれぞれに変更を加えたファイルを持つことになります。登録ファイルには、それぞれのエージェントに直接関係のある情報が収められています。また、エージェントの名前、エージェントによって管理されているサブツリー 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 つの情報のグループで構成されています。

agents グループで使われる変数は、次のとおりです。


注 -

Solstice Enterprise Agents のライブラリを使って開発された動的なエージェントは、マスターエージェントで呼び出す必要はありません。この場合は、マスターエージェントのリソースファイル内には、そのようなエージェントに対するエントリがないことがあります。このようなエージェントは、エージェント自身で利用可能なポートをオープンします。


エージェントアクセス制御ファイル

エージェントアクセス制御ファイルは、SNMP 関連のコミュニティ情報を保存する構成ファイルです。各サブエージェントとマスターエージェントには、独自のアクセス制御ファイルがあります。このファイル名には拡張子を付けることができます。ただし、拡張子は acl にすることをお勧めします。このファイルは、/etc/snmp/conf というディレクトリに保存する必要があります。

アクセス制御構成ファイルの構文の例を次に示します。

<snmp_security> : <acls> <trap_block>
<acls> : /*empty*/ | "acl" "=" {<acls_list> }
<acls_list> : /*empty*/ | <acls_list> <acl_item>
<acl_item> : {<communities_stmt> <acl_access> <hosts> }
<communities_stmt> : "communities" "=" <communities_set>
<communities_set> : <communities_set> , <community_elem> |
<community_elem>
<community_elem>: alphanumeric_string
<acl_access> : "access" "=" <acl_access_type>
<acl_access_type> : read-only | read-write
<hosts> : "managers" "=" <hosts_list>
<hosts_list> : <hosts_list> , <host_item> | <host_item>
<host_item> : alphanumeric_string
<trap_block> : "trap" "=" { <traps_list> }
<traps_list> : /*empty*/ | <trap_list> < trap_item>
<trap_item> : { <trap_community_string> <trap_interest_hosts>
<enterprise_list> }
<trap_community_string> : "trap-community" "=" alphanumeric_string
<trap_interest_hosts_list> : <trap_interest_hosts_list> ,
<trap_interest_host_item> |
<trap_interest_host_item>
<trap_interest_host_item> : alphanumeric_string
<enterprise_list> : /*empty*/ | <enterprise_list> <enterprise_item>
<enterprise_item> : { <enterprise_stmt> <trap_number_stmt> }
<enterprise_stmt> : "enterprise" "=" quouted_alphanumeric_string
<trap_number_stmt> : "trap-num" "=" <trap_number_list>
<trap_number_list> : <trap_number_item>
<trap_number_item> : <trap_range>
<trap_range> : integer - integer | integer

アクセス制御リストファイルの例を次に示します。

acl = {
{
communities = public, private
access = read-only
managers = hubble, snowbell, nanak
}
{
communities = jerry
access = read-write
managers = hubble, telescope
}
}
trap = {
  {
        trap-community = SNMP-trap
        hosts = hubble, snowbell
        { enterprise = "Sun"
          trap-num = 1, 2-5
        }
        {
          enterprise = "3Com"
          trap-num = 4 }
        }
        {
        trap-community = competitor-trap
        hosts = hp_server, ibm_server, sgi
        {
        enterprise = "sun"
        trap-num = 1,3 }
        {
        enterprise = "snmp"
        trap-num = 1-32
        }

    }

}

アクセス制御リストファイルには、2 つのグループの構成変数が保存されています。

マスターエージェント状態ファイル

マスターエージェントの状態ファイルには、マスターエージェントによって生成されたさまざまなサブエージェントに関する情報が保存されています。マスターエージェントのみがこのファイルを使用します。マスターエージェントはこのファイルに情報を動的に追加します。そのため、その情報を自分で編集する必要はありません。マスターエージェントがサブエージェントのプロセスを生成するたびに、このファイルにエントリが作成されます。このファイルは、マスターエージェントに障害が生じて動作しなくなってしまった場合に、マスターエージェントを復旧するためのものです。マスターエージェントを再起動すると、このファイル内のエントリによって、以前に作成されたサブエージェントや対応するポート番号が示されます。マスターエージェントは、このファイル内の各エントリを読み込み、それをマスターエージェントのリソース構成ファイル内のエントリと比較します。そのエントリがリソースファイル内になければ、マスターエージェントはそのプロセスを終了します。エントリが両方のファイル内に存在する場合、マスターエージェントはポートを使用してサブエージェントへのアクセスを試みます。

MIB の発行

Solstice Enterprise Agents 技術を有効利用するために、サン・マイクロシステムズ社固有の企業 MIB OID 配下にテーブルが 3 つ定義されています。次のテーブルの例は、すべてのサブエージェントの管理特性を提供するためのものです。このテーブル内の情報で、サブエージェントに固有の情報を提供しています。このテーブルには、サブエージェントの名前とサブエージェントのポート番号が収められています。各サブエージェントによって管理されているサブツリーの OID の例は示してありません。

MIB の例

すべての種類の MIB 変数を含む MIB の例を次に示します。MIB にはテーブルも組み込まれています。この MIB が mibcodegen を通じて実行されると、適切な MIB データベースとスタブコードが生成されます。これによって、この MIB のサブエージェントが構築されます。

DEMO-MIB DEFINITIONS ::= BEGIN

   IMPORTS
       OBJECT-TYPE, Counter32, Gauge32
         FROM SNMPv2-SMI
	 DisplayString, TimeStamp
         FROM SNMPv2-TC;

   mib-2        OBJECT IDENTIFIER ::= { mgmt 1 }
   sun  OBJECT IDENTIFIER ::= { enterprises 42 }
   demo OBJECT IDENTIFIER ::= { sun 1000 }

--
-- Some objects
--
demoString OBJECT-TYPE
       SYNTAX DisplayString
       MAX-ACCESS read-write
       STATUS current
       DESCRIPTION
         "A read-write object of type String."
       ::= {demo 1}

demoInteger OBJECT-TYPE
       ::= {demoTable 1}
DemoEntry ::= SEQUENCE {
       demoEntryIndex
           INTEGER,
       demoEntryString
           DisplayString,
       demoEntryInteger
           INTEGER,
       demoEntryOid
           OBJECT IDENTIFIER }
SYNTAX INTEGER {
         up(1),
         down(2) }
       MAX-ACCESS read-write
       STATUS current
       DESCRIPTION
         "A read-write object of type Integer."
       ::= {demo 2}

   demoOid OBJECT-TYPE
       SYNTAX OBJECT IDENTIFIER
       MAX-ACCESS read-write
       STATUS current
       DESCRIPTION
         "A read-write object of type Oid."
       ::= {demo 3}
-- A table composed of some columns

   demoTable OBJECT-TYPE
       SYNTAX SEQUENCE OF DemoEntry
       MAX-ACCESS not-accessible
       STATUS current
       DESCRIPTION
           "A table."
       ::= {demo 10}

   demoEntry OBJECT-TYPE
       SYNTAX DemoEntry
       MAX-ACCESS not-accessible
       STATUS current
       DESCRIPTION
         "An entry in the table demoTable."
       INDEX {demoEntryIndex}
 demoEntryIndex OBJECT-TYPE
       SYNTAX INTEGER (1..2147483647)
       MAX-ACCESS not-accessible
       STATUS current
       DESCRIPTION
         "An index to uniquely identify the entry."
       ::= {demoEntry 1}

   demoEntryString OBJECT-TYPE
       SYNTAX DisplayString
       MAX-ACCESS read-write
       STATUS current
       DESCRIPTION
         "A read-write column of type String."
       ::= {demoEntry 2}

demoEntryInteger OBJECT-TYPE
       SYNTAX INTEGER {
         up(1),
         down(2) }

       MAX-ACCESS read-write
       STATUS current
       DESCRIPTION
         "A read-write column of type Integer."
       ::= {demoEntry 3}

   demoEntryOid OBJECT-TYPE
       SYNTAX OBJECT IDENTIFIER
       MAX-ACCESS read-write
       STATUS current
       DESCRIPTION
         "A read-write column of type Oid."
       ::= {demoEntry 4}
demoTrap TRAP-TYPE
        ENTERPRISE sun
        VARIABLES { demoInteger, demoString, demoOid}
        DESCRIPTION
        " Trap for testing."
        ::= 2
demoColdLinkTrap TRAP-TYPE
        ENTERPRISE snmp
        DESCRIPTION
        " Trap for testing."
        ::= 0

   END