tomcat catalina.out日志监控

功能需求:

监控日志文件出现指定关键词时,进行报警。

每次只监控新增日志的内容,防止已经修复的问题报警一直存在导致新的报警不再被观察到。

脚本

logChange.sh

#!/bin/bash
logfile="/data/logs/catalina.out"        #日志文件路径
recordfile="/tmp/logchange.tmp"          #临时文件,记录行数
keywords=("Connection reset")            #关键字,是个arrary,可以填写多个
if [ -f $recordfile ];
then
	last_line_count=`cat $recordfile`;
else
	echo "0" > $recordfile;
	last_line_count="0";
fi

current_line_count=`wc -l $logfile|awk '{print $1}'`;
if [ $current_line_count -eq $last_line_count ];
then
	echo "OK, no chang found from logfile";exit 0;        #日志发现没有更新
elif [ $current_line_count -lt $last_line_count ];
then
	echo "0" > $recordfile;
	echo "OK, logfile recreated";exit 0;                  #日志发现被重新创建从0行开始计算
elif [ $current_line_count -gt $last_line_count ];
then
	for keyword in "${keywords[@]}"
	do
		isMatch=`tail -n +$last_line_count $logfile|grep "$keyword"`;
		if [ -n "$isMatch" ];then
			echo "Critical, log match keyword:"$keyword;    #发现关键字报错
			echo $current_line_count > $recordfile;        
			exit 2;
		fi
	done
	echo "OK, log not match keywords";                      #日志中没有关键字
	echo $current_line_count > $recordfile;
	exit 0;
fi

参数说明:

logfile:被监控的日志文件

recordfile:记录被监控日志文件上次读取的行数

keywords:监控的关键字,判断更新的日志中是否出现keywords列表内的数据。

实际使用时候为了通用性,可以将日志文件路径,记录行数临时文件路径,和关键字作为参数传入。

监控端配置简单说明:

1、这里用的是nagios的监控,所以使用exit code来让系统判断日志是否有指定报错。日过使用zabbix或其他监控系统,请自行修改。

2、nagios存在retry机制,但实际上,如果监控发现异常,再第二次进行retry时将不会报错,也就不会提示用户报警信息,这样就让监控系统失效。所以需要将max_check_attempts设置为1。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值