代码之家  ›  专栏  ›  技术社区  ›  Michael Neale

通过JMX从非Java客户端调用/监视JVM

  •  3
  • Michael Neale  · 技术社区  · 14 年前

    我使用Nagios进行监控——并查看NPRE对给定的设备进行各种监控。我有一些Java进程——通过JMX等来“窥视它们”是很好的。如果不启动一个JVM并远程连接,我就看不到实现这一点的方法了?

    有什么想法吗?

    2 回复  |  直到 12 年前
        1
  •  2
  •   Bill the Lizard    12 年前

    我相信您可以通过 RMI-IIOP 我相信它是Java的CORBA。我相信这意味着您可以使用任何COBRA客户端连接到一个RMIIOP Java服务。退房 JBoss IIOP 我相信这是你想要的,只是JBoss特有的。

    也许使用JAX-WS或JAX-RS(即,作为Web服务)简单地包装要导出的JMX服务会更容易一些?然后您可以使用普通的ol'http访问您想要的内容。

    事实上, it seems someone has done exactly that !我想您希望访问以下内容:

    • http://<host>:<port>/rest/jmx/java.lang:type=Memory/NonHeapMemoryUsage/commited

    整个项目可在 https://opendmk.dev.java.net/contributions/rest-adaptor/readme.html :

    RESTful JMX适配器

    这个项目 OpenDMK贡献提供了一个HTTP 在RESTful中访问JMX信息 方式。发表在 the JMX NetBeans blog ,详细介绍了 方法。

    另一个(同样的?)项目可在 https://ws-jmx-connector.dev.java.net/

        2
  •  2
  •   Roland Huß    14 年前

    用于使用Nagios监控JMX jmx4perl 是完美的解决方案,因为它已经有了一个功能丰富的Nagios插件 check_jmx4perl . 它使用 Jolokia 是一个代理,它通过JSON/HTTP连接JMX,并具有高级功能,如细粒度安全性或批量请求,这些功能不适用于经典的JSR-160连接器。它也在积极地开发,而上面描述的其他方法似乎在2008年被卡住了(这也是2009年5月启动JMX4Perl的原因)。顺便说一下,JSR-262“JavaManagement Exchange(JMX)代理”的Web服务连接器“不幸的是”一段时间以来的状态“不活动”,因此我不期望从这方面取得很大进展。