我希望当事件在日志中连续多次出现时执行一个应用程序,例如:
Oct 17 13:09:24 mail clamav-milter[30942]:
x
x
x
发生了 4 次,但该计数器也应每小时重置一次。这可以用rsyslog
或 来做吗syslog-ng
?
谢谢
答案1
rsyslog
是syslog-ng
日志收集工具。除了记录收到的消息外,它们不能执行任何其他操作。
您需要一个日志监控工具。下面是一个文章使用一些免费的日志监控工具。
答案2
您可以使用 syslog-ng 来实现这一点。您可以使用模式数据库来识别消息,然后使用关联规则来计算这些消息的数量(使用适当的上下文超时来重置它)。您还可以定义一个操作(例如,发送电子邮件或执行脚本)。patterndb 和相关功能如下所述:https://www.balabit.com/documents/syslog-ng-ose-latest-guides/en/syslog-ng-ose-guide-admin/html/chapter-patterndb.html
但是如果您可以安装最新版本的 syslog-ng(3.8.1),那么您就可以更轻松地获得几乎相同的功能,只需使用过滤器即可。https://www.balabit.com/documents/syslog-ng-ose-latest-guides/en/syslog-ng-ose-guide-admin/html/grouping-by-parser.html (syslog-ng 的分组功能不能直接触发电子邮件警报,只能记录消息,因此您必须创建单独的日志路径和与此触发的日志消息匹配的过滤器,然后发送电子邮件或使用 smtp()/program() 目标执行脚本)
问候,罗伯特