性能监控之日志监控部分

这部分是以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 notification

你可能感兴趣的:(职场,休闲,性能监控,日志监控)