如何知道作为主动控制器的代理?

Suh*_*nna 4 apache-kafka

除了使用JMX之外还有其他任何方式可以知道,代理是否是ActiveController?

我知道集群生成一个度量标准kafka.controller:type=KafkaController,name=ActiveControllerCount,但我找不到哪个代理是活动控制器.

是否有必要编写一个JMX客户端来了解它,还是有另一种(更好的?)方式?

Mic*_*son 12

您可以使用该zookeeper-shell工具找到活动控制器,如下所示:

./bin/zookeeper-shell.sh [ZK_IP] get /controller
Run Code Online (Sandbox Code Playgroud)

  • 真的很酷..非常感谢!对于想通过prometheus监控找到这个的人,我建议[这是一个起点](https://www.robustperception.io/monitoring-kafka-with-普罗米修斯/) (2认同)

sow*_*ing 7

也许更简单的方法,因为你不需要 kafka 并且它是 zookeeper-shell.sh,使用命令行连接到 zookeeper 的客户端端口:

nc [zookeeper_ip] [zookeeper_port]
Run Code Online (Sandbox Code Playgroud)

或者

telnet [zookeeper_ip] [zookeeper_port]
Run Code Online (Sandbox Code Playgroud)

然后执行

dump
Run Code Online (Sandbox Code Playgroud)

它将打印与临时节点的会话,并且可以通过查找包含 /controller 路径的会话来查看哪个代理是控制器

例如,这样的转储结果:

Sessions with Ephemerals (3):
0x266542cfaa90000:
    /brokers/ids/1
0x166542cfe670001:
    /brokers/ids/3
0x166542cfe670000:
    /controller
    /brokers/ids/2 
Run Code Online (Sandbox Code Playgroud)

表示控制器是broker_id为2的broker。