如何通过 JMX 远程连接 Flink?

4
对于即将到来的本科论文,我想开发一个工具,该工具从Apache Flink收集系统和应用程序数据,并将这些数据以某种“事件”形式发送到另一个系统。此工具将安装在Flink作业和任务管理器节点上。除了来自Linux系统实用程序(如dstat)的数据外,我还想收集JMX数据。
我的问题是,我无法弄清楚如何通过使用端口通过远程JMX连接连接到Flinks jobmanager。尽管收集器将位于同一台机器上,但我确实尝试避免使用--javaagent来访问Flink JVM的JMX数据。
另一个问题是,我有一个基于https://github.com/apache/flink/tree/master/flink-contrib/docker-flink并更新为flink-1.0.2的本地docker设置,我无法通过jconsole连接,因为我不知道如何为作业和任务管理器“打开”JMX远程端口。
有没有办法实现这一点?
提前感谢,任何想法都非常感激。

这可能对你有兴趣 https://issues.apache.org/jira/browse/FLINK-1502. - Till Rohrmann
谢谢!但这是否意味着无法从另一个JVM连接到Flinks JVM?对我来说,现在可以连接本地运行的jobmanager(没有docker)与JConsole以读取JVM,但无法远程连接到Docker上的Flink。 JIRA问题似乎更多关于Flink特定的指标,但是像jconsole中的普通JVM数据目前已经足够了... - Markus Lamm
1个回答

7
解决了!
我需要在 flink-conf.yaml 中添加以下内容:env.java.opts: -Dcom.sun.management.jmxremote -Dcom.sun.management.jmxremote.port=9999 -Dcom.sun.management.jmxremote.authenticate=false -Dcom.sun.management.jmxremote.ssl=false 现在可以使用 jconsole 连接 jobmanager 了。

我从任务管理器中得到了端口已被使用的信息。但是我可以连接到作业管理器。我该如何给它们不同的端口,以避免冲突? - Gayal Rupasinghe

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