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

3
我正在使用Nagios进行监控,并查看给定箱子上的NPRE,我有一些Java进程,希望能通过JMX等方式"窥视它们"。但是我没有找到不启动JVM并远程连接就可以做到这一点的方法?
有什么想法吗?
2个回答

2
要使用Nagios监控JMX,jmx4perl是完美的解决方案,因为它已经配备了功能丰富的Nagios插件check_jmx4perl。它使用Jolokia,这是一个代理程序,通过JSON/HTTP桥接JMX,并具有高级功能,例如细粒度安全性或批量请求,这些功能对于传统的JSR-160连接器不可用。它也在积极开发中,而上述REST方法似乎停留在2008年(这也是2009年5月开始jmx4perl的原因之一)。顺便说一下,JSR-262“Java管理扩展(JMX)代理的Web服务连接器”很遗憾已经“不活跃”了一段时间,所以我不指望从这方面取得太多进展。

好知道,谢谢。我很喜欢Nagios,它已经被证明非常可靠。 - Michael Neale

2
我相信你可以通过RMI-IIOP连接到JMX服务,我相信这是Java的CORBA。这意味着你可以使用任何COBRA客户端来连接到一个RMI-IIOP Java服务。看看JBoss IIOP,它可以做你想要的事情,只不过它是特定于JBoss的。
也许更容易的方法是使用JAX-WS或JAX-RS(即作为Web服务)包装你想要导出的JMX服务?然后你就可以使用普通的HTTP访问你想要的内容。
实际上,似乎有人已经做到了这一点!我想你想要访问类似于:
  • http://<host>:<port>/rest/jmx/java.lang:type=Memory/NonHeapMemoryUsage/commited
整个项目可以在 https://opendmk.dev.java.net/contributions/rest-adaptor/readme.html 查看:

Restful JMX 适配器

该项目 OpenDMK 贡献提供了以 RestFul 方式访问 JMX 信息的 HTTP 接口。一篇文章在JMX NetBeans 博客上详细介绍了该方法。

另外一个(相同的?)项目可以在 https://ws-jmx-connector.dev.java.net/ 查看。

哈哈 - 我无意中做了一个简单的即席RESTful版本(几行代码),但这很好知道!我毕竟不是疯了! - Michael Neale

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