shell 实现监控业务错误日志并微信告警

shell脚本

#!/bin/bash
#monitor application error log
#获取服务err日志
logfiles=`find / -type f -name *.err | grep -v '[0-9]\{2,\}'`
user=() #接收告警用户列表
for logfile in ${logfiles[@]}
do
	#获取变量值
	title=`echo ${logfile} | awk -F/ '{print $4}'`
	ip=`/sbin/ifconfig -a|grep inet|grep -v 127.0.0.1|grep -v inet6 | awk '{print $2}' | tr -d "addr:"`
	time=`date +"%Y-%m-%d %T"`
	err_num=`cat ${logfile} | wc -l`
	last_err_info=`cat ${logfile} | tail -n 1 | sed 's/"//g' | sed "s/'//g"`
	#组合告警信息	
	msg=`echo "服务名称: $title\n机器IP: $ip\n日志路径: $logfile\n告警时间: $time\n错误日志数量: $err_num 条\n最新错误日志信息: $last_err_info"`
	echo ${msg}
	#发送告警
	if [ $err_num -gt 0 ];then
	for id in ${user[@]}
	do
		curl -i -X POST -H "'Content-type':'application/json'" -d '{"touser":"'"$id"'","content":"'"$msg"'"}' #微信告警接口 > /dev/null 2>&1
	done
	fi
done
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
好的,下面是一个基于Shell脚本实现日志关键字监控并跳过老数据的示例: ```bash #!/bin/bash # 定义日志文件路径 LOG_FILE=/var/log/syslog # 定义关键字 KEYWORD="error" # 定义检测的时间间隔,单位为秒 INTERVAL=60 # 定义上次检测的位置 LAST_POS=0 # 如果上次检测记录位置的文件存在,则读取上次的位置 if [ -f last_pos.txt ]; then LAST_POS=$(cat last_pos.txt) fi while true; do # 获取日志文件的大小 FILE_SIZE=$(wc -c < $LOG_FILE) # 如果文件大小小于上次检测的位置,则说明文件被回滚了,将上次位置设为0 if [ $FILE_SIZE -lt $LAST_POS ]; then LAST_POS=0 fi # 计算本次检测需要读取的字节数 SIZE_TO_READ=$((FILE_SIZE - LAST_POS)) # 如果需要读取的字节数小于等于0,则等待一段时间后重新检测 if [ $SIZE_TO_READ -le 0 ]; then sleep $INTERVAL continue fi # 读取日志文件中新增的内容 NEW_CONTENT=$(tail -c $SIZE_TO_READ $LOG_FILE) # 记录本次读取到的位置 LAST_POS=$FILE_SIZE echo $LAST_POS > last_pos.txt # 检查新增内容中是否包含关键字 if echo "$NEW_CONTENT" | grep -q "$KEYWORD"; then # 如果包含关键字,则触发告警 echo "发现关键字 $KEYWORD,时间:$(date)" >> alarm.log # TODO: 发送告警邮件或短信等 fi # 等待一段时间后重新检测 sleep $INTERVAL done ``` 该脚本首先定义了日志文件路径、关键字、检测的时间间隔和上次检测的位置等变量。然后进入一个无限循环,在每次循环中读取日志文件新增的内容,检查是否包含关键字,如果包含则触发告警并记录到日志文件中。同时,记录本次读取到的位置,以便下次循环时跳过已经检测过的内容。如果在本次循环中没有发现新增的内容,则等待一段时间后重新检测。 该脚本可以根据实际需求进行修改,比如修改关键字、日志文件路径等。同时,可以将该脚本加入到定时任务中,实现自动监控

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值