我正在为我们的系统添加一些nagios警报,其中一些将监视某些事件在nginx / apache日志中的发生率(或从这些日志解析值)。到目前为止,我处理这个问题的方式是使用简单的shell脚本tail -f'ing将日志记录25秒左右到临时文件中,然后杀死进程,并在临时文件上运行awk等。这里的目标是获取25秒的日志“样本”,然后进行分析。
显然,这不是最理想的,因为由于这些临时文件而增加了磁盘IO——我真正想要的是一个“增强”的tail -f,它会在一定数量的秒数后清除管道。也就是说:
tail -f --interval '5 seconds' | grep "/serve"
将在5秒内跟踪日志并显示所有具有“/serve”的行。
我想象我可以很快地编写一个ruby脚本来完成这个工作,但我想确保没有更unixy的方法来完成这个工作。从高层次上讲,有没有更好的方法来取样过去N秒的日志(不,我不想解析时间戳等)?
显然,这不是最理想的,因为由于这些临时文件而增加了磁盘IO——我真正想要的是一个“增强”的tail -f,它会在一定数量的秒数后清除管道。也就是说:
tail -f --interval '5 seconds' | grep "/serve"
将在5秒内跟踪日志并显示所有具有“/serve”的行。
我想象我可以很快地编写一个ruby脚本来完成这个工作,但我想确保没有更unixy的方法来完成这个工作。从高层次上讲,有没有更好的方法来取样过去N秒的日志(不,我不想解析时间戳等)?