我正在向我们的系统添加一些 nagios 警报——其中一些将监控某些事件命中 nginx/apache 日志(或从这些日志中解析值)的速率。到目前为止,我解决问题的方法是一个简单的shell脚本tail -f'ing日志25秒左右到一个临时文件,杀死进程,然后在临时文件上运行awk等。这里的目标是在 25 秒内获得一个日志“样本”,然后执行分析。
这显然不太理想,因为这些临时文件导致磁盘 IO 增加——我真正想要的是一个“增强的” tail -f ,它会在一定秒数后干净地终止管道。IE:
tail -f --interval '5 秒' | grep“/服务”
将日志拖尾 5 秒,并向我显示所有带有“/serve”的行。
我想我可以快速编写一个 ruby 脚本来完成此操作,但我想确保没有更统一的方法来完成此操作。在高层次上,有没有更好的方法从最后 N 秒中获取日志样本(不,我宁愿不解析时间戳等)