在boot2docker的docker中运行kafka时使用jmx监视kafka

vc6uscn9  于 2021-06-08  发布在  Kafka
关注(0)|答案(2)|浏览(536)

我正在尝试让jmx监视工作来监视一个测试kafka示例。
我有kafka(ches/kafka)通过boot2docker在docker中运行,但是我无法正确配置jmx监控。我做了一系列的故障排除,我知道kafka示例运行正常(消费者和生产者工作)。当我尝试使用简单的jmx工具(jconsole和jvisualvm)但两者都无法连接(连接不安全错误,连接失败)时,问题就出现了。
配置注意事项:我连接到192.168.59.103(在运行'boot2docker ip'时发现virtualbox ip),ches/kafka docker/kafka示例使用端口7203作为jmx\u端口(在kafka启动日志中确认)。使用jconsole,我连接到192.168.59.103:7203,也就是发生错误的时候。
感谢您的帮助。

cnwbcb6i

cnwbcb6i1#

kafka docker端口没有理由绑定到boot2docker vm中的同一端口,除非您指定它。
试着用 -p 7203:7203 强制端口1:1转发。

crcmnpdw

crcmnpdw2#

为完整起见,以下是可行的解决方案:
我运行了ches/kafka docker映像,如下所示——请注意,jmx\u端口(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映像,您只需要设置一个可识别的环境变量(kafka\u jmx\u opts或kakfa\u opts)来添加附加项,现在就可以了。
谢谢你的帮助!

相关问题