Sun Java™ System Directory Server 5.2 2005Q1 管理ガイド |
第 14 章
SNMP を使用した Directory Server の監視SNMP (Simple Network Management Protocol) は、リアルタイムでデバイスやアプリケーションを監視および管理するための標準の管理プロトコルです。Directory Server には、SNMP マネージャーアプリケーションを使用して監視するためのサブエージェントインタフェースが用意されています。これを利用することで、ネットワークアプリケーションが Directory Server の状態を判別し、アクティビティに関する情報を取得できます。
Directory Server の SNMP サブエージェントに含まれる値は読み取り専用です。このため、SNMP 管理アプリケーションはサーバーに対して処理を実行できません。
一般に、第 13 章「ログファイルを使用した Directory Server の監視」で説明したアクセスログとエラーログにはサーバーに関するより詳細な情報が含まれており、また、サーバーの設定に安全にアクセスし、それを変更するには LDAP は最適なプロトコルといえます。それでも Directory Server インスタンスは、SNMP サブエージェントを使用して既存のネットワーク管理システムに参加できます。
この章では、次の項目について説明します。
Sun Java System Server の SNMPSNMP を利用する管理アプリケーションは、エージェントまたはサブエージェントアプリケーションを実行するアプリケーションおよびデバイスに照会を行います。SNMP エージェントまたはサブエージェントは、SNMP マネージャーからの照会への応答として、アプリケーションまたはデバイスからの情報を収集します。この情報は変数のテーブルとして構築され、このテーブルはエージェントの MIB (管理情報ベース) によって定義されます。
通常、ネットワーク管理者はサブエージェント内の SNMP 変数を照会し、サブエージェントは要求された値を返します。また SNMP は、すべてのネットワーク管理者にトラップメッセージを送信してエージェントがイベントをレポートするためのメカニズムを定義します。Directory Server デーモンが起動する前にサブエージェントとマスターエージェントが実行されている場合、Directory Server サブエージェントは Directory Server の起動時または停止時に SMUX トラップをマスターエージェントに送信します。マスターエージェントはこれを SNMP トラップに変換します。
ホストマシンには、複数のサブエージェントをインストールできます。たとえば、Directory Server、Application Server、および Messaging Server をすべて同じホスト上にインストールした場合、これらの各サーバーのサブエージェントは、同一のマスターエージェントと通信します。
UNIX 環境では、管理サーバーがインストールされると、Directory Server とその他の Sun Java System 製品には SNMP マスターエージェント (MAGT) が提供されます。
SNMP を使用してサーバーを監視する方法については、『Administration Server Administration Guide』を参照してください。
SNMP 経由で監視できるようにサーバーを設定する一般的な手順は、次のとおりです。
- Directory Server MIB をコンパイルし、SNMP 管理システムに統合します。使用しているシステムのマニュアルを参照してください。
- 「SNMP の設定」で説明している方法で、マシン上に SNMP を設定します。
- Directory Server コンソールから SNMP サブエージェントを設定します。詳細については、「Directory Server での SNMP の設定」を参照してください。
- Directory Server コンソールから SNMP サブエージェントを起動します。詳細については、「SNMP サブエージェントの起動と停止」を参照してください。
- MIB によって定義され、エージェントにより公開される SNMP 管理対象オブジェクトにアクセスします。この手順は、全体的に SNMP 管理システムに依存します。
Directory Server の設定に固有の手順については後述します。
Directory Server の MIB の概要Directory Server の MIB には、次のようなオブジェクト識別子があります。
iso.org.dod.internet.private.enterprises.netscape.nsldap
(nsldapd OBJECT IDENTIFIER ::= { 1.3.6.1.4.1.1450.7 })これは、次のファイルに定義されています。
ServerRoot/plugins/snmp/netscape-ldap.mib
MIB は、SNMP 経由で監視できる変数と、各変数に含まれる値のタイプを定義します。Directory Server の MIB は、次の 4 つの管理対象オブジェクトテーブルに分類されます。
- Operations テーブル: ディレクトリ内のバインド、処理、リフェラル、エラーに関する統計情報を含みます。これらの変数の値は、ディレクトリの cn=snmp,cn=monitor エントリの属性にも指定されます。詳細については、『Directory Server Administration Reference』を参照してください。
- Entries テーブル: ディレクトリ内のエントリ数とエントリキャッシュのヒット数を含みます。これらの変数の値は、ディレクトリの cn=snmp,cn=monitor エントリの属性の操作変数とも一緒に使用されます。詳細については、『Directory Server Administration Reference』を参照してください。
- Interactions テーブル: このディレクトリサーバーが最後に通信した 5 つのディレクトリサーバーに関する統計情報を含みます。詳細については、『Directory Server Administration Reference』を参照してください。
- Entity テーブル: サーバー ID やバージョンなど、Directory Server のこのインスタンスを説明する変数を含みます。詳細については、『Directory Server Administration Reference』を参照してください。
Directory Server MIB を使うときは、事前に次のディレクトリにある MIB とともにコンパイルする必要があります。
ServerRoot/plugins/snmp/mibs
MIB のコンパイル方法については、SNMP 製品のマニュアルを参照してください。
SNMP の設定Solaris プラットフォーム上の設定
Solaris 上で推奨される設定は、Directory Service マスターエージェント (MPS/MAGT) を Solaris ネイティブエージェントフレームワークにプラグインする方法です。この設定では、MPS エージェントの開始と、MPS エージェントへの Directory Server SNMP 要求の転送を、Solaris エージェント snmpdx が担当します。つまり、要求が Directory Server に関係するかどうかに関わらず、すべての SNMP 管理クライアントは標準ポート 161 上の Solaris エージェントに接続することができます。
したがって、Solaris エージェントとの競合を避けるために、異なるポート (たとえば 1161) 上で実行するように MPS エージェントを設定し直す必要があります。下に示す手順例には、この手順も含まれています。MPS エージェントの詳細な設定手順については、『Administration Server Administration Guide』を参照してください。ただし、ここでの設定では、MPS エージェントを Solaris エージェントによって開始する必要があるため、MPS エージェントの開始または停止に管理サーバーは使用しません。
snmpdx SNMP マスターエージェントへのプラグイン - Solaris の例
Solaris snmpdx エージェント (man snmpdx(1M)) にプラグインするには、次の手順に従います。Solaris snmpdx エージェントは標準ポート 161 上で実行でき、Directory SNMP 要求を Directory Server に転送します。
slapd-instance を、ユーザーのディレクトリインスタンス名に置き換えます。
- root としてログインします。
- MPS エージェントの登録ファイル /etc/snmp/conf/mps.reg を作成します。
このファイルに次の内容を追加します。
#
# Registration file for MPS Agent.
#
##########
# agents #
##########
agents = {
{
name = "mps"
subtrees = {
# Directory Server
1.3.6.1.4.1.1450.7,
# Web Server
1.3.6.1.4.1.1450.1.60
}
timeout = 2000000
watch-dog-time = 86400
port = 1161
}
}
- MPS エージェントのリソースファイル /etc/snmp/conf/mps.rsrc を作成します。
このファイルに次の内容を追加します。
#
# Resource file for MPS Agent.
#
resource =
{
{
registration_file = "/etc/snmp/conf/mps.reg"
policy = "spawn"
type = "legacy"
command = "install-dir/plugins/snmp/magt/magt
install-dir/plugins/snmp/magt/CONFIG
install-dir/plugins/snmp/magt/INIT"}
}
- install-dir/plugins/snmp/magt/CONFIG の最後に、次のコードを追加します。
TRANSPORT extraordinary SNMP
OVER UDP SOCKET
AT PORT 1161
- 再起動して、magt 処理がポート 1161 上で実行されていることを確認します。たとえば、次のようにします。
$ pgrep magt
21954
$ netstat -a | grep 1161
*.1161 Idle
*.1161 Idle
- 「Directory Server での SNMP の設定」で説明している方法で、Directory Server サブエージェントを設定します。デフォルトのポート 199 を使用します。
ブート時にサブエージェントが自動的に起動するようにするため、/etc/init.d 内に次の行を含む起動スクリプトを作成できます。サブエージェントは、MPS エージェントがあらかじめ起動していないと起動しません。
$ cd install-dir/bin/slapd/server
[ -x ./64/ns-slapd ] && [ "bin/isainfo -b 2> /dev/null = 64 ] && cd ./64
./ns-ldapagt -d install-dir/slapd-instance
- サブエージェントが実行していることを確認します。たとえば、次のようにします。
$ pgrep ns-ldapagt
22411
Linux プラットフォーム上の設定
- Red Hat Linux Advanced Server で、ネイティブ snmpd が実行されていないことを確認します。次のコマンドを実行します。
$ pgrep snmpd
ネイティブ snmpd が実行されている場合は、次のコマンドを実行して停止させます。
/etc/rc.d/init.d/snmpd stop
- ネイティブ snmpd をこれから実行する場合は、ネイティブ snmpd のポート番号を変更します。デフォルトでは、Directory Server MPS (MAGT) マスターエージェントとネイティブ snmpd が両方ともポート 161 を使用するためです。
ポート番号を変更するには、/etc/rc.d/init.d/snmpd 内の OPTIONS 変数を次のように変更します。
OPTIONS="-s -l /dev/null -P /var/run/snmpd.pid -a -p 1161" adding -p 1161
これにより、snmpd ポートが 1161 に変更されます。
- 次のコマンドを実行して、ネイティブ snmpd を起動します。
/etc/rc.d/init.d/snmpd start
Linux 上での SNMP 設定に関するヒント
Linux 上で SNMP を設定する場合は、次の点を考慮します。
- 「Directory Server での SNMP の設定」で説明している方法で Directory Server SNMP サブエージェントを設定する場合は、デフォルトポート 199 を使用します。
- スクリプトを使用して Directory Server、MAGT (MPS) SNMP マスターエージェント、SNMP サブエージェントを起動、停止、再起動する場合は、コード例 14-1 に示されているコードを使用します。/etc/init.d 内に directorysnmp というファイル名のスクリプトを作成します。
コード例 14-1 SNMP Linux スクリプト directorysnmp
#!/bin/sh
DIR=""
BASEDIR='/bin/rpm -qa --queryformat '%{INSTPREFIXES}' sun-directory¥* | head -1'
[ -r "$BASEDIR/directory-server/5.2/shared/config/serverroot.conf" ] || exit 0
VAR='/bin/cat $BASEDIR/directory-server/5.2/shared/config/serverroot.conf'
for di in $VAR/slapd-*
do
[ -d "$di" ] && DIR="$DIR $di"
done
start() {
[ ! -z "$DIR" ] || exit 0
# Start the Directory Server or Servers
for di in $DIR; do
$di/start-slapd
done
# Start the master agent
cd $VAR/plugins/snmp/magt
./magt ./CONFIG ./INIT >/dev/null 2>&1 &
# Give the master agent a chance to start.
#
loop_counter=1
max_count=10
while [ $loop_counter -le $max_count ]; do
n='/usr/bin/pgrep -f magt | /usr/bin/wc -l'
if [ $n -gt 0 ]; then break; fi
loop_counter='expr $loop_counter + 1'
sleep 1
done
if [ $n -eq 0 ]; then
echo "Directory Server agents not started."
exit 1
fi
# Start the subagent
cd $VAR/bin/slapd/server
for di in $DIR; do
./ns-ldapagt -d $di >/dev/null 2>&1 &
done
}
stop() {
[ ! -z "$DIR" ] || exit 0
# Stop the subagent
for di in $DIR; do
lkfile=${di}/logs/NSLDAPAGT.LK
if [ -r $lkfile ]; then
pid='/usr/bin/cut -f 1 -d' ' $lkfile'
kill $pid >/dev/null 2>&1
fi
done
# Stop the master agent
/usr/bin/pkill magt
# Stop the Directory Server
for di in $DIR; do
$di/stop-slapd
done
}
# See how we were called.
case "$1" in
start)
start
;;
stop)
stop
;;
restart)
stop
start
;;
*)
echo $"Usage: $0 {start|stop|restart}"
exit 1
esac
exit 0
Directory Server での SNMP の設定プラットフォーム側の SNMP エージェントまたはサービスの設定が完了したら、Directory Server インスタンス側の SNMP パラメータを設定する必要があります。Directory Server コンソールから SNMP 設定を設定するには、次の手順を実行します。
- Directory Server コンソールの最上位の「設定」タブで、設定ツリーのルートノードを選択し、右側のパネルで「SNMP」タブを選択します。
- 「統計収集を有効に」チェックボックスを選択します。リソースの利用率を改善するために、デフォルトでは SNMP 変数の統計情報は収集されません。SNMP を使用せず、LDAP 経由で cn=snmp,cn=monitor エントリの属性を監視しないときは、このチェックボックスの選択は解除した状態で残します。
- マスターエージェントのホスト名とポート番号を対応するテキストフィールドに入力します。
デフォルトの設定は、それぞれ localhost とポート 199 です。
- 「説明のプロパティ」ボックスのテキストフィールドに情報を入力します。ここに指定した値は、このサーバーが開示する SNMP Entity テーブルに反映されます。
- 「保存」をクリックして、変更内容を保存します。
- 次の項で説明する方法で、SNMP サブエージェントを起動または再起動します。
SNMP サブエージェントの起動と停止次に、Directory Server コンソールで SNMP サブエージェントを起動、再起動、停止する方法について説明します。
SNMP サブエージェントを起動、停止、および再起動するには