目录代理服务器在访问日志和错误日志中记录信息。与目录服务器不同,目录代理服务器没有审计日志。有关目录代理服务器中的日志的描述,请参见《Sun Java System Directory Server Enterprise Edition 6.3 Reference》中的第 23 章 “Directory Proxy Server Logging”。
本章包含以下主题:
可以通过日志文件或使用目录服务控制中心 (Directory Service Control Center, DSCC) 直接查看目录代理服务器日志。
默认情况下,日志存储在以下目录中:
instance-path/logs |
下图显示了 DSCC 上的目录代理服务器错误日志的屏幕捕获。
可以使用 dpconf 命令或 DSCC 配置目录代理服务器的错误日志和访问日志。有关如何使用 DSCC 配置日志的信息,请参见目录代理服务器联机帮助。本部分介绍如何使用 dpconf 命令配置目录代理服务器日志。
通过运行以下命令,可以检索完整的配置选项列表以及允许值和默认值:
$ dpconf help-properties error-log
$ dpconf help-properties access-log
此过程用于配置目录代理服务器访问日志。要配置目录代理服务器错误日志,请执行相同的过程,但要将 access 替换为 error。
可使用 DSCC 执行此任务。有关信息,请参见目录服务控制中心界面和 DSCC 联机帮助。
查看访问日志的属性。
$ dpconf get-access-log-prop -h host -p port |
访问日志的默认属性如下所示:
default-log-level : info enable-log-rotation : true log-buffer-size : 9.8k log-file-name : logs/access log-file-perm : 600 log-level-client-connections : - log-level-client-disconnections : - log-level-client-operations : - log-level-connection-handlers : - log-level-data-sources : - log-level-data-sources-detailed : - log-min-size : 100M log-rotation-frequency : 1h log-rotation-policy : size log-rotation-size : 100M log-rotation-start-day : 1 log-rotation-start-time : 0000 log-search-filters : false max-age : unlimited max-log-files : 10 max-size : unlimited min-free-disk-space-size : 1M |
更改步骤 1 中列出的一个或多个属性。
$ dpconf set-access-log-prop -h host -p port property:value \ [property:value ...] |
例如,要将所有消息类别的默认日志级别设置为警告,请将 default-log-level 属性的值设置为 warning。
$ dpconf set-access-log-prop -h host1 -p 1389 default-log-level:warning |
要禁用所有日志,而不考虑每个消息类别的日志级别,请将 default-log-level 属性的值设置为 none。
$ dpconf set-access-log-prop -h host1 -p 1389 default-log-level:none |
要将特定的日志级别重置为默认日志级别,请将该日志级别的属性设置为 inherited。例如,要重置客户端连接的日志级别,请运行以下命令:
$ dpconf set-access-log-prop -h host1 -p 1389 log-level-client-connections:inherited |
要获取有关可使用 set-access-log-prop 子命令设置的属性的信息,请键入:
$ dpconf help-properties access-log |
默认情况下,在日志文件大小达到 100 MB 时轮转日志文件。默认情况下会保留十个日志文件,超过十个之后,轮转过程将开始覆盖最早的日志文件。本部分介绍如何配置目录代理服务器日志以执行计划的轮转、如何手动轮转日志,以及如何禁用日志轮转。要查看示例配置,请参见日志轮转的示例配置。
此过程用于配置目录代理服务器访问日志。要配置目录代理服务器错误日志,请执行相同的过程,但要将 access 替换为 error。
可使用 DSCC 执行此任务。有关信息,请参见目录服务控制中心界面和 DSCC 联机帮助。
(可选的)查看访问日志的属性。
$ dpconf get-access-log-prop -h host -p port |
(可选的)查看访问日志属性的有效值。
$ dpconf help-properties access-log
要在日志达到特定大小时轮转日志,请设置以下属性:
$ dpconf set-access-log-prop -h host -p port \ log-rotation-policy:size log-rotation-size:maximum file size |
如果未指定最大文件大小的单位, 则使用默认单位字节。当日志文件达到定义的大小时,将会轮转日志。文件大小至少为 1 MB,且不能超过 2 GB。
有关如何按大小轮转日志的示例,请参见根据日志大小轮转日志。
要定期轮转日志,而不考虑日志大小,请设置以下属性:
$ dpconf set-access-log-prop -h host -p port \ log-rotation-frequency:interval in months, weeks, hours, or minutes \ log-rotation-policy:periodic \ log-rotation-start-day:day in week (1-7) or day in the month (1-31) \ log-rotation-start-time:time of day (hhmm) |
如果将日志配置为在每月的 31 号轮转,但当月少于 31 天,则日志将在下个月的第一天轮转。
有关如何定期轮转日志的示例,请参见根据时间轮转日志。
要在日志文件足够大时定期轮转日志,请设置 log-rotation-frequency 和 log-min-size 属性。
$ dpconf set-access-log-prop -h host -p port \ log-rotation-frequency:interval in months, weeks, hours, or minutes \ log-rotation-policy:periodic log-min-size:minimum file size log-rotation-start-day:day in week (1-7) or day in the month (1-31) \ log-rotation-start-time:time of day (hhmm) |
log-min-size 属性表示日志的最小大小。只有日志文件大于指定大小时,才会在计划的时间执行轮转。
如果将日志配置为在每月的 31 号轮转,但当月少于 31 天,则日志将在下个月的第一天轮转。
有关如何在文件足够大时定期轮转日志的示例,请参见根据时间和日志大小轮转日志。
此过程用于轮转目录代理服务器访问日志。要轮转目录代理服务器错误日志,请执行相同的过程,但要将 access 替换为 error。
可使用 DSCC 执行此任务。有关信息,请参见目录服务控制中心界面和 DSCC 联机帮助。
此过程用于禁用目录代理服务器访问日志轮转。要禁用目录代理服务器错误日志轮转,请执行相同的过程,但要将 access 替换为 error。
有关如何按日志大小和/或时间配置日志轮转的示例。
本部分中的示例说明如何只根据日志大小配置日志轮转。此配置将在日志大小达到 10 MB 时轮转日志,而不考虑上次轮转日志的时间。
$ dpconf set-access-log-prop -h host1 -p 1389 log-rotation-policy:size \ log-rotation-size:10M |
本部分中的示例说明如何根据上次轮转日志的时间来配置日志轮转,而不考虑日志大小。
此配置将在今天 3:00 轮转日志,然后每 8 小时轮转一次,而不考虑日志文件的大小。
$ dpconf set-access-log-prop -h host1 -p 1389 log-rotation-frequency:8h \ log-rotation-policy:periodic log-rotation-start-time:0300 |
此配置将在每天的 3:00、13:00 和 23:00 轮转日志,而不考虑日志文件的大小。由于 log-rotation-start-time 参数的优先级高于 log-rotation-frequency 参数,因此先在 23:00 轮转日志,然后在间隔 4 小时后再轮转一次。而不是在 23:00 轮转后间隔 10 小时再轮转。
$ dpconf set-access-log-prop -h host1 -p 1389 log-rotation-frequency:10h \ log-rotation-policy:periodic log-rotation-start-time:0300 |
此配置将在星期一中午轮转日志,然后在每周的同一时间进行轮转,而不考虑日志文件的大小。
$ dpconf set-access-log-prop -h host1 -p 1389 log-rotation-frequency:1w \ log-rotation-policy:periodic log-rotation-start-day:2 log-rotation-start-time:1200 |
此配置将在星期一中午轮转日志,然后每 3 天轮转一次,而不考虑日志文件的大小。
$ dpconf set-access-log-prop -h host1 -p 1389 log-rotation-frequency:3d \ log-rotation-policy:periodic log-rotation-start-day:2 log-rotation-start-time:1200 |
日志将在以下时间轮转:星期一、星期四、星期日、星期三,依此类推。请注意,log-rotation-start-day 参数仅应用于第一周。日志不会在第二周的星期一轮转。
此配置将在当月的 22 号中午轮转日志,然后在每月的同一时间进行轮转,而不考虑日志大小。
$ dpconf set-access-log-prop -h host1 -p 1389 log-rotation-frequency:1m \ log-rotation-policy:periodic log-rotation-start-day:22 \ log-rotation-start-time:1200 |
如果将 log-rotation-start-day 设置为 31,而当月仅有 30 天,则日志将在下个月的第一天轮转。如果将 log-rotation-start-day 设置为 31,而当月仅有 28 天(二月),则日志将在下个月的 3 号轮转。
此示例说明如何按指定的时间间隔配置日志轮转(当日志文件足够大时)。
此配置将在每天的 3:00、11:00 和 19:00 轮转日志(当日志文件大小超过 1 MB 时)。如果日志文件大小未超过 1 MB,则不会轮转日志文件。
$ dpconf set-access-log-prop -h host1 -p 1389 log-rotation-frequency:8h \ log-rotation-policy:periodic log-min-size:1M log-rotation-start-time:0300 |
目录代理服务器允许您根据时间、大小或可用磁盘空间(默认)配置日志删除。有关这些删除策略的详细信息,请参见《Sun Java System Directory Server Enterprise Edition 6.3 Reference》中的“Log File Deletion”。
以下过程将配置访问日志的日志删除。要配置错误日志的日志删除,请使用相同的命令,但要将 access 替换为 error。
可使用 DSCC 执行此任务。有关信息,请参见目录服务控制中心界面和 DSCC 联机帮助。
指定日志文件的最长存留期。
$ dpconf set-access-log-prop -h host -p port max-age:duration |
其中 duration 包括天 (d)、周 (w) 或月 (M) 等单位。例如,要删除五天前的备份日志文件,请使用以下命令:
$ dpconf set-access-log-prop -h host1 -p 1389 max-age:5d |
可使用 DSCC 执行此任务。有关信息,请参见目录服务控制中心界面和 DSCC 联机帮助。
指定日志文件的最大大小。
$ dpconf set-access-log-prop -h host -p port max-size:memory-size |
例如,要删除大于 1 MB 的备份日志文件,请使用以下命令:
$ dpconf set-access-log-prop -h host1 -p 1389 max-size:1M |
可使用 DSCC 执行此任务。有关信息,请参见目录服务控制中心界面和 DSCC 联机帮助。
指定最小的可用磁盘空间。
$ dpconf set-access-log-prop -h host -p port min-free-disk-space-size:memory-size |
例如,要在可用磁盘空间小于 2 MB 时删除备份日志文件,请使用以下命令:
$ dpconf set-access-log-prop -h host1 -p 1389 min-free-disk-space-size:2M |
本部分介绍如何配置将警报消息记录到 syslogd 守护进程的过程,以及如何将操作系统配置为接受 syslog 警报。
可使用 DSCC 执行此任务。有关信息,请参见目录服务控制中心界面和 DSCC 联机帮助。
(可选的)查看系统日志警报属性的当前值。
$ dpconf get-server-prop -h host -p port syslog-alerts-enabled \ syslog-alerts-facility syslog-alerts-host |
系统日志警报的默认属性如下所示:
syslog-alerts-enabled : false syslog-alerts-facility : USER syslog-alerts-host : localhost |
syslog-alerts-host 属性定义消息所发送到的 syslogd 守护进程的主机名。syslog-alerts-facility 属性为只读属性,可导致消息发送到系统日志的 user 类别。
将警报消息记录到 syslogd 守护进程。
$ dpconf set-server-prop -h host -p port syslog-alerts-enabled:true |
(可选的)将警报消息发送到其他主机上的 syslogd 守护进程。
$ dpconf set-server-prop -h host -p port syslog-alerts-host:hostname |
本部分提供了有关将 SolarisTM、Linux 和 HP-UX 操作系统配置为接受 syslog 警报的说明。
将相应的工具添加到 syslog 配置文件中。
例如,要使用 USER 工具存储所有警报,请将以下行添加到 /etc/syslog.conf 中:
user.info /var/adm/info
此处的 /var/adm/info 是要存储消息的本地目录示例。在继续操作之前,请确保存在 /var/adm/info。
重新启动 syslogd 守护进程。
验证是否已将消息记录到 syslog 中。
$ logger -p user.info "Test message" $ cat /var/adm/info Jun 19 17:18:38 host user: [ID 12345 user.info] Test message
将相应的工具添加到 syslog 配置文件中。
例如,要使用 USER 工具存储所有警报,请将以下行添加到 /etc/syslog.conf 中:
user.info /var/adm/info
此处的 /var/adm/info 是要存储消息的本地目录示例。在继续操作之前,请确保存在 /var/adm/info。
将 syslogd 守护进程配置为使用 -r 选项运行。
此选项允许 syslogd 接受来自网络的连接。默认情况下不设置 -r 选项。
要设置 -r 选项,请在 /etc/sysconfig/syslog 中添加以下行:
SYSLOGD_OPTIONS="-m 0 -r"
如果 /etc/sysconfig/syslog 不存在,请将相同的行添加到 /etc/init.d/syslog 中。
重新启动 syslogd 守护进程。
$ /etc/init.d/syslog stop | start
验证是否已将消息记录到 syslog 中。
$ logger -p user.info "Test message" $ cat /var/adm/info Jun 19 17:18:38 host user: [ID 12345 user.info] Test message
将相应的工具添加到 syslog 配置文件中。
例如,要使用 USER 工具存储所有警报,请将以下行添加到 /etc/syslog.conf 中:
user.info /var/adm/info
此处的 /var/adm/info 是要存储消息的本地目录示例。在继续操作之前,请确保存在 /var/adm/info。
重新启动 syslogd 守护进程。
$ /sbin/init.d/syslogd stop | start
验证是否已将消息记录到 syslog 中。
$ logger -p user.info "Test message" $ cat /var/adm/info Jun 19 17:18:38 host user: [ID 12345 user.info] Test message
要跟踪客户端请求,您必须了解在目录代理服务器访问日志和目录服务器访问日志中是如何记录请求的。要了解本部分的内容,请先阅读《Sun Java System Directory Server Enterprise Edition 6.3 Reference》中的“Tracking Client Requests Through Directory Proxy Server and Directory Server Access Logs”。
无法使用 DSCC 执行此任务。请使用命令行,如以下过程所述。
找到您要在目录服务器访问日志中跟踪的操作的连接号。
例如,访问日志中的以下行显示连接号为 conn=12839 的操作 op=2 。
[20/Jul/2006:18:01:49 -0500] conn=12839 op=2 msgId=4 - SRCH base="dc=example,dc=com" scope=2 filter="(objectClass=organizationalunit)" attrs=ALL |
获取该连接的目录代理服务器连接信息。
要获取此信息,请搜索目录服务器访问日志,以找到具有相应连接号的所有操作。例如,在 UNIX 系统上运行以下 grep 命令,可找到目录服务器访问日志中与连接 conn=12839 相对应的所有行:
$ grep conn=12839 access |
显示初始 LDAP 连接的行就是您要查找的行,该行类似于以下内容:
[19/Jul/2006:16:32:51 -0500] conn=12839 op=-1 msgId=-1 - fd=27 slot=27 LDAP connection from 129.153.160.175:57153 to 129.153.160.175 |
上面的行表明存在从 129.153.160.175:57153 到目录服务器的 LDAP 连接。端口号 (57153) 是将连接链接回目录代理服务器访问日志所需的信息。通过端口号可以查找目录代理服务器日志中相应的连接,并从此连接找到客户端信息。
如果日志文件自首次建立连接后已进行了轮转,则需要搜索已归档的日志文件和当前的访问日志文件。
找到目录代理服务器访问日志中相应的连接。
要获取此信息,请搜索目录代理服务器访问日志,以找到具有相应端口号的所有操作。
您可能会在日志文件中找到具有相同端口号的多个条目。要确保找到正确的条目,请在搜索中包含目录服务器日志条目的时间戳。
例如,在 UNIX 系统上运行以下 grep 命令,以查找与在目录服务器日志中找到的时间戳和端口号相对应的连接条目:
$ grep 19/Jul/2006:16:32 access | grep 57153 |
请注意,考虑到服务器时间会存在一些细微差别,因此从时间戳中排除了秒值。
目录代理服务器日志中的相应行应类似于以下内容:
[19/Jul/2006:16:32:51 -0500] - SERVER_OP - INFO - Created BIND LDAP connection s_conn=sunds-d1m1-9389:34 client=0.0.0.0:57153 server=idm160.central.sun.com:9389 main |
此行表明目录代理服务器创建了到 s_conn=sunds-d1m1-9389:34 的 BIND 连接。目录代理服务器将其自身标识为 TCP 端口 57153 上的客户端 client=0.0.0.0。
可从此日志行中提取的重要信息为服务器 ID 和端口号 (s_conn=sunds-d1m1-9389:34 )。
找到与上一步中标识的服务器 ID 和端口号相对应的所有操作。
要获取此信息,请搜索目录代理服务器访问日志,以找到与服务器 ID 和端口号相对应的所有操作。
例如,在 UNIX 系统上运行以下 grep 命令,可找到与上一步中找到的服务器 ID 相对应的操作。
$ grep s_conn=sunds-d1m1-9389:34 access |
在这种情况下,搜索时间戳将不起作用,因为这些操作可能会跨越数天。但是,您必须确定搜索返回的操作是否正确。如果存在多个 Create 连接语句,请确保找到与原始搜索语句相对应的语句。要执行此操作,请将此时间戳与步骤 1 中找到的时间戳进行比较。
从目录代理服务器访问日志中提取的以下内容显示了为 s_conn=sunds-d1m1-9389:34 返回的所有操作。
[19/Jul/2006:16:32:51 -0500] - SERVER_OP - INFO - Created BIND LDAP connection s_conn=sunds-d1m1-9389:34 client=0.0.0.0:57153 server=idm160.central.sun.com:9389 main [20/Jul/2006:18:01:49 -0500] - SERVER_OP - INFO - conn=31 op=0 BIND dn="cn=directory manager" method="SIMPLE" s_msgid=3 s_conn=sunds-d1m1-9389:34 [20/Jul/2006:18:01:49 -0500] - SERVER_OP - INFO - conn=31 op=0 BIND RESPONSE err=0 msg="" s_conn=sunds-d1m1-9389:34 [20/Jul/2006:18:01:49 -0500] - SERVER_OP - INFO - conn=31 op=1 SEARCH base="dc=example,dc=com" scope=2 s_msgid=4 s_conn=sunds-d1m1-9389:34 [20/Jul/2006:18:01:49 -0500] - SERVER_OP - INFO - conn=31 op=1 SEARCH RESPONSE err=0 msg="" nentries=1 s_conn=sunds-d1m1-9389:34 |
通过以上信息,您可以看到目录代理服务器上的此搜索操作的连接 ID 为 31 (conn=31)。
找到与上一步中找到的连接 ID 相对应的客户端连接 IP 地址。
要获取此信息,请搜索目录代理服务器访问日志,以找到具有正确连接 ID 和时间戳的所有操作。要使用的时间戳为步骤 1 中原始搜索语句中的时间戳。
例如,在 UNIX 系统上运行以下 grep 命令,可找到客户端连接 IP 地址:
$ grep "20/Jul/2006:18:01" access | grep conn=31 |
您所关注的行应类似于以下内容:
[20/Jul/2006:18:01:49 -0500] - CONNECT - INFO - conn=31 client=129.150.64.156:2031 server=0.0.0.0:11389 protocol=LDAP |
确定在上一步中找到的 IP 地址的所有者。
通过此信息,可以准确地确定在目录服务器上负责执行该操作的用户。