我想知道kafka集群中获取的代理ID的列表。例如,在一个包含10个节点的集群中,如果我创建一个包含10个分区(或更多)的主题,我可以从describe topic命令的输出中看到它已分配给它的代理。
./bin/kafka-topics --describe --zookeeper <zkconnect>:2181 --topic rbtest3
我可以在不创建主题的情况下收集此信息吗?
答案 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 日志路径,当然...]