监控访问日志文件是否在规定的时间内没有发生变化,若是则发出警报

公司已经开始使用SOA的架构开发部署所有系统,将系统分成web ,app,das,db四个层,从各个层面部署规划系统,web层用nginx,app层用tomcat,das层用wso2,db层用mysql。感兴趣的架构师和程序员可以去看看有关SOA方面的东西,这是个好东西。

都是摸着石头过河,在das层wso2经常会出现假死的情况,目前没有好的办法从更深的层面去监控和解决。临时想了个办法,监控其访问日志文件,如果该日志文件在10分钟之内没有发生变化,则认为wso2服务假死,从而重启该服务。

#!/bin/bash

#created by cxc 2012-11-30
#for monitor wso2 which is alive or dead
. /etc/profile
wso2_log_path="/usr/local/wso2dataservices/repository/logs"
date1=`date +%Y-%m-%d`
beyond_time="600"  #定义超出的时间(秒)
log="http_access_${date1}.log"

log_change_time=`stat ${wso2_log_path}/${log} |grep "Chang"|awk -F"." '{print $1}'|awk '{printf $2" "$3}'`
timestamp_log_change_time=`date -d "${log_change_time}" +%s`

nowtime=`date +%Y-%m-%d\ %H:%M:%S`
timestamp_nowtime=`date -d "${nowtime}" +%s`
total_timestamp=`echo "${timestamp_nowtime}-${timestamp_log_change_time}"|bc`

if [ "${total_timestamp}" -gt ${beyond_time} ]
then
/usr/bin/sendEmail -f "wso2_alert<[email protected]>" -s smtp.gmail.com:587 -xu XXXUSER -xp XXXpasswd -o message-charset=utf8 -t [email protected] -u "ws02_alert" -m "gz_das ${log} have not change in 10min,please check wso2 `date`"

/usr/local/wso2dataservices/bin/wso2server.sh stop
sleep 60
/usr/local/wso2dataservices/bin/wso2server.sh start

fi

你可能感兴趣的:(若是则发出警报)