在boot2docker的docker中运行kafka时使用JMX进行kafka监控

我正在试图让JMX监视工作来监视一个testingkafka实例。

我有kafka(ches / kafka)通过boot2docker在Docker中运行,但是我无法正确configurationJMX监视。 我做了一堆故障排除,我知道卡夫卡实例运行正常(消费者和生产者工作)。 当我尝试简单的JMX工具(jconsole和jvisualvm)并且都无法连接(不安全的连接错误,连接失败)时,问题就出现了。

configuration项注意:我连接到192.168.59.103(在运行'boot2docker ip'时发现virtualbox ip),ches / kafka docker / kafka实例使用端口7203作为JMX_PORT(在kafka启动日志中确认)。 使用jconsole,我连接到192.168.59.103:7203,那是什么时候发生错误。

任何帮助表示赞赏。

为了完整性,这里是解决scheme:

我按如下方式运行ches / kafka docker镜像 – 注意JMX_PORT(7203)现在已经正确的发布了:

 $ docker run --hostname localhost --name kafka --publish 9092:9092 --publish 7203:7203 --env EXPOSED_HOST=192.168.59.103 --env ZOOKEEPER_IP=192.168.59.103 ches/kafka 

而且,在kafka-run-class.sh(.bat for windows)中设置了以下环境:

 -Dcom.sun.management.jmxremote -Dcom.sun.management.jmxremote.authenticate=false -Dcom.sun.management.jmxremote.ssl=false 

但我需要添加一个附加项目(感谢其中一位评论者指出了这一点):

 -Dcom.sun.management.jmxremote.rmi.port=7203 

现在,要运行boot2docker中的ches / docker镜像,只需要设置一个可识别的环境variables(KAFKA_JMX_OPTS或KAKFA_OPTS)来添加额外的项目,它现在可以工作。

谢谢您的帮助!

除了指定它之外,没有任何理由将kafka docker端口绑定到boot2docker虚拟机中的相同端口。

尝试使用-p 7203:7203运行它以强制端口的1:1转发。