话不多说直接上代码
需要在/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