脚本查看kafka的topic以及消费情况

话不多说直接上代码
需要在/usr/lib/systemd/system配置启动文件

#!/bin/bash
##Date: 2020-01-08
#集群信息
PATH_HOME=$(cat /usr/lib/systemd/system/kafka.service | grep ExecStart |grep -v '#'|awk '{print $2}')
#echo "$PATH_HOME"
#获取zookeeper.connect的信息
ZOO_CLUSTER=$( cat $PATH_HOME | grep "zookeeper.connect=" | sed 's/zookeeper.connect=//g' )
#获取本节点的kafka配置信息
KA_CLUSTER=$(cat $PATH_HOME | grep "listeners"|grep -v '#'|sed 's/listeners=PLAINTEXT:\/\///g' )
#截取路径
CONSUMER_PRO="${PATH_HOME%/*}/consumer.properties"
#获取PATH_HOME目录路径
SERVER_PATH_1=$(dirname $PATH_HOME)
#获取上一级目录
#SERVER_PATH_2=$(dirname $SERVER_PATH_1)
KAFKA_PATH="${SERVER_PATH_1%/*}/bin/"


#实时消费循环次数
NUM=3

#实时消费单次显示条数
MSG=10

#标准交互
INPUT(){
read -p "
a.获取集群topic列表 (1)
b.获取单个topic状态 (2)
c.实时查看消费组状态(3)
d.查看topic实时数据 (4)
e.获取消费状态,总计 (5)
请输入数字:" NUM
}
auth
INPUT
[[ "$NUM" -eq 2 ]] && read -p "输入topic主题名称: " TOPIC
[[ "$NUM" -eq 3 || "NUM" -eq 5 ]] && read -p "输入消费组名称: " GROUP
[[ "$NUM" -eq 4 ]] && read -p "输入topic主题名称: " DATASOURCE

#获取所有消费组 
#kafka-consumer-groups.sh --bootstrap-server $KA_CLUSTER --command-config $CONSUMER_PRO -list

#计算消费组总数 offset   logsize  lag
consumer_groups(){
    LOG_INFO="/tmp/kafka_info.info"

    "$KAFKA_PATH"kafka-consumer-groups.sh --bootstrap-server "$KA_CLUSTER"  --group "$GROUP" --describe --command-config "$CONSUMER_PRO" 2>/dev/null | grep -v LAG > $LOG_INFO

    sed -i 's/\r//g' $LOG_INFO

    Offset=0
    logsize=0
    Lag=0

    while read line
        do   
        current_logsize=`echo $line | awk '{print $4}'`

            if [[ $current_logsize = 0 ]]
                then
                continue     
            else
                current_lag=`echo $line | awk '{print $5}'`
                current_offset=`echo $line | awk '{print $3}'`
                Offset=$((Offset+current_offset))
                logsize=$((logsize+current_logsize))
                Lag=$((Lag+current_lag))
            fi

    done < $LOG_INFO
    }

#++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
#topic 列表
[[ "$NUM" -eq 1 ]] && "$KAFKA_PATH"kafka-topics.sh --zookeeper $ZOO_CLUSTER --list && exit 1

#++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
#topic 状态
if [[ "$NUM" -eq 2 ]]
  then
    "$KAFKA_PATH"kafka-topics.sh --zookeeper "$ZOO_CLUSTER" --topic "$TOPIC" --describe 2>/dev/null
    exit
  else
    echo "获取失败 "
fi

#++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
#实时消费状态
if [[ "$NUM" -eq 3 ]]
  then
    "$KAFKA_PATH"kafka-consumer-groups.sh --bootstrap-server "$KA_CLUSTER" --command-config "$CONSUMER_PRO" --group "$GROUP" --describe 2>/dev/null
else
    echo "获取失败 "
fi

#+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
#topic 实时数据
if [[ "$NUM" -eq 4 ]]
then

    while [ "$NUM" -ne 0 ]
    do
        "$KAFKA_PATH"kafka-console-consumer.sh --topic "$DATASOURCE" --bootstrap-server "$KA_CLUSTER" --new-consumer --max-messages "$MSG" --consumer.config "$CONSUMER_PRO" 2>/dev/null
        echo "=============第 $NUM 次采集==============="
        let NUM=$NUM-1
    done   

else
    continue
    echo "获取失败 "
fi

#++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
#获取消费组总数
if [[ "$NUM" -eq 5 ]]
  then

    while [ "$NUM" -ne 0 ]
      do
        let NUM=$NUM-1
        consumer_groups
        echo -e "Offset   logsize    Lag\n$Offset $logsize $Lag"
    done

else
    continue
fi
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值