apache-kafka 如何获取集群中所有Kafka主题的列表,沿着主题可用的分区号和唯一分区号

dy1byipe  于 2022-11-01  发布在  Apache
关注(0)|答案(2)|浏览(151)

如何获得一个集群中所有Kafka主题的列表,沿着主题可用的分区号和唯一的分区号。Java代码或cli命令将不胜感激。

dgenwo3n

dgenwo3n1#

要列出所有Kafka主题:

bin/kafka-topics.sh --list --zookeeper localhost:2181,localhost:2182

要列出特定主题的所有分区,您需要运行以下命令(分区计数以PartitionCount形式列出):

./kafka-topics.sh --describe --zookeeper localhost:2181,localhost:2182 --topic myTopic

Topic:myTopic        PartitionCount:4        ReplicationFactor:1     Configs:
        Topic: myTopic       Partition: 0    Leader: 1001    Replicas: 1001  Isr: 1001
        Topic: myTopic       Partition: 1    Leader: 1001    Replicas: 1001  Isr: 1001
        Topic: myTopic       Partition: 2    Leader: 1001    Replicas: 1001  Isr: 1001
        Topic: myTopic       Partition: 3    Leader: 1001    Replicas: 1001  Isr: 1001
huus2vyu

huus2vyu2#

Kafka topic list和detail命令可以结合在一起来实现这个结果。下面是一个示例bash脚本文件,可以用来列出所有带有分区计数的主题。


# !/bin/bash

while [[ "$#" > 0 ]]; do case $1 in
  -i|--zookeeper_ip) ZOOKEEPER_IP="$2"; shift;shift;;
  *) usage "Unknown parameter passed: $1"; shift; shift;;
esac; done

echo "Zookeepr IP: $ZOOKEEPER_IP"

TOPICS=$(kafka-topics.sh --list --zookeeper ${ZOOKEEPER_IP}:2181)

for TOPIC in ${TOPICS}; do
  TOPIC_DETAIL=$(kafka-topics.sh --zookeeper ${ZOOKEEPER_IP}:2181 --topic ${TOPIC} --describe |  grep -i "config" | column -t)

  echo ${TOPIC_DETAIL} | awk '{print $2, $4}'
done

将上述文件另存为bash脚本(例如get-topics-partition.sh),并使用以下命令运行。
./get-topics-partition.sh -i <kafka_zookeeper_ip_without_port>

**注意:**不要忘记给予适当的权限来执行档案。

例如chmod +x get-topics-partition.sh

相关问题