9.4. ds-logpipe.py


命名管道日志脚本可以使用命名管道替换任何目录服务器日志文件(访问、错误和审计)。该管道可以附加到另一个脚本,这些脚本可以在将日志数据发送到输出之前处理日志数据,例如仅编写与特定模式或特定事件类型匹配的行。

使用命名管道脚本提供了灵活性:

  • 错误日志级别可能会设置非常高,以诊断问题,仅创建上几百或千万日志消息的日志,且无性能命中。
  • 可以过滤消息,以仅保留感兴趣的某些事件。例如,命名管道脚本只能在访问日志中记录 BIND 尝试失败,其他事件将被丢弃。
  • 脚本可用于在发生事件时发送通知,如添加或删除用户条目或发生特定错误时。

有关语法和命令行选项的详情,请查看 ds-logpipe.py(1) man page。

例子

第 7.5 节 “使用命名的 Pipe 替换日志文件” 中涵盖了为命名管道日志记录配置服务器的步骤。

命名管道日志脚本最基本的用法仅指向命名的管道。

例 9.12. 基本命名的 Pipe Log Script

# ds-logpipe.py /var/log/dirsrc/slapd-example/errors.pipe
Copy to Clipboard Toggle word wrap
注意

当脚本退出(由于其完成,或者因为通过 SIGTERM 或 Ctrl+C 终止),脚本会将错误日志的最后 1000 行转储到标准输出。

脚本可以在后台运行,您可以以交互方式监控输出。在这种情况下,命令 kill -1 %1 可用于告诉脚本将缓冲区的最后 1000 行转储到 stdout,并在后台继续运行。

例 9.13. 在背景中运行命名的 Pipe Log Script

# ds-logpipe.py /var/log/dirsrc/slapd-example/errors.pipe &
Copy to Clipboard Toggle word wrap

要在脚本退出(或被中断或中断)时转储最后 1000 行,并自动将输出保存到文件中,请将脚本输出重定向到用户定义的文件中。

例 9.14. 从 Named Pipe Log Script 保存输出

# ds-logpipe.py /var/log/dirsrc/slapd-example/errors.pipe > /etc/dirsrv/myerrors.log 2>&1
Copy to Clipboard Toggle word wrap

可将命名管道脚本配置为通过目录服务器进程自动启动和停止。这需要服务器的 PID 文件的名称,该文件将在脚本运行时使用 -s 参数写入脚本的 PID。可以通过指向服务器 PID 文件或通过提供实际进程 ID 号(如果服务器进程已在运行)来引用服务器的 PID。

例 9.15. 指定 Serve PID

# ds-logpipe.py /var/log/dirsrc/slapd-example/errors.pipe --serverpidfile /var/run/dirsrv/slapd-example.pid
Copy to Clipboard Toggle word wrap

可以调用插件,从命名管道读取日志数据,并对其执行一些操作。

例 9.16. 使用相关插件命名 Pipe Log Script

# ds-logpipe.py /var/log/dirsrc/slapd-example/errors.pipe --plugin=/usr/share/dirsrv/data/logregex.py logregex.regex="warning"
Copy to Clipboard Toggle word wrap

例 9.16 “使用相关插件命名 Pipe Log Script” 中,只有包含字符串 警告 的日志行才会存储在内部缓冲区中,并在脚本退出时打印。

如果没有通过 script 参数传递插件,脚本只会缓冲 1000 日志行(默认),并在退出时打印它们。脚本提供了两个插件:

  • logregex.py 只保留与给定正则表达式匹配的日志行。插件参数的格式是 logregex.regex=模式,以指定要使用的字符串或正则表达式。可以有多个 logregex.regex 参数,它们都被视为 AND 语句。错误日志行必须与所有给定参数匹配。要允许任何匹配的日志行作为记录(OR),请使用带字符串或表达式之间的管道(|)的单个 日志regex.regex 参数。有关正则表达式及其语法的更多信息,请参阅 pcre 或 Python 正则表达式文档。
  • failedbinds.py 日志只失败 BIND 尝试,因此此插件仅用于访问日志。这会获取选项 failedbinds.logfile=/path/to/access.log,这是实际日志消息要写入的文件。此插件是一个复杂的插件示例,它非常容易处理,是参考执行其他类型的访问日志处理的好情况。
返回顶部
Red Hat logoGithubredditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

通过我们的产品和服务,以及可以信赖的内容,帮助红帽用户创新并实现他们的目标。 了解我们当前的更新.

让开源更具包容性

红帽致力于替换我们的代码、文档和 Web 属性中存在问题的语言。欲了解更多详情,请参阅红帽博客.

關於紅帽

我们提供强化的解决方案,使企业能够更轻松地跨平台和环境(从核心数据中心到网络边缘)工作。

Theme

© 2025 Red Hat