性能監控之日誌監控部分

這部分是以oralce的alert日誌爲例能夠監控你想要監控的日誌,用日誌的完整路徑替換oralce的日誌路徑就能夠了
#!/bin/bash  
rm  /export/home/monitorsh/alertcom.log
#SERVERNAME  
SERVERNAME=$(uname -a | awk '{ print $2}')
filename="/export/home/monitorsh/"$SERVERNAME"_DBSERVERLOGMONITOR.sql"
echo "connect user/password" >>${filename}
#要監控的日誌,只對變化部分,寫入記錄,若是須要全文掃描,去掉下面nl和comm行,直接用要掃描的日誌文件的絕對路徑和文件名替換 alertcom1.log文件,sed行的替換就能夠了,注意將文件中的特殊字符轉換一下,不然可能出錯;首次執行可能由於無歷史文件參考而出錯,第二 次執行則不會出錯
#給日誌文件加行標便於比較
nl /export/home/oracle/admin/orcl/bdump/alert_orcl.log > /export/home/monitorsh/alertnew.log
#比較新日誌和上一次統計時的日誌,取出差別部分放入 alertcom1.log
comm -23 /export/home/monitorsh/alertnew.log /export/home/monitorsh/alertold.log> /export/home/monitorsh/alertcom1.log
#去掉文件中的特殊字符,圖書字符在搜索關鍵字是可能會致使異常
sed "s/\'/\'\'\'\'/" /export/home/monitorsh/alertcom1.log  >/export/home/monitorsh/alertcom.log
linkstring=$(echo "'||chr(13)||chr(10)||'")
while read line
do      
   keyword=$(echo ${line} | awk '{print $2}')
   while read line2
   do      
   #在文檔中搜索關鍵字
     keyline=$(echo ${line2} | grep ${keyword} | grep -v grep)
     line2num=$(echo ${line2} | awk '{print $1}')
     if [ -z "${keyline}" ]
     then   
       echo "OK" >>/export/home/monitorsh/sql/getlog.log
     else  
       LogContent1=$(echo ${line2})
#得到關鍵字所在行的行標和行內容
       LogContent=$line2num"|""""$LogContent1"""
       echo "insert into TAB_DBSERVERLOGMONITOR values ("$line2num","$SERVERNAME",'"$keyword"','"$LogContent"','oracle',to_char(sysdate,'yyyymmddhh24miss'),to_char(sysdate,'yyyymmddhh24miss'));" >>${filename}
       echo "commit;"  >>${filename}
     fi
   done < /export/home/monitorsh/alertcom.log
done < /export/home/monitorsh/keyword.conf
rm  /export/home/monitorsh/alertold.log
mv  /export/home/monitorsh/alertnew.log /export/home/monitorsh/alertold.log

filename=$SERVERNAME"_DBSERVERLOGMONITOR.sql"

ftp -i -n 10.43.94.15 <<!
user user password
cd /export/home/monitorsh/sql
lcd /export/home/monitorsh
binary
prompt
put ${filename}
bye
!

關鍵字定義文檔keyword.conf文件格式:
1 down
2 fail
3 notificationphp

相關文章
相關標籤/搜索