14

我正在寻找一个 JMX 查询工具。我遇到过 jolokia 和 jmxtrans,它们都支持基于 JSON 的查询。JMXtrans 拥有我认为 Jolokia 中缺少的监控工具的编写者。我用谷歌搜索,但我没有得到太多比较两者的信息。但我已经阅读了这两种工具的正面博客文章。如果有人之前使用过这些,请分享您的经验...

4

3 回答 3

20

I'm the author of jmxtrans. I considered Jolokia before I developed jmxtrans. I choose to develop with jmxtrans because I had a different usecase in mind.

Jolokia runs as a war in Tomcat. It is similar to jmxtrans in that it allows you to query a JMX server, but that is about where the similarity ends. You would need to implement the rest of jmxtrans on top of Jolokia in order to have feature parity.

On the other hand, jmxtrans is standalone with no requirements on Tomcat. My target audience is the netops/devops role. It is configured with a relatively simple JSON based structure so it doesn't require an engineering degree to configure and use it.

The thought is that you use jmxtrans to continuously monitor services which expose statistics via jmx. You use jmxtrans to 'transform' data from jmx to whatever output format you want. Generally, devops people want to integrate their JVMs with some sort of monitoring solution like Graphite/Ganglia so I provided output writers for those tools.

jmxtrans is also very smart about how it does queries against jmx servers and there is a bit of optimization in there for that. There is also a lot of work to allow you to do things like parallelize requests to many servers to enable to you scale jmxtrans to continuously query hundreds of servers with a single jmxtrans instance.

I hope that clarifies things a bit. If you have any specific questions, I'm happy to answer them.

于 2012-04-21T05:58:25.490 回答
18

确实,jmxtrans 和 Jolokia 的侧重点不同。Jmxtrans 是一个带有调度程序的完整监控解决方案,它定期查询 JMX 请求并将结果发送到像石墨或 rrdtool 这样的后端。它使用标准 JSR-160(基于 RMI)通信来查询支持 JMX 的 Java 服务器

另一方面,Jolokia是一个 HTTP/JSON-JMX 适配器,它允许非 Java 客户端轻松访问,并添加了一些纯 JSR-160 实现所不具备的独特功能。为了集成到监控平台中,还需要另一个软件。对于 Nagios,有Jmx4Perl,它提供了一个功能齐全的 Nagios 插件来查询 Jolokia 代理。

由于我是 Jolokia 的作者,让我强调一下 Jolokia 的一些亮点

  • 许多请求可以作为单个批量请求一次发送。这允许通过一次 HTTP 转身查询数百个属性。这在大型环境中确实产生了巨大的差异。
  • 由于 HTTP Jolokia 的使用允许跨防火墙边界轻松查询(使用标准 JMX 连接器时这是一场噩梦)
  • 使用纯 XML 策略文件可以轻松实现细粒度授权
  • 代理不仅适用于 Tomcat 或任何其他 Java EE 容器,还适用于任何 Java 6 应用程序(例如 ActiveMQ 或 Camel)
  • Jmx4Perl 附带了一套不错的命令行工具(例如,基于 readline 的 JMX shell 与上下文相关的命令完成)。
  • 可以从 Perl、Javascript、Python 等访问库。
  • .... 欲了解更多信息,请参阅www.jolokia.org

总而言之,当您需要基于 JSR-160 远程处理的完整监控解决方案(但是,您也可以使用 Nagios 和 check_jmx4perl)时,我认为您应该使用 jmxtrans,而当您需要克服 JSR-160 限制或可以从中受益时,您应该使用 Jolokia以其独特的功能。甚至可以想象将 Jolokia 集成到 jmxtrans 中,以便与要监控的服务器进行通信,然后通过 JSON/HTTP 而不是 JSR-160 RMI(也许这也阐明了差异焦点和支持的用例)。

于 2012-06-04T09:03:20.427 回答
1

让我再放一个项目 - https://github.com/dimovelev/metrics-sampler 它使用正则表达式和变量替换查询 JMX 数据,还支持 JDBC 查询作为指标源(主要用于监控我们的 oracle db 统计信息)和 mod_qos 用于 apache mod_qos 的东西。我们只需要石墨作为输出,这是它目前支持的唯一输出。

顺便说一句,恕我直言,JMX 端口对防火墙有问题,只是因为热点在启动时选择了一个随机的临时端口。使用 jrockit 可以使用标准 jvm 选项指定(到与注册表相同的端口)。要在热点上执行此操作,您需要自己编写代码(或重用代码,例如来自 tomcat jmx 连接器的代码)。好的部分是可以将两个端口设置为相同的值,因此只需要一个防火墙规则。

干杯迪莫

于 2012-09-25T21:07:39.763 回答