apache下面四个tomcat,监控tomcat的catalina.log是否出现ERROR等。
#!/bin/sh
#set -x
#SYS_TIME=date +"%Y-%m-%d %H:%M"
TOMCAT1_LOG="/home/tomcat01/logs/catalina.out"
TOMCAT2_LOG="/home/tomcat02/logs/catalina.out"
TOMCAT3_LOG="/home/tomcat03/logs/catalina.out"
TOMCAT4_LOG="/home/tomcat04/logs/catalina.out"
RUNNING_LOG="/home/tomcatlog/running.log"
ERROR_LOG="/home/tomcatlog/54error.log"
TEMPLOG="/home/tomcatlog/templog.log"
KEYWORLD="/home/tomcatlog/keyworld.conf"
#########Program start############
for LOGFILE in "$TOMCAT1_LOG" "$TOMCAT2_LOG" "$TOMCAT3_LOG" "$TOMCAT4_LOG"
do
LOG_STATUS_TIME=`stat -c %y $LOGFILE |awk -F '.' '{print $1}'`
END_TIME=`date -d "$LOG_STATUS_TIME" +"%Y-%m-%d %H:%M"`
for ((i=300;i>=0;i=i-60))
do
START_TIME=`date -d "$LOG_STATUS_TIME" +%s|awk -v second="$i" '{print strftime("%Y-%m-%d %H:%M",$0-second)}'`
grep -a "${START_TIME}" $LOGFILE > /dev/null
if [ $? == 0 ]
then
break
fi
done
# echo $LOG_STATUS_TIME
# echo $LOGFILE
# echo $START_TIME
# echo $END_TIME
START_LINE=`sed -n "/$START_TIME/=" $LOGFILE | head -n1`
END_LINE=`sed -n "/$END_TIME/=" $LOGFILE | tail -n1`
echo $START_LINE
echo $END_LINE
sed -n "${START_LINE},${END_LINE}p" $LOGFILE > $TEMPLOG
while read keyworld
do
world=$(echo ${keyworld} | awk '{print $2}')
while read templog
do
worldinfo=$(echo ${templog}| grep ${world} | grep -v grep)
if [ -z "${worldinfo}" ]
then
# echo "`date` $LOGFILE OK" > /dev/null
else
LogContent1=$(echo ${templog})
echo "$LogContent1 ${world} find in $LOGFILE" >> $ERROR_LOG
fi
done < $TEMPLOG
done < $KEYWORLD
done
ftp -i -n 192.168.XX。XXX <<!
user XXX XXX
lcd /home/tomcatlog/
cd abc
binary
put 54error.log
bye
!
=====================================================================
keyworld.conf 内容
vi keyworld.conf
1 ERROR