标签:服务 个人 失败 utf-8 bre char dir amp sage
当前已经引入了自动化部署,但是由于能力有限和其他限制,目前只是通过监控端口是否存在来判断程序目前收集到的关键字,主要由以下:
^Caused by
^at
Error
Exception
废话不多说,直接上脚本了。
#!/bin/bash
APP=$(cd `dirname $0`;pwd)
#判断应用程序是jar还是tomcat
FILETYPE=`ls *.jar &>/dev/null | wc -l`
if [ ${FILETYPE} -eq 0 ];then
LOGFILE=${APP}/logs/catalina.out
else
LOGFILE=`ls ${APP}/*.log`
fi
#告警条件
WARN=0
#当前读取的行数
LAST=1
#当前环境所包含的地址有限,故使用简单的正则收集
MANAGERIP=`ip a | grep -E ‘192.168.15.|192.168.100.‘ | awk ‘{print $2}‘`
#`which tail` -fn 220 ${LOGFILE} | awk ‘/^Caused by|^ at |Error|Exception/{print }‘
while true
do
total_line=`wc -l $LOGFILE | awk ‘{print $1}‘`
line=`head -n $LAST ${LOGFILE} | tail -1`
num=$(echo $line | awk ‘/^Caused by|^at |Error|Exception/{ print}‘ | wc -l)
LAST=$(( LAST + 1 ))
WARN=$(( WARN + num ))
#退出条件的处理
if [ ${LAST} -gt 1000 ];then
break
fi
if [ ${WARN} -gt 10 ];then
break
fi
if [ ${LAST} -eq 150 ];then
sleep 1
fi
if [ ${LAST} -eq ${total_line} ];then
if [ `echo $line | awk ‘/success/{print}‘| wc -l` -ne 0 ];then
break
else
if [ ${LAST} -lt 300 ];then
continue
fi
fi
fi
done
if [ ${WARN} -gt 9 ];then
MESSAGE="路径:${APP}, 管理地址: ${MANAGERIP}, 启动出现错误,请登录系统查看"
else
MESSAGE="路径:${APP}, 管理地址: ${MANAGERIP}, 启动成功"
fi
#此处触发消息发送
curl -X POST -H "‘Content-type‘:‘application/x-www-form-urlencoded‘, ‘charset‘:‘utf-8‘,‘Accept‘:‘text/plain‘" -d "${MESSAGE}" http://192.168.15.212:9000/alarm
echo "success finished"
以上,只是对日志中过滤关键字判断进行了简单的处理,且个人能力有限,未做深入探索
标签:服务 个人 失败 utf-8 bre char dir amp sage
原文地址:http://blog.51cto.com/zhenfen/2147318