我正在使用Nagios进行监控 - 并查看NPRE对给定方框的各种监控。我有一些java进程 - 很高兴通过JMX等“窥视它们”。如果没有启动JVM并远程连接,我看不到这样做的方法吗?
有什么想法吗?
答案 0 :(得分:2)
我相信你可以通过RMI-IIOP连接到JMX服务,我相信它是CORBA for Java。我相信这意味着您可以使用任何COBRA客户端连接到RMI-IIOP Java服务。查看JBoss IIOP,我相信它可以满足您的需求。
使用JAX-WS或JAX-RS(即作为Web服务)简单地包装您想要导出的JMX服务可能更容易?然后,您可以使用普通的“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 Adapter
这个项目 OpenDMK贡献提供HTTP 访问RestFul中的JMX信息 办法。发表于the JMX NetBeans blog的文章详细介绍了该文章 方法
另一个(相同的?)项目可在https://ws-jmx-connector.dev.java.net/
获得答案 1 :(得分:2)
使用Nagios jmx4perl监控JMX是一个完美的解决方案,因为它已经具有功能丰富的Nagios插件check_jmx4perl。它使用Jolokia,一个通过JSON / HTTP桥接JMX的代理,并具有高级功能,如细粒度安全性或批量请求,这些功能不适用于传统的JSR-160连接器。它也在积极开发,而上述REST方法似乎在2008年停滞不前(这也是2009年5月启动jmx4perl的原因)。 BTW,JSR-262“用于Java管理扩展(JMX)代理的Web服务连接器”不幸的是状态“非活动”一段时间以来,所以我不希望这方面有太大进展。