如何监控 journald 在某种条件下调用程序?

如何监控 journald 在某种条件下调用程序?

在我重新发明轮子并开始编写脚本之前,是否有一种简单的方法(或现有工具)可以监视 systemd 日志并在检测到某些日志条目或条件时采取行动?

示例:如果在过去二十分钟内记录了错误,则发送电子邮件,或者在 MySQL 数据库中记录失败的登录尝试的 IP 地址。

就像是:

IF: `journalctl -p err --since "20 min ago"` IS NOT EMPTY
THEN: `journalctl -p err --since "20 min ago" |
       sed '1!b;s/^/To: [email protected]\n
       Subject: Errors in the last 20 minuites\n\n/' |
       sendmail -t

答案1

我假设您想对多台服务器执行此操作,因为 serverfault 是关于在商业环境中管理服务器的。

这对你来说可能有点小题大做,但我建议你看一下像graylog这样的日志收集工具。

你也可以使用 journal-brief https://github.com/twaugh/journal-brief

可以从 cron 运行此程序,以通过电子邮件发送日记条目简报。示例:

cat /etc/cron.daily/journal-brief
#!/bin/sh
exec journal-brief -p err

相关内容