21.3. 配置日志文件
对于所有类型的日志文件,必须配置日志 创建 和日志 删除策略。日志创建策略会在启动新日志文件时设置,并在删除旧日志文件时日志删除策略集。
21.3.1. 启用或禁用日志
默认情况下启用访问和错误日志记录。但是,审计和审计失败日志记录默认是禁用的。
注意
禁用访问日志在某些情况下可能很有用,因为每个 2000 个访问目录都会大约增加 1MB 的日志文件。但是,在关闭访问日志记录前,请考虑此信息可以帮助进行故障排除。
21.3.1.1. 使用命令行启用或禁用日志记录
使用 dsconf config replace 命令修改控制目录服务器日志记录功能的 cn=config 子树中的参数:
- 访问日志:
nsslapd-accesslog-logging-enabled
- 错误日志:
nsslapd-errorlog-logging-enabled
- 审计日志:
nsslapd-auditlog-logging-enabled
- 审计失败日志:
nsslapd-auditfaillog-logging-enabled
详情请查看 红帽目录服务器配置、命令和文件参考中的相应部分。
例如,要启用审计日志记录,请输入:
# dsconf -D "cn=Directory Manager" ldap://server.example.com config replace nsslapd-auditlog-logging-enabled=on
21.3.1.2. 使用 Web 控制台启用或禁用日志记录
在 web 控制台中启用或禁用日志记录:
- 在 web 控制台中打开 Directory Server 用户界面。请参阅 第 1.4 节 “使用 Web 控制台登录到目录服务器”。
- 选择实例。
- 打开菜单,然后在 条目下选择要配置的日志类型。
- 为所选日志类型启用或禁用日志记录功能。
- (可选)设置额外的参数来定义,例如日志轮转或日志删除策略。
- 点击。
21.3.2. 配置特定于插件的日志记录
要进行调试,您可以为插件执行的操作启用访问和审计日志记录。详情请查看 Red Hat Directory Server Configuration, Command, and File Reference 中的 nsslapd-logAccess 和 nsslapd-logAudit 参数。
21.3.3. 禁用高分辨率日志时间戳
使用默认设置,Directory 服务器会记录带有纳秒精度的条目:
[27/May/2016:17:52:04.754335904 -0500] schemareload - Schema validation passed. [27/May/2016:17:52:04.894255328 -0500] schemareload - Schema reload task finished.
禁用高分辨率日志时间戳:
# dsconf -D "cn=Directory Manager" ldap://server.example.com config replace nsslapd-logging-hr-timestamps-enabled=off
注意
禁用高分辨率日志时间戳的选项已弃用,并将在以后的发行版本中删除。
禁用高分辨率日志时间戳后,目录服务器仅记录第二个精度的日志:
[27/May/2016:17:52:04 -0500] schemareload - Schema validation passed. [27/May/2016:17:52:04 -0500] schemareload - Schema reload task finished.
21.3.4. 定义日志文件轮转策略
要定期归档当前日志文件并创建新日志文件,请设置日志文件轮转策略。您可以使用命令行或 Web 控制台更新 cn=config 子树中的设置。
您可以设置以下配置参数来控制日志文件轮转策略:
- 访问模式
- 访问模式对新创建的日志文件设置文件权限。
- 访问日志:
nsslapd-accesslog-mode
- 错误日志:
nsslapd-errorlog-mode
- 审计日志:
nsslapd-auditlog-mode
- 审计失败日志:
nsslapd-auditfaillog-mode
- 日志的最大数量
- 设置要返回的最大日志文件数。达到文件数量时,Directory 服务器会在创建新日志文件前删除最旧的日志文件。
- 访问日志:
nsslapd-accesslog-maxlogsperdir
- 错误日志:
nsslapd-errorlog-maxlogsperdir
- 审计日志:
nsslapd-auditlog-maxlogsperdir
- 审计失败日志:
nsslapd-auditfaillog-maxlogsperdir
- 每个日志的文件大小
- 以 MB 为单位设置日志文件的最大大小,然后再轮转。
- 访问日志:
nsslapd-accesslog-maxlogsize
- 错误日志:
nsslapd-errorlog-maxlogsize
- 审计日志:
nsslapd-auditlog-maxlogsize
- 审计失败日志:
nsslapd-auditfaillog-maxlogsize
- 各自创建一个日志
- 设置日志文件的最长年龄。
nsslapd-accesslog-logrotationtime
andnsslapd-accesslog-logrotationtimeunit
nsslapd-errorlog-logrotationtime
andnsslapd-errorlog-logrotationtimeunit
nsslapd-auditlog-logrotationtime
andnsslapd-auditlog-logrotationtimeunit
nsslapd-auditfaillog-logrotationtime
andnsslapd-auditfaillog-logrotationtimeunit
另外,您可以使用以下参数轮转日志文件的时间:nsslapd-accesslog-logrotationsynchour
和nsslapd-accesslog-logrotationsyncmin
nsslapd-errorlog-logrotationsynchour
和nsslapd-errorlog-logrotationsyncmin
nsslapd-auditlog-logrotationsynchour
andnsslapd-auditlog-logrotationsyncmin
nsslapd-auditfaillog-logrotationsynchour
和nsslapd-auditfaillog-logrotationsyncmin
每个日志文件都以标题开头,用于标识服务器版本、主机名和端口,以简化归档或交换日志文件。例如:
389-Directory/1.4.0.11 B2018.197.1151 server.example.com:389 (/etc/dirsrv/slapd-instance)
21.3.4.1. 使用命令行定义日志文件轮转策略
使用 dsconf config replace 命令修改控制目录服务器日志记录功能的参数。例如,对于错误日志,要设置访问模式
600
,以保持最大 2
个,并轮转日志文件大小为 100
MB 或每 5 天
,请输入:
# dsconf -D "cn=Directory Manager" ldap://server.example.com config replace nsslapd-errorlog-mode=600 nsslapd-errorlog-maxlogsperdir=2 nsslapd-errorlog-maxlogsize=100 nsslapd-errorlog-logrotationtime=5 nsslapd-errorlog-logrotationtimeunit=day
21.3.4.2. 使用 Web 控制台定义日志文件轮转策略
21.3.5. 定义日志文件删除策略
如果您设置了删除策略,目录服务器会自动删除旧的
存档文件
。
注意
如果您设置了日志文件轮转策略,您只能设置日志文件删除策略。目录服务器在日志轮转时应用删除策略。
您可以设置以下配置参数来控制日志文件删除策略:
- 日志总大小
- 如果所有访问、错误、审计或审计失败日志文件的大小都增加配置的值,则会自动删除最旧的日志文件。
- 访问日志:
nsslapd-accesslog-logmaxdiskspace
- 错误日志:
nsslapd-errorlog-logmaxdiskspace
- 审计日志:
nsslapd-auditlog-logmaxdiskspace
- 审计日志:
nsslapd-auditfaillog-logmaxdiskspace
- 可用磁盘空间小于
- 当可用磁盘空间达到这个值时,最旧的存档文件会被自动删除。
- 访问日志:
nsslapd-accesslog-logminfreediskspace
- 错误日志:
nsslapd-errorlog-logminfreediskspace
- 审计日志:
nsslapd-auditlog-logminfreediskspace
- 审计日志:
nsslapd-auditfaillog-logminfreediskspace
- 当文件早于指定时间时
- 当日志文件早于配置的时间时,它会被自动删除。
- 访问日志:
nsslapd-accesslog-logexpirationtime
和nsslapd-accesslog-logexpirationtimeunit
- 错误日志:
nsslapd-errorlog-logminfreediskspace
和nsslapd-errorlog-logexpirationtimeunit
- 审计日志:
nsslapd-auditlog-logminfreediskspace
和nsslapd-auditlog-logexpirationtimeunit
- 审计日志:
nsslapd-auditfaillog-logminfreediskspace
和nsslapd-auditfaillog-logexpirationtimeunit
详情请查看 红帽目录服务器配置、命令和文件参考中的相应部分。
21.3.5.1. 使用命令行配置日志删除策略
使用 dsconf config replace 命令修改控制目录服务器日志记录功能的参数。例如,如果所有访问日志文件的总大小都增加
500
MB,则自动删除最旧的访问日志文件,请运行:
dsconf -D "cn=Directory Manager" ldap://server.example.com config replace nsslapd-accesslog-logmaxdiskspace=500
21.3.5.2. 使用 Web 控制台配置日志删除策略
21.3.6. 手动日志文件轮转
目录服务器支持所有这三个日志的自动日志文件轮转。但是,如果没有配置自动日志文件创建和删除策略,则可以手动轮转日志文件。默认情况下,可在以下位置找到访问、错误、审计和审计失败日志文件:
/var/log/dirsrv/slapd-instance
手动轮转日志文件:
- 停止该实例。
# dsctl instance_name stop
- 移动或重命名正在轮转的日志文件,以便旧日志文件可用于将来的参考。
- 启动实例:
# dsctl instance_name restart
21.3.7. 配置日志级别
访问和错误日志都可以记录不同的信息,具体取决于所设置的日志级别。
您可以设置以下配置参数来控制:
- 访问日志:
nsslapd-accesslog-level
- 错误日志:
nsslapd-errorlog-level
有关支持的日志级别的详情和列表,请参阅 红帽目录服务器配置、命令和文件参考中的相应部分。
注意
从 default 更改日志级别可能会导致日志文件快速增长。红帽建议不要更改默认值,而无需红帽技术支持要求这样做。
21.3.7.1. 使用命令行配置日志级别
使用 dsconf config replace 命令设置日志级别。
例如,要启用搜索过滤器日志记录(32)和配置文件处理(64),请将
nsslapd-errorlog-level
参数设置为 96 (32 + 64):
# dsconf -D "cn=Directory Manager" ldap://server.example.com config replace nsslapd-errorlog-level=96
例如,要启用内部访问操作日志(4)以及连接、操作和结果(256)的日志记录,请将
nsslapd-accesslog-level
参数设置为 260 (4 + 256):
# dsconf -D "cn=Directory Manager" ldap://server.example.com config replace nsslapd-accesslog-level=260
21.3.7.2. 使用 Web 控制台配置日志级别
使用 Web 控制台配置访问和错误日志级别:
- 在 web 控制台中打开 Directory Server 用户界面。请参阅 第 1.4 节 “使用 Web 控制台登录到目录服务器”。
- 选择实例。
- 配置:
- 访问日志级别:
- 打开
菜单。 - 在 Access Logging Levels 部分中选择日志级别。例如:
- 错误日志级别:
- 打开
菜单。 - 在 Error Logging Levels 部分中选择日志级别。例如:
- 点击。
21.3.7.3. 日志记录内部操作
几个操作会导致目录服务器中的其他内部操作。例如,如果用户删除条目,服务器将运行多个内部操作,例如查找条目并更新用户所属的组。本节介绍内部操作日志条目的格式。有关设置日志级别的详情,请参考 第 21.3.7 节 “配置日志级别”。
目录服务器提供以下格式内部操作日志:
- 服务器发起的内部操作
- 服务器启动的内部操作日志条目示例:
[14/Jan/2021:09:45:25.814158882 -0400] conn=Internal(0) op=0(0)(0) MOD dn="cn=uniqueid generator,cn=config" [14/Jan/2021:09:45:25.822103183 -0400] conn=Internal(0) op=0(0)(0) RESULT err=0 tag=48 nentries=0 etime=0.0007968796
对于此类型的日志条目:conn
字段设置为 Internal,后跟 (0)。op
字段设置为 0 (0) (nesting_level)。对于服务器发起的内部操作,操作 ID 和内部操作 ID 始终为 0。对于没有嵌套的日志条目,嵌套级别为 0。
- 客户端发起的内部操作
- 客户端启动的内部操作日志条目示例:
[14/Jan/2021:09:45:14.382918693 -0400] conn=5 (Internal) op=15(1)(0) SRCH base="cn=config,cn=userroot,cn=ldbm database,cn=plugins,cn=config" scope=1 filter="objectclass=vlvsearch" attrs=ALL [14/Jan/2021:09:45:14.383191380 -0400] conn=5 (Internal) op=15(1)(0) RESULT err=0 tag=48 nentries=0 etime=0.0000295419 [14/Jan/2021:09:45:14.383216269 -0400] conn=5 (Internal) op=15(2)(0) SRCH base="cn=config,cn=example,cn=ldbm database,cn=plugins,cn=config" scope=1 filter="objectclass=vlvsearch" attrs=ALL [14/Jan/2021:09:45:14.383449419 -0400] conn=5 (Internal) op=15(2)(0) RESULT err=0
对于此类型的日志条目:conn
字段设置为客户端连接 ID,后跟字符串 (内部)。op
字段包含操作 ID,后跟 (internal_operation_ID) (嵌套ing_level)。内部操作 ID 可能会有所不同,没有嵌套的日志条目,嵌套级别为 0。
如果
nsslapd-plugin-logging
参数设置为 on,并且启用了内部操作日志记录,目录服务器还会记录插件的内部操作。
例 21.1. 启用插件的内部操作日志条目
如果您删除了
uid=user,dc=example,dc=com
条目,并且引用 完整性 插件会自动从 example
组中删除此条目,服务器日志:
[time_stamp] conn=2 op=37 DEL dn="uid=user,dc=example,dc=com" [time_stamp] conn=2 (Internal) op=37(1) SRCH base="uid=user,dc=example,dc=com" scope=0 filter="(|(objectclass=*)(objectclass=ldapsubentry))" attrs=ALL [time_stamp] conn=2 (Internal) op=37(1) RESULT err=0 tag=48 nentries=1 etime=0.0000129148 [time_stamp] conn=2 (Internal) op=37(2) SRCH base="dc=example,dc=com" scope=2 filter="(member=uid=user,dc=example,dc=com)" attrs="member" [time_stamp] conn=2 (Internal) op=37(2) RESULT err=0 tag=48 nentries=0 etime=0.0000123162 [time_stamp] conn=2 (Internal) op=37(3) SRCH base="dc=example,dc=com" scope=2 filter="(uniquemember=uid=user,dc=example,dc=com)" attrs="uniquemember" [time_stamp] conn=2 (Internal) op=37(3) RESULT err=0 tag=48 nentries=1 etime=0.0000128104 [time_stamp] conn=2 (Internal) op=37(4) MOD dn="cn=example,dc=example,dc=com" [time_stamp] conn=2 (Internal) op=37(5) SRCH base="cn=example,dc=example,dc=com" scope=0 filter="(|(objectclass=*)(objectclass=ldapsubentry))" attrs=ALL [time_stamp] conn=2 (Internal) op=37(5) RESULT err=0 tag=48 nentries=1 etime=0.0000130685 [time_stamp] conn=2 (Internal) op=37(4) RESULT err=0 tag=48 nentries=0 etime=0.0005217545 [time_stamp] conn=2 (Internal) op=37(6) SRCH base="dc=example,dc=com" scope=2 filter="(owner=uid=user,dc=example,dc=com)" attrs="owner" [time_stamp] conn=2 (Internal) op=37(6) RESULT err=0 tag=48 nentries=0 etime=0.0000137656 [time_stamp] conn=2 (Internal) op=37(7) SRCH base="dc=example,dc=com" scope=2 filter="(seeAlso=uid=user,dc=example,dc=com)" attrs="seeAlso" [time_stamp] conn=2 (Internal) op=37(7) RESULT err=0 tag=48 nentries=0 etime=0.0000066978 [time_stamp] conn=2 (Internal) op=37(8) SRCH base="o=example" scope=2 filter="(member=uid=user,dc=example,dc=com)" attrs="member" [time_stamp] conn=2 (Internal) op=37(8) RESULT err=0 tag=48 nentries=0 etime=0.0000063316 [time_stamp] conn=2 (Internal) op=37(9) SRCH base="o=example" scope=2 filter="(uniquemember=uid=user,dc=example,dc=com)" attrs="uniquemember" [time_stamp] conn=2 (Internal) op=37(9) RESULT err=0 tag=48 nentries=0 etime=0.0000048634 [time_stamp] conn=2 (Internal) op=37(10) SRCH base="o=example" scope=2 filter="(owner=uid=user,dc=example,dc=com)" attrs="owner" [time_stamp] conn=2 (Internal) op=37(10) RESULT err=0 tag=48 nentries=0 etime=0.0000048854 [time_stamp] conn=2 (Internal) op=37(11) SRCH base="o=example" scope=2 filter="(seeAlso=uid=user,dc=example,dc=com)" attrs="seeAlso" [time_stamp] conn=2 (Internal) op=37(11) RESULT err=0 tag=48 nentries=0 etime=0.0000046522 [time_stamp] conn=2 op=37 RESULT err=0 tag=107 nentries=0 etime=0.0010297858
21.3.8. 禁用用于调试的访问日志缓冲
为了进行调试,您可以禁用访问日志缓冲,这默认是启用的。禁用访问日志缓冲后,目录服务器将日志条目直接写入磁盘。
重要
不要在正常操作环境中禁用访问日志。当您禁用缓冲区时,目录服务器性能会降低,特别是在负载过重。
21.3.8.1. 使用命令行禁用访问日志缓冲
使用命令行禁用访问日志缓冲:
- 将
nsslapd-accesslog-logbuffering
参数设置为 off :# dsconf -D "cn=Directory Manager" ldap://server.example.com config replace nsslapd-accesslog-logbuffering=off
21.3.8.2. 使用 Web 控制台禁用访问日志缓冲
使用 Web 控制台禁用访问日志缓冲:
- 在 web 控制台中打开 Directory Server 用户界面。请参阅 第 1.4 节 “使用 Web 控制台登录到目录服务器”。
- 选择实例。
- 打开
。 - 选择 Disable Access Log Buffering。
- 单击。