【问题标题】:Can't have JConsole read Kafka JMX不能让 JConsole 读取 Kafka JMX
【发布时间】:2014-11-13 15:50:52
【问题描述】:

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

我试图在我的 Mac 上运行 JConsole 以读取此服务器的 JMX 指标,但我收到“安全连接失败”消息,然后它询问我是否想尝试不使用 SSL。所以我选择了不安全。然后我得到“连接失败:重试?”错误。这次就不多解释了。什么地方出了错?在 Kafka 的 JXM 配置中,安全连接和身份验证被禁用。

任何线索/见解?

【问题讨论】:

  • 我发现了一些关于添加 -Djava.rmi.server.hostname 参数的评论,但它仍然不起作用。

标签: jmx apache-kafka jconsole


【解决方案1】:

事实证明,当您在 EC2 中运行 Java 进程并想要访问其 JMX 时,您必须在运行 Java 进程时指定“-Djava.net.preferIPv4Stack=true”。我还必须打开所有端口,这是因为 RMI 会使用不同的端口。所以我修复了 RMI 将要使用的端口。

【讨论】:

    【解决方案2】:

    就我而言,设置 -Djava.rmi.server.hostname=my_machine_hostname 有效。

    【讨论】:

    • 对我来说就是这样。
    【解决方案3】:

    问题在于,当 JVM 创建远程调试 JMX 服务时,它还分配了一个动态 RMI 端口。您需要访问该端口以及 JMX_PORT 才能使用 jConsole(或 Kafka 管理器等)进行连接。

    你可以看到这个使用

    netstat -plunt
    

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

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

    选项。然后你可以打开那个特定的端口。如果您选择 dockerize 您的 kafka 解决方案,这也很有效。

    【讨论】:

      猜你喜欢
      • 2010-09-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-06-26
      • 2017-02-15
      • 1970-01-01
      • 1970-01-01
      • 2016-07-15
      相关资源
      最近更新 更多