使用 monit 监控错误率

使用 monit 监控错误率

有没有办法告诉 monit,如果日志文件中在一定时间内出现超过 X 个错误(例如与“ERROR”匹配的行),则提醒我?

我的用例是:我的日志文件中有时会出现错误(即网络错误、远程服务器故障等),但这些错误并不严重。但如果出现峰值,我希望收到通知,因为这需要快速调查(例如部署失败、新引入的错误)​​。

理想情况下,我正在考虑类似的事情

check file myapplog with path /var/myapp.log every 2 cycles
   if lines matching "ERR" > 10% then alert

我想我可以通过编写外部脚本然后执行类似的事情来获得它

check program cer with path /usr/local/bin/checkerrorrate.sh 
   if status != 0 then alert

但我想知道是否还有更好的选择。

答案1

我不认为监控是评估这些错误消息频率的最佳选择。文件内容测试例程的局限性可能会使这变得棘手,而无需使用外部解决方案。请参阅:http://mmonit.com/monit/documentation/monit.html#file_content_testing

具体来说:

  • 内容只会在每个周期检查一次。如果在两次检查之间添加或删除内容,则不会被注意到。

  • 启动时,读取位置设置为文件末尾,Monit 在每个周期继续扫描到文件末尾。但如果文件大小减小或 inode 发生变化,则读取位置设置为文件开头。

  • 仅检查以换行符结尾的行。因此,除非行以换行符结尾,否则将忽略这些行。另请注意,仅检查一行的前 511 个字符。

我将轮询远程服务器或相关服务来检查健康状况。

相关内容