需求:对tomcat的日志每半个小时分析一次,如果出现指定字段就报警
由于这边所有的日志都是输入到一个文件中,所以我第一时间想到的是用sed来截取指定时间段的日志,然后输出到另一个文件中,然后对这个文件的内容进行分析即可。
在执行过程中,发现如果用sed截取日期的可以,但是如果截取后面的时分秒需要用到正则表达式,下面是我些的脚本,可以参考下:
#!/bin/bash
base_path="/data/sercices"
tmpfile="/tmp/test.log"
#获取当前时间和30分钟之前的时间
currenttime=$(date "+%F %H:%M") #格式:2018-08-29 16:42:05
lasttime=$(date "+%F %H" -d "30 minute ago")
#截取当前的时间做正则匹配,按照分钟是和30多对比
MI=`echo $currenttime | awk -F':' '{print $2}'`
if [ $MI -ge 30 ]
then
start_time=$(date "+%F %H"):[0][0-9]
end_time=$(date "+%F %H"):[3][0-9]
else
start_time=$(date "+%F %H" -d "30 minute ago"):[3][0-9]
end_time=$(date "+%F %H"):[0][0-9]
fi
#echo ${start_time}
#echo ${end_time}
#截取指定时间段的日志文件
cd ${base_path}
sed -n "/${start_time}/,/${end_time}/p" nohup.out > $tmpfile
#判断指定字段出现的次数
num=$(egrep 'CommunicationsException|NullPointerException' $tmpfile | wc -l )
echo $num
---------------------
作者:幸福丶如此
来源:CSDN
原文:https://blog.csdn.net/m0_3788642 ... 066?utm_source=copy
版权声明:本文为博主原创文章,转载请附上博文链接!
|
|