由于业务量突然上涨,原来kafka的一个topic只有1个分区,消息产生了堵塞,现在需要监控,本文采取的案例是通过pushagteway + prometheus 的形式。
话不多说,直接是上脚本
#!/bash/bin
#传入group id ,通过命令获取lag
groupId=$1
kafka-consumer-groups.sh --new-consumer --bootstrap-server node1:9292,node2:9092,node13:9092 --group ${groupId} --describe > /root/11.log
#然后遍历文件,前2行不要
a=1
cat /root/11.log |while read line
do
if [ $a -gt 2 ];then
#echo $line
jobName=`echo $line | awk '{printf $1 "_" $2}'`
#echo $jobName
lag=`echo $line | awk '{printf $5}'`
offset=`echo $line | awk '{printf $3}'`
topic=`echo $line | awk '{printf $1}'`
partion=`echo $line | awk '{printf $2}'`
#echo "jobName = $jobName , lag = $lag , offset = $offset"
#将lag和offset信息传入pushagteway
echo "${groupId}_lag $lag" | curl --data-binary @- http://node4:9091/metrics/job/${jobName}
echo "${groupId}_offset $offset" | curl --data-binary @- http://node4:9091/metrics/job/${jobName}
fi
a=`expr $a + 1`
done
然后使用的时候 sh lag.sh flow 这个flow就是group.id
最后前端通过grafana展示
通过这样很容易看出业务的高峰期
完善的想法:
offset可以做增量,这个就需要自己去实现了,将offset记录下来,然后相减。