![如何最好地监控和警告日志中不存在的事件?](https://linux22.com/image/598409/%E5%A6%82%E4%BD%95%E6%9C%80%E5%A5%BD%E5%9C%B0%E7%9B%91%E6%8E%A7%E5%92%8C%E8%AD%A6%E5%91%8A%E6%97%A5%E5%BF%97%E4%B8%AD%E4%B8%8D%E5%AD%98%E5%9C%A8%E7%9A%84%E4%BA%8B%E4%BB%B6%EF%BC%9F.png)
通过使用 syslog-ng 捕获的日志,我希望能够自动监控日志,并在发生以下情况时收到警报:不出现符合特定条件的日志事件。例如,对于基于订阅的网站,如果 6 小时内没有订单,则向此人或该组人发送电子邮件或短信。
有什么好方法可以做到这一点?
答案1
http://labs.consol.de/nagios/check_logfiles是一个 Nagios 插件,用于监控日志文件。通常,您会检查是否存在某种模式(错误消息)。但也可以逆转这种情况。例如,如果您每天早上运行 check_logfiles --logfile /var/log/mybackup.log --criticalpattern '!backup successful',如果自上次运行 check_logfiles 以来没有“备份成功”消息条目,您将收到警报。
格哈德
答案2
由于某个事件至少每六个小时发生一次的信息特定于写入日志的应用程序,因此最好能够监控自身并在事件未按预期发生时写入日志条目。如果写入日志信息的应用程序是在本地开发的,我会推荐此解决方案。
如果这不可能,我会让确保事件发生的机制尽可能靠近应用程序。也许可以从启动执行日志的应用程序的同一启动脚本在后台启动看门狗。当应用程序停止时,脚本也会停止看门狗。
另一个选择是,如果您因为某种原因想要保留启动脚本的原始状态,那么可以创建一个执行日志监视的 cron-job。
无论哪种情况。确保日志条目的级别足够严重,以便提醒您使用您用于监控日志的任何工具查看它。对于您没有想到但应该监控的事情,监听日志级别比监听特定日志条目更好、更具前瞻性和包容性。这意味着至少是警告级别。
答案3
Zabbix 是另一种类似于 Nagios 的监控解决方案。Zabbix 能够监控文件中的各种字符串,并根据您指定的条件(找到或未找到)启动触发警报。Zabbix 还支持“回顾”日志中的不同时间点,这有助于防止旧事件被误报。可以配置警报以发送电子邮件或短信。
Zabbix网站:http://www.zabbix.com/
Zabbix 的一些日志监控文档:http://www.zabbix.com/documentation/2.0/manual/config/items/itemtypes/log_items
答案4
Nagios 可以轻松帮你做到这一点。就我个人而言,我喜欢任何可以在命令行上轻松运行和/或通过 Nagios 或 Crontab 轻松设置的东西。
罗格机器人只需输入一个简单的命令行,就可以完全按照 OP 的要求完成操作:
./logrobot autonda /prod/apps/mylogfile 60m‘订单已提交’ ‘。’ 1 2 subscription_orders -ndnotfoundn
只需更改加粗的字符串,当然还有日志文件路径以满足您的需要。
基本上,如果在日志文件 /prod/apps/mylogfile 中未找到至少 1 个“订单已提交”条目,此命令将发出警告警报。如果在日志中未找到至少 2 个“订单已提交”条目,它将发出严重警报。