![]() | |
Sun Java(TM) System Directory Server 5.2 2005Q1 管理指南 |
第 14 章
使用 SNMP 监视 Directory Server简单网络管理协议 (SNMP) 是标准化管理协议,用于实时监视和管理设备及应用程序。Directory Server 提供子代理接口,以便可以由 SNMP 管理应用程序对它进行监视。这样,可以使网络应用程序确定目录服务器的状态,并获得有关其活动的信息。
Directory Server SNMP 子代理包含只读的值。SNMP 管理应用程序不能在服务器上执行操作。
通常,第 13 章“使用日志文件监视 Directory Server”中描述的访问日志和错误日志提供有关服务器的详细信息,LDAP 是选择用于安全访问和修改服务器配置的协议。但是,SNMP 子代理不允许 Directory Server 实例参与现有的网络管理系统。
本章包括以下主题:
Sun Java System 服务器中的 SNMPSNMP 允许管理应用程序查询运行代理或子代理应用程序的应用程序和设备。SNMP 代理或子代理从应用程序或设备那里收集信息以响应 SNMP 管理器的查询。此信息在代理的管理信息库 (MIB) 定义的表格中被构造为变量。
通常情况下,网络管理员会在子代理中查询 SNMP 变量,然后子代理返回请求的值。SNMP 还定义一种机制,这种机制允许代理通过将陷阱消息发送给所有网络管理员来报告事件。如果在启动 Directory Server 守护进程之前子代理和主代理正在运行,那么 Directory Server 子代理会在 Directory Server 启动或关闭时将 SMUX 陷阱发送给主代理。主代理将此 SMUX 陷阱转换为 SNMP 陷阱。
可以在一台主机上安装多个子代理。例如,如果在同一台主机上安装了 Directory Server、Application Server 和 Messaging Server,则其中每台服务器的子代理都会与同一个主代理进行通讯。
在 UNIX 环境中,安装 Administration Server 时,将为 Directory Server 和其他 Sun Java System 产品提供 SNMP 主代理 (MAGT)。
有关使用 SNMP 来监视服务器的详细信息,请参见 Administration Server Administration Guide。
通过 SNMP 设置要监视的服务器的一般步骤如下:
- 编译 Directory Server MIB 并将其集成到 SNMP 管理系统。请参见系统文档。
- 在计算机上设置 SNMP,如设置 SNMP 中所述。
- 通过 Directory Server Console 配置 SNMP 子代理。请参见在 Directory Server 中配置 SNMP。
- 通过 Directory Server Console 启动 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 监视的变量及其所包含值的类型。目录 MIB 分为四个不同的托管对象表:
- 操作表——包含有关目录中的绑定、操作、引用和错误的统计信息。目录的 cn=snmp,cn=monitor 条目的属性中也提供有这些变量的值。请参见 Directory Server Administration Reference。
- 条目表——包含目录中的条目计数和条目缓存命中率。这些变量的值还与目录的 cn=snmp,cn=monitor 条目的属性中的操作变量相混合。请参见 Directory Server Administration Reference。
- 交互表——包含有关与此目录服务器通讯的最后 5 个目录服务器的统计信息。请参见 Directory Server Administration Reference。
- 实体表——包含描述 Directory Server 这一实例的变量(如其服务器 ID 和版本)。请参见 Directory Server Administration Reference。
必须先编译目录以及将在以下目录中找到的 MIB,然后才可以使用该目录的 MIB:
ServerRoot/plugins/snmp/mibs
有关如何编译 MIB 的信息,请参见 SNMP 产品文档。
设置 SNMP在 Solaris 平台上
Solaris 上推荐的配置是,将 Directory Service 主代理 (MPS/MAGT) 插入 Solaris 本机代理框架中。在此配置中,Solaris 代理 snmpdx 负责启动 MPS 代理并将 Directory Server SNMP 请求转发到 MPS 代理。这意味着,不管请求是否与 Directory Server 有关,所有 SNMP 管理客户机都可以与标准端口 161 上的 Solaris 代理联系。
必须重新配置 MPS 代理以在不同端口(建议使用 1161)上运行,这样,它就不会与 Solaris 代理产生冲突。下面给出的示例过程包括这一步骤。Administration Server Administration Guide 提供了有关配置 MPS 代理的详细说明。但要注意,此配置要求由 Solaris 代理启动 MPS 代理,因此,不应使用 Administration Server 来启动或停止 MPS 代理。
‰\t插入 snmpdx SNMP 主代理——Solaris 示例按照此过程操作以插入 Solaris snmpdx 代理 (man snmpdx(1M))。可以在标准端口 161 上运行 Solaris snmpdx 代理,将 Directory SNMP 请求转发到 Directory Server。
将 slapd-instance 替换为您的目录实例名称。
- 以超级用户身份登录。
- 为 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 Console 配置 SNMP 设置,请执行以下操作:
- 在 Directory Server Console 的顶级“配置”选项卡上,选择配置树根部的服务器节点,然后在右面板中选择 SNMP 选项卡。
- 选中“启用统计信息集合”复选框。默认情况下,为了提高资源利用率,并不收集 SNMP 变量的统计信息。如果不使用 SNMP 且不通过 LDAP 监视 cn=snmp,cn=monitor 条目的属性,则应取消选中此复选框。
- 在相应的文本字段中输入主代理的主机名和端口号。
默认值分别为 localhost 和端口 199。
- 在“描述性属性”框的文本字段中输入信息。这些值将反映在此服务器所公开的 SNMP 实体表中:
- 单击“保存”以存储更改。
- 启动或重新启动 SNMP 子代理,如后面章节中所述。
启动和停止 SNMP 子代理以下过程说明如何从 Directory Server Console 启动、重新启动或停止 SNMP 子代理。
要启动、停止和重新启动 SNMP 子代理,请执行以下操作: