今有需求:需要監控每隔五分鐘檢測一次日誌文件是否出自按某個關鍵字。利用過濾全部的日誌信息 雖然可以過濾出來關鍵字告警,但是修復後,依然還是會報警,存在侷限性,所以需要使用以下辦法來實現需求。
實現思路比較簡單,循環獲取5分鐘內的時間戳,然後從日誌文件中grep這個時間戳即可。代碼如下:
#!/bin/sh
LOG_FILE=xxx //日誌文件
KEY_WORDS="xxx" //過濾的關鍵字
cat /dev/null > tmp.txt
for (( i = 5; i >=0; i-- )) ; do
grep "$(date +"%Y-%m-%d %H:%M" -d "-$i min")" $LOG_FILE >> tmp.txt //循環獲取五分鐘內的時間戳
done
//判斷是否可以獲取關鍵字,無獲取關鍵字則輸出爲0 獲取到了關鍵字則輸出爲1
if [ -z "`cat tmp.txt | grep "$KEY_WORDS"`" ]; then
echo "0"
else
echo "1"
fi