#!/bin/bash
#定义LAG初始值
sum=0
#定义kafka分区数量
consumer_num=("2" "3" "4")
#for a in $(seq 0 $num);do
#这条语句中的 seq 获取的范围是大于等于 0 小于等于数组size的范围,
#这样你在遍历中就会遍历到数组最后一个元素的下一个元素。
#然而shell并不会报错,而是以空字符来处理最后越界的那个元素。
#如下所示的例子(代码及输出样例)展示了方法二中问题的解决办法,
用一个变量NUM先获取数组的大小,然后将其减一,
之后在seq语句中用此变量获取循环范围下面的例子如果不增加 NUM 变量,
直接按照方法二中的方式处理,则输出结果会多一个空行(最后一个字符数组中没有,
用空串替代,因此会多输出一个空行)
num=${#consumer_num[@]}
num=`expr $num - 1`
#查询kafka积压数据
LAG_sum=`sh ${kafka_home}/kafka-consumer-groups.sh --bootstrap-server IP:9092 --describe --group $group | grep -v 'LAG' | awk -F " " '{print $6}'`
#--------------------------#
#CUR_OFFSET=`${kafka_home}/kafka-consumer-groups.sh --bootstrap-server IP:9092 --describe --group $group | awk -F ' ' 'NR==${consumer_num[@]}{print $4}'`
#LOG_OFFSET=`${kafka_home}/kafka-consumer-groups.sh --bootstrap-server IP:9092 --describe --group $group | awk -F ' ' 'NR==${consumer_num[@]}{print $5}'`
#--------------------------#
#echo $LAG_sum
for i in ${LAG_sum[@]};
do
sum=$(($sum+$i))
done
echo $sum
#LAG积压数总和大于10
if [ $sum -ge 10 ];then
echo "kafka LAG积压,判断offset偏移量是否消费"
for a in $(seq 0 $num);do
b=$(${kafka_home}/kafka-consumer-groups.sh --bootstrap-server IP:9092 --describe --group $group | awk '{if(NR=='${consumer_num[$a]}')print $4}')
echo $b
c=$(${kafka_home}/kafka-consumer-groups.sh --bootstrap-server IP:9092 --describe --group $group | awk '{if(NR=='${consumer_num[$a]}')print $5}')
echo $c
if [[ "$b" != "$c" ]];then
echo "分区不一致,请排查"
fi
done
else
echo "kafka LAG总和为:${sum},请检查是否积压"
fi