shell脚本---监控kafka消息积压
  KxMAr7sokej9 2023年12月11日 13 0
#!/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
【版权声明】本文内容来自摩杜云社区用户原创、第三方投稿、转载,内容版权归原作者所有。本网站的目的在于传递更多信息,不拥有版权,亦不承担相应法律责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@moduyun.com

  1. 分享:
最后一次编辑于 2023年12月11日 0

暂无评论

推荐阅读
  uvM09mQNI0hF   2023年11月19日   20   0   0 sedshell字符串
  OGG2zAst6hx8   2023年11月26日   14   0   0 bootstrapServerkafka