是否有用于本地(非 TCP)连接的 JMX 服务 URL?

Ian*_*ose 5 java jmx

我正在尝试使用collectd 连接到同一台计算机上运行的JVM 进程。GenericJMXcollectd插件是通过 ServiceURL 配置的,如果 JVM 启用了远程 JMX 访问,那么这一切都很好。但是,是否可以在不启用远程 JMX 访问的情况下执行此操作?

这个详细的答案解释了(自 Java 6 起)即使 JVM启动,-Dcom.sun.management.jmxremote仍然通过“在”中找到的内存映射文件公开 JMX 访问/tmp/hsperfdata_[user]。这就是 JConsole 访问的工作原理。但是我可以让collectd使用这种连接方法吗?是否有诸如“本地”JMX 服务 URL 之类的东西?或者我是否必须启用 RMI 注册表端口 ( -Dcom.sun.management.jmxremote.port=[rmiregistryport]) 才能使其正常工作?

Nic*_*las 2

看看我的jmxlocal GitHub。它提供 JMX 远程处理实现,以透明地连接到同一主机上的虚拟机内 MBeanServer 和 JVM。

例子:

  • 连接到默认的虚拟机内 MBeanServer:service:jmx:local:///
  • 使用域连接到不同的虚拟机内 MBeanServer:service:jmx:local:///jboss
  • 通过pid连接到本地JVM:service:jmx:attach://23474
  • 通过显示名称正则表达式连接到本地 JVM:service:jmx:attach:///[GroovyStarter.*]