kafka —— 阻塞监控系统 ,拿来就能用的那种

实现方式:

以kafka自带脚本为基础,shell中执行后用awk获取列表中想得到的lag值,加入cron中,实现报警

 

#!/bin/bash

cd /home/kafka/kafka_2.11-1.1.0 (此处是先进入kafka文件夹内部 好启动lag值脚本)

send_mail(){
   echo "$i队列LAG值为$lag" |mail -s "$i队列未消费offset超出$lag个" -c 这里填上自己的邮箱(但是需要提前安装mailsend插件)
}

当然上面是如果超过阈值就给哪些责任人发送邮件,有的公司是其他警告系统,例如钉钉警报 就要换一个方式

for i in topic 
do
 lag=`bin/kafka-consumer-groups.sh --describe --bootstrap-server IP集群 --group groupID |grep $i | awk '{print $5}'|sed ':a;N;$!ba;s/LAG/0/;s/\n/+/g' |bc`


 if [ $i = topic -a $lag -gt 阈值 ];then
   send_mail(发送邮件)
 fi
done

 

至于为什么使用for循环,因为有的时候,可能一个group会消费多个topic,所以使用for循环就可以一个脚本监控一个group消费多个topic的情况

此监控最小单位可以到分区 不过awk处就要修改一下

还有 如果监控的kafka offset保存到zk中的,拿ip集群就要写zk集群

 

        最后解释一下此监控系统的原理。

首先lag是什么?

lag是滞后量,肯定大于等于0,无法为负数,值越大阻塞越严重。直白点解释就是你生产者生产了的最新的消息编号-消费者已经消费的数量=lag,官方我记得叫hw-offset=lag 记不太清了

然后这个lag,kafka自带一个脚本kafka-consumer-groups.sh,执行就可以得到所有分区的lag,然后用awk、sed来操作文档,获取总lag,然后如果数量大于贵公司的容忍范围,就报警,但由于有的时候可能生产者就是突然拉取了一票消息,突然很大,但其实也能瞬间消费完,所以最好的就是在加一层判断,如果第一次大于阈值,然后第二次大于第一次的lag,那么才是真的可能阻塞了。代码就大伙自己写把。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值