[Tip]每次查看上一分钟的messages日志

最近需要对messages日志中的OOM日志做监控,自然就有了“每次查看上一分钟的messages日志”日志的需求。Linux查看日志自然是shell最方便的。

  • 第一版
time=$(TZ='Asia/Shanghai' date -d "1 minute ago" +"%H:%M")
tail -n 10000 /var/log/messages | grep ${time}"

能用,但是不久就收到了误报的反馈,因为只grep的%H:%M,那么12:12:0000:12:12的日志都会命中🤣

  • 第二版
time=$(TZ='Asia/Shanghai' date -d "1 minute ago" +"%d %H:%M:")
grep ${time}" /var/log/messages

采用更严格的过滤规则,明确日期并且在时间后面加上冒号,这个版本稳定工作了2周,直到2021年,收到反馈完全没有数据上报了。
查看日志发现定时任务正常运行,但是因为date输出默认对一位数的日期补0,但是messages日志中没有这么做,所以新年开始就一直没有日志命中。真是哭笑不得的bug😂

  • 第三版
time=$(TZ='Asia/Shanghai' date -d "1 minute ago" +"%-d %H:%M:")
grep ${time}" /var/log/messages

所幸date支持不补〇的输出格式,在%后面加-即可。

至此,稳定可用的日志监控诞生😄

posted @ 2021-01-06 22:25  changediff  阅读(491)  评论(0编辑  收藏  举报