kafka集群中使用的FInd代理ID

时间:2016-10-18 13:22:14

标签: apache-kafka

我想知道kafka集群中获取的代理ID的列表。例如,在一个包含10个节点的集群中,如果我创建一个包含10个分区(或更多)的主题,我可以从describe topic命令的输出中看到它已分配给它的代理。

./bin/kafka-topics --describe --zookeeper <zkconnect>:2181 --topic rbtest3

我可以在不创建主题的情况下收集此信息吗?

6 个答案:

答案 0 :(得分:5)

您可以使用zookeeper cli获取已使用的经纪人ID列表。

zookeeper-3.4.8$ ./bin/zkCli.sh -server zookeeper-1:2181 ls /brokers/ids | tail -1
[0]

答案 1 :(得分:4)

您还可以使用 Kafka 分发版附带的zookeeper-shell.sh脚本,如下所示:

linux$ ./zookeeper-shell.sh zookeeper-IPaddress:2181 <<< "ls /brokers/ids"

只需添加任何Zookeeper服务器的IP地址(和/或在必要时更改端口,例如在同一服务器上运行多个Zookeeper实例时)。

例如,当您发现自己位于专门运行Kafka客户端的容器(Docker,LXC等)中时,此替代方法非常有用;但Zookeeper本身就在其他地方(比如,在另一个容器中)。

我希望它有所帮助。 =:)

答案 2 :(得分:1)

你可以使用kafka-manager,一个由雅虎提供支持的开源工具。

答案 3 :(得分:1)

您可以运行以下命令:

bin/kafka-run-class.sh kafka.tools.GetOffsetShell --topic=<your topic> --broker-list=<your broker list>  --time=-2

这将列出所有具有id和起始偏移量的代理。

答案 4 :(得分:1)

#kafka borker id
cat $KAFKA_HOME/logs/meta.properties

答案 5 :(得分:1)

如果您想知道特定代理的代理 ID 是什么 - 最简单的方法是查看其 controller.log,我发现:

cat /var/log/kafka/controller.log
[2021-02-18 13:20:22,639] INFO [ControllerEventThread controllerId=1003] Starting (kafka.controller.ControllerEventManager$ControllerEventThread)
[2021-02-18 13:20:22,646] DEBUG [Controller id=1003] Broker 1002 has been elected as the controller, so stopping the election process. (kafka.controller.KafkaController)

controllerId=1003 ---> 这是您的 brokerID (1003)

[替换你的 kafka 日志路径,当然...]