项目需求:

    监测Tomcat运行日志,一旦日志中出现Exception关键字就发出邮件报警


项目分析:

    以单台服务器的多个Tomcat为例。

#!/bin/bash
# -*-coding:utf-8-*-
#过滤的关键字
keywords=Exception
#当前主机的IP地址
IPAddress=`ip add|grep eth0 |grep inet| awk '{print $2}'|awk -F"/" '{print $1}'`
#列出在线的Tomcat
ps -ef |grep tomcat |grep -v grep|awk '{print $9}'|awk -F"/" '{print $4}'|awk -F"-" '{print $2}' |sort >/tmp/Tomcat_Online.log
#每次执行前,必须清空/tmp/Tomcat_Online_$IPAddress.log日志内容
echo "" >/tmp/Tomcat_Online_$IPAddress.log


cat /tmp/Tomcat_Online.log | while read line
do
        grep -n $keywords /usr/local/tomcat-$line/logs/catalina.out >/dev/null
        if [ $? -eq '0' ]; then
                Err_Line=`grep -n $keywords /usr/local/tomcat-$line/logs/catalina.out |awk -F":" '{print $1}' |tail -n 3| tr '\n' ' '`
                printf "$IPAddress的tomcat-$line日志发生异常,最近三个异常行数为:$Err_Line \n"|sort >>/tmp/Tomcat_Online_$IPAddress.log
                #echo "当前服务器$IPAddress的tomcat-$line日志发生异常" |mail -s "$IPAddress的tomcat-$line日志发生异常" jack.liu@leaderment.com 
        else
                continue;
        fi
done