在我重新发明轮子并开始编写脚本之前,是否有一种简单的方法(或现有工具)可以监视 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