我已经使用 monit 一段时间了。我所做的检查之一是确保我的邮件服务器没有被滥用。我使用 milter-limit 来限制发送速率 - 它会记录到 syslog 中。在使用 bookworm 之前,我可以让它扫描 syslog 文件以查找特定内容。我还没有看到任何允许我使用 systemd 日志执行此操作的东西 - 有办法吗?
经过调查,似乎可以使用 logcheck 或journalcheck来创建一个脚本供 monit 运行并检查输出,但也许我错过了一个更简单的选项?
我已经使用 monit 一段时间了。我所做的检查之一是确保我的邮件服务器没有被滥用。我使用 milter-limit 来限制发送速率 - 它会记录到 syslog 中。在使用 bookworm 之前,我可以让它扫描 syslog 文件以查找特定内容。我还没有看到任何允许我使用 systemd 日志执行此操作的东西 - 有办法吗?
经过调查,似乎可以使用 logcheck 或journalcheck来创建一个脚本供 monit 运行并检查输出,但也许我错过了一个更简单的选项?
Systemd 日志不是文本文件,而是由几个二进制文件组成。因此,Monit 无法从文件中搜索消息。
目前,导出/分析 Systemd 日志的脚本是实现此目的的唯一方法。Lutz
如果您需要文本日志,请安装传统的 syslog 守护程序 - 可以配置 syslog-ng 和 rsyslog 以从 systemd 日志中提取消息(甚至以两种不同的方式),然后您可以像以前一样进行操作。
对于 syslog-ng 来说,这是默认配置的一部分;Debian 的标准 rsyslog 也默认设置了“imjournal”输入模块,这是旧版 Debian 同时提供两种日志格式的方式。
(上述两个程序都从 .journal 文件中读取消息,因此它们可以通过日志元数据(如单位名称)进行过滤;您无需启用 ForwardToSyslog 即可使它们工作。)
您还可以推出一个自定义的.service,它只执行
journalctl --follow > system.log
(可能带有-u
或其他过滤选项),但它不会有日志轮换等,所以它只是一个“零依赖 DIY”选项。定期的基于命令的“journalctl | grep”检查实际上并不是一个坏选择 - 它可能不如纯文本文件那样高效,但 journalctl 明确支持使用从最后一个检查点重新启动
--cursor-file=
;我使用它让 cron 每小时/每天通过电子邮件向我发送所有错误(-p err
)消息。