[Tip]每次查看上一分鐘的messages日志
最近需要對messages日志中的OOM日志做監(jiān)控,自然就有了“每次查看上一分鐘的messages日志”日志的需求。Linux查看日志自然是shell最方便的。
- 第一版
time=$(TZ='Asia/Shanghai' date -d "1 minute ago" +"%H:%M")
tail -n 10000 /var/log/messages | grep ${time}"
能用,但是不久就收到了誤報(bào)的反饋,因?yàn)橹籫rep的%H:%M,那么12:12:00和00:12:12的日志都會(huì)命中??
- 第二版
time=$(TZ='Asia/Shanghai' date -d "1 minute ago" +"%d %H:%M:")
grep ${time}" /var/log/messages
采用更嚴(yán)格的過濾規(guī)則,明確日期并且在時(shí)間后面加上冒號(hào),這個(gè)版本穩(wěn)定工作了2周,直到2021年,收到反饋完全沒有數(shù)據(jù)上報(bào)了。
查看日志發(fā)現(xiàn)定時(shí)任務(wù)正常運(yùn)行,但是因?yàn)閐ate輸出默認(rèn)對一位數(shù)的日期補(bǔ)0,但是messages日志中沒有這么做,所以新年開始就一直沒有日志命中。真是哭笑不得的bug??
- 第三版
time=$(TZ='Asia/Shanghai' date -d "1 minute ago" +"%-d %H:%M:")
grep ${time}" /var/log/messages
所幸date支持不補(bǔ)〇的輸出格式,在%后面加-即可。
至此,穩(wěn)定可用的日志監(jiān)控誕生??

浙公網(wǎng)安備 33010602011771號(hào)