標籤:日誌格式化
nagios日誌格式化時間戳記指令碼
logformat.sh
#!/bin/bash#對nagios日誌時間進行格式轉換name=$1perl -i -pe ‘($t) = ($_ =~ m/^\[(\d+)\]/); $nice=scalar localtime $t; s/^\[(\d+)\]/[$nice]/‘ ${name}
你可以執行bash logformat.sh 加你的記錄檔名
轉換前的格式:
[1470255922] EXTERNAL COMMAND: PROCESS_SERVICE_CHECK_RESULT;192.168.123.456;cluster;0;ok
轉換後的格式:
[Wed Jul 27 00:00:00 2016] CURRENT HOST STATE: 192.168.666.999;UP;HARD;1;PING OK - Packet loss = 0%, RTA = 0.33 ms
需求:得到指定時間段內的日誌資訊
Line_number=`cat -n filename |grep "匹配的關鍵詞" |head -n 1`
#為什麼加 head -n 1呢? 因為可能有多行一樣的 我肯定要取第一次出現的行號。
tail -n +$Line_number filename #得到從匹配行到頁末
Line_number=`cat -n filename |grep "匹配的關鍵詞" |tail -n 1`
#因為可能多行一樣的,我下面想取開頭到最後一次出現的行號。
head -n +$Line_number filename #得到從頁首到匹配的最後一行
我們用上面的方法得到兩個不確定的行號,然後用下面的方法得到我們想要的內容
sed -n ‘x,yp‘ filename #列印檔案指定行的內容
關鍵詞獲得:
我沒有用Linux時間戳記的原因是因為Linux時間戳記得到的太精準,我不確定那個時間有沒有日誌資訊產生
env LANG=en_US.UTF-8 date +"%h %d %H" #這種格式是為了匹配我的日誌格式化後的日誌
env LANG=en_US.UTF-8 date +"%h %d 00:" #得到今天的零點的日誌
env LANG=en_US.UTF-8 date +"%h %d 14:" #得到今天的下午四點的日誌
env LANG=en_US.UTF-8 date -d "1 day ago" +"%h %d 15:" #得到前一天下午三點的日誌
#!/bin/bash#filename :text.shkey_point=`env LANG=en_US.UTF-8 date -d "1 day ago" +"%h %d 15:"`filename=/var/log/nagios3/kpnagios/mail.txtLine_number=`cat -n $filename |grep "$key_point" |head -n 1|awk ‘{print $1}‘ `#為什麼加 head -n 1呢? 因為可能有多行一樣的 我肯定要取第一次出現的行號。tail -n +$Line_number $filename >>kpshju1 #得到從匹配行到頁末
本文出自 “積少成多” 部落格,謝絕轉載!
nagios日誌粘合