获取Kafka各Broker分区总数 求集群级脚本改造为单Broker统计方案
Kafka单Broker分区统计脚本
针对你的多数据中心分布式架构需求,这里提供两个适配单Broker的分区统计脚本,分别用于统计Broker作为Leader的分区数,以及Broker上存储的所有副本分区数:
1. 统计指定Broker作为Leader的分区总数
这个脚本是原集群级脚本的改造版,仅统计目标Broker承担Leader角色的分区数量:
zookeeper="ZK_SERVER1:2181,ZK_SERVER2:2181,ZK_SERVER3:2181" target_broker=1 # 替换为你需要统计的Broker ID sum=0 for topic in $(/usr/hdp/current/kafka-broker/bin/kafka-topics.sh --list --zookeeper $zookeeper); do # 过滤当前Topic中Leader为指定Broker的分区记录并计数 count=$(/usr/hdp/current/kafka-broker/bin/kafka-topics.sh --describe --zookeeper $zookeeper --topic $topic | grep "Leader: $target_broker" | wc -l) sum=$((sum + count)) done echo "Broker $target_broker 作为Leader的分区总数: $sum"
2. 统计指定Broker上的所有副本分区总数
如果需要了解该Broker的实际存储负载(包含自己作为Leader和Follower的分区),可以使用这个脚本:
zookeeper="ZK_SERVER1:2181,ZK_SERVER2:2181,ZK_SERVER3:2181" target_broker=1 # 替换为你需要统计的Broker ID sum=0 for topic in $(/usr/hdp/current/kafka-broker/bin/kafka-topics.sh --list --zookeeper $zookeeper); do # 过滤当前Topic中副本分布在指定Broker的分区记录并计数 count=$(/usr/hdp/current/kafka-broker/bin/kafka-topics.sh --describe --zookeeper $zookeeper --topic $topic | grep -E "Replicas:.*$target_broker|Isr:.*$target_broker" | wc -l) sum=$((sum + count)) done echo "Broker $target_broker 上的所有副本分区总数: $sum"
使用说明
- 替换
zookeeper变量中的地址为你的ZK集群地址 - 修改
target_broker为目标Broker的ID号 - 脚本基于HDP环境下的Kafka命令路径编写,若你的环境路径不同,需调整
kafka-topics.sh的路径
内容的提问来源于stack exchange,提问作者maverick
相关产品推荐
相关产品推荐

