Linux脚本(2)__到服务器log文件上抓异常信息并统计后发邮件

作用:到服务器的log文件中查找关键字,并进行统计.最后发邮件.

使用到的主要命令:

mutt 发送邮件

grep 查找内容

sort 排序

head 截取文件

uniq 统计

废话不多说,直接上脚本:

 1 #!/bin/sh
 2 cd /data/script/grep_exception
 3 export PATH="/usr/kerberos/bin:$PATH"
 4 export KRB5CCNAME=/tmp/krb5cc_pub_$$
 5 trap kdestroy 0 1 2 3 5 15
 6 kinit -k -t /etc/krb5.keytab
 7 
 8 TODAY="`date -d "today" +%Y%m%d%H%M`"
 9 LOG_FILE=rs/exception.log
10 HOSTS=hostlist.txt
11 
12 #reset lof file 
13 cat /dev/null > ${LOG_FILE}
14 for SERVER in `cat ${HOSTS} |grep -v "#"|sort|uniq`
15 do
16        echo "====================================="${SERVER}"====================================="
17        CONTENT1="`ssh web@${SERVER} "cat /data/logs/server.log  | grep Exception | sort | uniq -c | sort -nr | head -n 50"`"
18         if [ -n "${CONTENT1}" ]; then
19                 echo "[${SERVER}]" >> ${LOG_FILE}
20                 echo "${CONTENT1}" >> ${LOG_FILE}
21             echo "" >> ${LOG_FILE}
22                 echo "============== `hostname` ==========" >> ${LOG_FILE}
23         echo "" >> ${LOG_FILE}
24         fi
25 done
26 
27 #send mail
28 if [ -s "${LOG_FILE}" ]; then
29     echo "over" | mutt -F ./muttrc.q -s "[Server] LOG STATISTICS ${TODAY}" -i "${LOG_FILE}" admin@admin.com,dev@admin.com
30 fi

 

具体解释一下这里:

1 cat /data/logs/server.log  | grep Exception | sort | uniq -c | sort -nr | head -n 50

cat后现实文件内容

grep后仅显示包含"Exception"的行

sort后把相同的行排列到一起

uniq -c去除相同行;-c添加数量统计

sort -nr 按照数字倒序排列 这样就会把出现次数最多的异常显示在最前边.

head -n 50 只取头50行

 

发邮件部分:

1 mutt -F ./muttrc.q -s "[Server] LOG STATISTICS ${TODAY}" -i "${LOG_FILE}" admin@admin.com,dev@admin.com

mutt是linux发邮件的命令

-F 指定./muttrc.q为mutt的配置文件

-s 指定邮件的主题。

-i 指定文件

 

关于mutt具体可以参考 http://blog.sina.com.cn/s/blog_6cde2617010142kp.html

 

之后再把这个sh脚本加入到crontab中即可实现定时发送异常监控邮件的功能.

posted on 2014-10-23 12:54  beenoisy  阅读(542)  评论(0编辑  收藏  举报

导航