有没有办法告诉monit在一定时间内在日志文件中是否有超过X个错误(例如,匹配“ERROR”的行)?
我的用例是:错误有时出现在我的日志文件(即networking错误,远程服务器打嗝等),他们并不重要。 但是,如果有一个高峰,我想要通知,因为这需要快速调查(例如,拙劣的部署,新引入的bug)。
理想情况下,我正在考虑类似的东西
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
但我想知道是否有更好的select。
我不认为Monit是评估这些错误信息频率的最佳select。 文件内容testing程序的限制可能会使这个棘手的问题,而不需要外部的解决scheme。 请参阅: http : //mmonit.com/monit/documentation/monit.html#file_content_testing
特别:
内容仅在每个周期进行检查。 如果在两次检查之间添加和删除内容,则不会引起注意。
在启动时,读取位置被设置为文件的结尾,Monit继续扫描到每个周期的文件末尾。 但是,如果文件大小应该减less或inode更改读取位置设置为文件的开始。
只有以换行符结尾的行才被检查。 因此,行被忽略,直到他们完成这个性格。 另请注意,只有一行的前511个字符被检查。
我会轮询远程服务器或相关服务来检查运行状况。