无法让JConsole读取Kafka JMX。

4

我有一台运行Apache Kafka(测试)的EC2服务器。它的端口9111用于JMX,并且EC2安全设置已更改以打开该端口。

我正在尝试在我的Mac上运行JConsole来读取此服务器的JMX指标,但是我收到了“安全连接失败”的消息,然后询问我是否要尝试不使用SSL。因此,我选择了不安全选项。然后我只得到“连接失败:重试?”错误。这次没有太多解释。出了什么问题?在Kafka的JXM配置中,安全连接和身份验证都被禁用了。

有任何线索/见解吗?


我发现一些关于添加-Djava.rmi.server.hostname参数的评论,但它仍然没有起作用。 - kee
3个回答

3

原来当你在EC2上运行Java进程并且想要访问它的JMX时,你需要在运行Java进程时指定"-Djava.net.preferIPv4Stack=true"。此外,我还需要打开所有端口,因为RMI会使用不同的端口。所以我修复了RMI将要使用的端口。


3
在我的情况下,设置-Djava.rmi.server.hostname=my_machine_hostname是有效的。

这就是我的全部了。 - Liz Bennett

1
问题在于当JVM创建远程调试JMX服务时,它还会分配一个动态RMI端口。你需要访问该端口以及JMX_PORT才能使用jConsole(或Kafka Manager等工具)进行连接。
你可以使用以下命令查看:
netstat -plunt

这里的一个选项是使用以下启动参数强制JVM使用固定端口进行RMI

-Dcom.sun.management.jmxremote.rmi.port=<some available port>

选项。然后您只需打开该特定端口。如果选择将Kafka解决方案docker化,这也非常有效。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接