拡張MIBオブジェクトの定義例を次の順で説明します。
(1) MIBオブジェクトの定義
ユーザーがFlintstones Companyの社員の場合で,次に示す目的でMIBオブジェクトを記述します。
上記のMIBオブジェクトの定義については,「(3) /etc/SnmpAgent.d/snmpd.extendファイルの作成例」のMIBオブジェクト定義の説明を参照してください。
エージェントシステムはflintagent,デフォルトのコミュニティ名はpublic,setコミュニティ名はsecretです。オブジェクト識別子がユニークになるように,MIBオブジェクトはflintstones(4242)サブツリーの中に定義することにします。MIBツリーの階層を次に示します。
iso (1) ::= { 1 }
org (3) ::= { 3 }
dod (6) ::= { 6 }
internet (1) OBJECT IDENTIFIER ::= { dod 1 }
private (4) OBJECT IDENTIFIER ::= { internet 4 }
enterprises (1) OBJECT IDENTIFIER ::= { private 1 }
flintstones (4242) OBJECT IDENTIFIER ::= { enterprises 4242 }
fsys (1) OBJECT IDENTIFIER ::= { flintstones 1 }
fmail (2) OBJECT IDENTIFIER ::= { flintstones 2 }
fwidgets (3) OBJECT IDENTIFIER ::= { flintstones 3 }
fprinters (4) OBJECT IDENTIFIER ::= { flintstones 4 }
fdisk(5) OBJECT IDENTIFIER ::= { flintstones 5 }
fprocess(6) OBJECT IDENTIFIER ::= { flintstones 6 }
fconfig(7) OBJECT IDENTIFIER ::= { flintstones 7 }
MIBツリーの構成を次の図に示します。
図2-8 MIBツリーの構成
次に,各葉ノードのオブジェクト識別子を示します。
葉ノード オブジェクト識別子
fsysUsers 1.3.6.1.4.1.4242.1.1.0
fmemory 1.3.6.1.4.1.4242.1.2.0
fmailNumMsgs 1.3.6.1.4.1.4242.2.1.0
fmailListMsgs 1.3.6.1.4.1.4242.2.2.0
fwidgetsPerHour 1.3.6.1.4.1.4242.3.1.0
fprintersStatus 1.3.6.1.4.1.4242.4.1.0
fdefaultPrinter 1.3.6.1.4.1.4242.4.2.0
fUID 1.3.6.1.4.1.4242.5.1.1.1.fUID※1
fUserName 1.3.6.1.4.1.4242.5.1.1.2.fUID
fUserDiskSpace 1.3.6.1.4.1.4242.5.1.1.3.fUID
fUserEmailAddress 1.3.6.1.4.1.4242.5.1.1.4.fUID
fProcessID 1.3.6.1.4.1.4242.6.1.1.1.fProcessID※2
fProcessName 1.3.6.1.4.1.4242.6.1.1.2.fProcessID
fInetdConf 1.3.6.1.4.1.4242.7.1.0
注※1 FUIDの値
注※2 fProcessIDの値
(2) システム(flintagent)へのログイン
ルートユーザーとしてflintagentシステムにログインします。
(3) /etc/SnmpAgent.d/snmpd.extendファイルの作成例
/etc/SnmpAgent.d/snmpd.extendファイルの作成例を次に示します。
作成例の/etc/SnmpAgent.d/snmpd.extendファイルの内容は,拡張MIB定義サンプルファイルの/opt/OV/prg_samples/eagent/snmpd.extendの中に提供されています。
FLINTSTONES-MIB DEFINITIONS ::= BEGIN
--
-- Test MIB- used for testing snmpd.ea(extensible agent)
--
--
internet OBJECT IDENTIFIER ::= { iso(1) org(3) dod(6) internet(1) }
enterprises OBJECT IDENTIFIER ::= { internet private(4) 1 }
flintstones OBJECT IDENTIFIER ::= { enterprises 4242 }
fsys OBJECT IDENTIFIER ::= { flintstones 1 }
fmail OBJECT IDENTIFIER ::= { flintstones 2 }
fwidgets OBJECT IDENTIFIER ::= { flintstones 3 }
fprinters OBJECT IDENTIFIER ::= { flintstones 4 }
fdisk OBJECT IDENTIFIER ::= { flintstones 5 }
fprocess OBJECT IDENTIFIER ::= { flintstones 6 }
fconfig OBJECT IDENTIFIER ::= { flintstones 7 }
fsysUsers OBJECT-TYPE
SYNTAX DisplayString
ACCESS read-only
STATUS mandatory
DESCRIPTION
"List of users on the flintstone machine
READ-COMMAND: /usr/bin/users; exit 0
READ-COMMAND-TIMEOUT: 5"
::= { fsys 1 }
fmemory OBJECT-TYPE
SYNTAX INTEGER
ACCESS read-only
STATUS mandatory
DESCRIPTION
"Amount of memory (in megabytes) on system
APPEND-COMMUNITY-NAME: true
FILE-NAME: /opt/OV/prg_samples/eagent/memory"
::= { fsys 2 }
fmailNumMsgs OBJECT-TYPE
SYNTAX INTEGER
ACCESS read-only
STATUS mandatory
DESCRIPTION
"Message count on the mail queue.
READ-COMMAND: /usr/bin/mailq | fgrep -v Mail | wc -l"
::= { fmail 1 }
fmailListMsgs OBJECT-TYPE
SYNTAX DisplayString
ACCESS read-only
STATUS mandatory
DESCRIPTION
"List of messages on the mail queue.
READ-COMMAND: /usr/bin/mailq
READ-COMMAND-TIMEOUT: 10"
::= { fmail 2 }
fwidgetsPerHour OBJECT-TYPE
SYNTAX Gauge
ACCESS read-write
STATUS mandatory
DESCRIPTION
"Number of widgets produced per hour.
READ-COMMAND: /opt/OV/prg_samples/eagent/num_widgets $i $c $o $s
READ-COMMAND-TIMEOUT: 2
WRITE-COMMAND: /opt/OV/prg_samples/eagent/change_num_widgets $*
WRITE-COMMAND-TIMEOUT: 10"
::= { fwidgets 1 }
fprintersStatus OBJECT-TYPE
SYNTAX INTEGER {
up(1),
down(2)
}
ACCESS read-only
STATUS mandatory
DESCRIPTION
"Status of printer scheduler.
READ-COMMAND: ps -ef|grep lpsched | grep -v grep | wc |
awk '{ if ($1 == 0) print 2; else print 1 }'"
::= { fprinters 1 }
fdefaultPrinter OBJECT-TYPE
SYNTAX DisplayString
ACCESS read-write
STATUS mandatory
DESCRIPTION
"Default printer
FILE-NAME: /usr/spool/lp/default"
::= { fprinters 2 }
fUserDiskTable OBJECT-TYPE
SYNTAX SEQUENCE OF FUserDiskEntry
ACCESS not-accessible
STATUS mandatory
DESCRIPTION
"List of users and the number of kilobytes in their
home directory.
FILE-NAME: /opt/OV/prg_samples/eagent/user_disk_space"
::= { fdisk 1 }
fUserDiskEntry OBJECT-TYPE
SYNTAX FUserDiskEntry
ACCESS not-accessible
STATUS mandatory
DESCRIPTION
"This macro documents the column that uniquely
describes each row."
INDEX { fUID }
::= { fUserDiskTable 1 }
FUserDiskEntry ::=
SEQUENCE {
fUID INTEGER,
fUserName DisplayString,
fUserDiskSpace INTEGER,
fUserEmailAddress DisplayString
}
fUID OBJECT-TYPE
SYNTAX INTEGER
ACCESS read-only
STATUS mandatory
DESCRIPTION
"User's unique ID"
::= { fUserDiskEntry 1 }
fUserName OBJECT-TYPE
SYNTAX DisplayString
ACCESS read-only
STATUS mandatory
DESCRIPTION
"User login name"
::= { fUserDiskEntry 2 }
fUserDiskSpace OBJECT-TYPE
SYNTAX INTEGER
ACCESS read-only
STATUS mandatory
DESCRIPTION
"Amount of disk space (in kilobytes) used by the user."
::= { fUserDiskEntry 3 }
fUserEmailAddress OBJECT-TYPE
SYNTAX DisplayString
ACCESS read-write
STATUS mandatory
DESCRIPTION
"Email address for the user"
::= { fUserDiskEntry 4 }
fUserRootProcessTable OBJECT-TYPE
SYNTAX SEQUENCE OF FUserRootProcessEntry
ACCESS not-accessible
STATUS mandatory
DESCRIPTION
"List of root processes. Do not execute command more
than every 60 seconds.
FILE-COMMAND: /opt/OV/prg_samples/eagent/get_processes
FILE-COMMAND-FREQUENCY: 60
FILE-NAME: /opt/OV/prg_samples/eagent/root_processes"
::= { fprocess 1 }
fUserRootProcessEntry OBJECT-TYPE
SYNTAX FUserRootProcessEntry
ACCESS not-accessible
STATUS mandatory
DESCRIPTION
"This macro documents the column that uniquely
describes each row."
INDEX { fProcessID }
::= { fUserRootProcessTable 1 }
FUserRootProcessEntry ::=
SEQUENCE {
fProcessID INTEGER,
fProcessName DisplayString
}
fProcessID OBJECT-TYPE
SYNTAX INTEGER
ACCESS read-only
STATUS mandatory
DESCRIPTION
"Process ID"
::= { fUserRootProcessEntry 1 }
fProcessName OBJECT-TYPE
SYNTAX DisplayString
ACCESS read-write
STATUS mandatory
DESCRIPTION
"Name of process"
::= { fUserRootProcessEntry 2 }
fInetdConf OBJECT-TYPE
SYNTAX DisplayString
ACCESS read-write
STATUS mandatory
DESCRIPTION
"The configuration file for inetd
FILE-COMMAND: /opt/OV/prg_samples/eagent/update_inetd $r
FILE-COMMAND-FREQUENCY: 7200
FILE-NAME: /etc/inetd.conf"
::= { fconfig 1 }
END
(a) MIBオブジェクト定義例の説明
/etc/SnmpAgent.d/snmpd.extendファイル作成例に含まれるMIBオブジェクト定義ごとに定義内容を説明します。
fsysUsers OBJECT-TYPE
SYNTAX DisplayString
ACCESS read-only
STATUS mandatory
DESCRIPTION
"List of users on the flintstone machine
READ-COMMAND: /usr/bin/users; exit 0
READ-COMMAND-TIMEOUT: 5"
::= { fsys 1 }
READ-COMMAND-TIMEOUT: 5
/opt/OV/prg_samples/eagent/memory.larry
/opt/OV/prg_samples/eagent/memory.curly
/opt/OV/prg_samples/eagent/memory.moe
fmemory OBJECT-TYPE
SYNTAX INTEGER
ACCESS read-only
STATUS mandatory
DESCRIPTION
"Amount of memory (in megabytes) on system
APPEND-COMMUNITY-NAME: true
FILE-NAME: /opt/OV/prg_samples/eagent/memory"
::= { fsys 2 }
/opt/OV/prg_samples/eagent/sysDescr.larry
/opt/OV/prg_samples/eagent/sysDescr.curly
/opt/OV/prg_samples/eagent/sysDescr.moe
sysDescr OBJECT-TYPE
SYNTAX DisplayString (SIZE(0..255))
ACCESS read-only
STATUS mandatory
DESCRIPTION
"A textual description of the entity. This value
should include the full name and version
identification of the system's hardware type,
software operating-system, and networking
software. It is mandatory that this only contain
printable ASCII characters.
APPEND-COMMUNITY-NAME : true
FILE-NAME: /opt/OV/prg_samples/eagent/sysDescr"
::= { system 1 }
fmailNumMsgs OBJECT-TYPE
SYNTAX INTEGER
ACCESS read-only
STATUS mandatory
DESCRIPTION
"Message count on the mail queue.
READ-COMMAND: /usr/bin/mailq | fgrep -v Mail
| wc -l"
::= { fmail 1 }
fmailListMsgs OBJECT-TYPE
SYNTAX DisplayString
ACCESS read-only
STATUS mandatory
DESCRIPTION
"List of messages on the mail queue.
READ-COMMAND: /usr/bin/mailq
READ-COMMAND-TIMEOUT: 10"
::= { fmail 2 }
fwidgetsPerHour OBJECT-TYPE
SYNTAX Gauge
ACCESS read-write
STATUS mandatory
DESCRIPTION
"Number of widgets produced per hour.
READ-COMMAND: /opt/OV/prg_samples/eagent/num_widgets
$i $c $o $s
READ-COMMAND-TIMEOUT: 2
WRITE-COMMAND: /opt/OV/prg_samples/eagent/change_num_
widgets $*
WRITE-COMMAND-TIMEOUT: 10"
::= { fwidgets 1 }
fprintersStatus OBJECT-TYPE
SYNTAX INTEGER {
up(1),
down(2)
}
ACCESS read-only
STATUS mandatory
DESCRIPTION
"Status of printer scheduler.
READ-COMMAND: ps -ef|grep lpsched
| grep -v grep | wc |
awk '{ if ($1 == 0) print 2; else print 1 }'"
::= { fprinters 1 }
fdefaultPrinter OBJECT-TYPE
SYNTAX DisplayString
ACCESS read-write
STATUS mandatory
DESCRIPTION
"Default printer
FILE-NAME: /usr/spool/lp/default"
::= { fprinters 2 }
# User ID User Name Disk Space Email Address
100 zach 120 zach@server1
201 alice 65 alice@server2
320 john 2 john@server3
119 craig 500 root@server1
217 steve 75 steve@server1
83 bob 111 bob@bobby
fUserDiskTable OBJECT-TYPE
SYNTAX SEQUENCE OF FUserDiskEntry
ACCESS not-accessible
STATUS mandatory
DESCRIPTION
"List of users and the number of kilobytes in their
home directory.
FILE-NAME: /opt/OV/prg_samples/eagent/user_disk_space"
::= { fdisk 1 }
fUserDiskEntry OBJECT-TYPE
SYNTAX FUserDiskEntry
ACCESS not-accessible
STATUS mandatory
DESCRIPTION
"This macro documents the column that uniquely
describes each row."
INDEX { fUID }
::= { fUserDiskTable 1 }
FUserDiskEntry ::=
SEQUENCE {
fUID INTEGER,
fUserName DisplayString,
fUserDiskSpace INTEGER,
fUserEmailAddress DisplayString
}
fUID OBJECT-TYPE
SYNTAX INTEGER
ACCESS read-only
STATUS mandatory
DESCRIPTION
"User's unique ID"
::= { fUserDiskEntry 1 }
fUserName OBJECT-TYPE
SYNTAX DisplayString
ACCESS read-only
STATUS mandatory
DESCRIPTION
"User login name"
::= { fUserDiskEntry 2 }
fUserDiskSpace OBJECT-TYPE
SYNTAX INTEGER
ACCESS read-only
STATUS mandatory
DESCRIPTION
"Amount of disk space (in kilobytes) used by the user."
::= { fUserDiskEntry 3 }
fUserEmailAddress OBJECT-TYPE
SYNTAX DisplayString
ACCESS read-write
STATUS mandatory
DESCRIPTION
"Email address for the user"
::= { fUserDiskEntry 4 }
83 bob 111 bob@bobby
100 zach 120 zach@server1
119 craig 500 root@server1
201 alice 65 alice@server2
217 steve 75 steve@server1
320 john 2 john@server3
fUserRootProcessTable OBJECT-TYPE
SYNTAX SEQUENCE OF FUserRootProcessEntry
ACCESS not-accessible
STATUS mandatory
DESCRIPTION
"List of root processes. Do not execute command more
than every 60 seconds.
FILE-COMMAND: /opt/OV/prg_samples/eagent
/get_processes
FILE-COMMAND-FREQUENCY: 60
FILE-NAME: /opt/OV/prg_samples/eagent/root_processes"
::= { fprocess 1 }
fUserRootProcessEntry OBJECT-TYPE
SYNTAX FUserRootProcessEntry
ACCESS not-accessible
STATUS mandatory
DESCRIPTION
"This macro documents the column that uniquely
describes each row."
INDEX { fProcessID }
::= { fUserRootProcessTable 1 }
FUserRootProcessEntry ::=
SEQUENCE {
fProcessID INTEGER,
fProcessName DisplayString
}
fProcessID OBJECT-TYPE
SYNTAX INTEGER
ACCESS read-only
STATUS mandatory
DESCRIPTION
"Process ID"
::= { fUserRootProcessEntry 1 }
fProcessName OBJECT-TYPE
SYNTAX DisplayString
ACCESS read-write
STATUS mandatory
DESCRIPTION
"Name of process"
::= { fUserRootProcessEntry 2 }
fprocess.fuserRootProcessTable.fUserRootProcessEntry.fProcessID
fprocess.fuserRootProcessTable.fUserRootProcessEntry.fProcessName
FILE-COMMAND-FREQUENCY: 3600
fUserRootProcessTable OBJECT-TYPE
SYNTAX SEQUENCE OF FUserRootProcessEntry
ACCESS not-accessible
STATUS mandatory
DESCRIPTION
"List of root processes.
PIPE-IN-NAME: /tmp/fifo_in
PIPE-OUT-NAME: /tmp/fifo_out
FILE-NAME: /opt/OV/prg_samples/eagent/root_processes"
::= { fprocess 1 }
fprocess.fUserRootProcessTable.fUserRootProcessEntry.fProcessID
fprocess.fUserRootProcessTable.fUserRootProcessEntry.fProcessName
fInetdConf OBJECT-TYPE
SYNTAX DisplayString
ACCESS read-write
STATUS mandatory
DESCRIPTION
"The configuration file for inetd
FILE-COMMAND: /opt/OV/prg_samples/eagent
/update_inetd $r
FILE-COMMAND-FREQUENCY: 7200
FILE-NAME: /etc/inetd.conf"
::= { fconfig 1 }