jolokia和amp;有什么区别? jmxtrans?什么时候选择一个?

时间:2012-04-14 06:21:59

标签: java jmx

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

3 个答案:

答案 0 :(得分:17)

我是jmxtrans的作者。在开发jmxtrans之前,我考虑过Jolokia。我选择使用jmxtrans开发,因为我有一个不同的用例。

Jolokia在Tomcat中扮演战争角色。它与jmxtrans类似,它允许您查询JMX服务器,但这是关于相似性结束的位置。您需要在Jolokia之上实现jmxtrans的其余部分,以便具有功能奇偶校验。

另一方面,jmxtrans是独立的,对Tomcat没有要求。我的目标受众是netops / devops角色。它配置了一个相对简单的基于JSON的结构,因此它不需要工程学位来配置和使用它。

您的想法是使用jmxtrans连续监视通过jmx公开统计信息的服务。您可以使用jmxtrans将数据从jmx“转换”为您想要的任何输出格式。一般来说,devops人们希望将他们的JVM与某些监控解决方案(如Graphite / Ganglia)集成,因此我为这些工具提供了输出编写器。

jmxtrans对于如何对jmx服务器进行查询也非常聪明,并且在那里有一些优化。还有很多工作可以让你做一些事情,比如将请求并行化到许多服务器,以便你可以扩展jmxtrans,用一个jmxtrans实例连续查询数百台服务器。

我希望稍微澄清一下。如果您有任何具体问题,我很乐意回答。

答案 1 :(得分:15)

确实,jmxtrans和Jolokia有不同的侧重点。 Jmxtrans是一个完整的监控解决方案,具有调度程序,可定期查询JMX请求并将结果发送到后端,如graphite或rrdtool。它使用标准的JSR-160(基于RMI)通信来查询JMX enabeled 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)和Jolokia,当你需要克服JSR-160限制时,你应该使用jmxtrans其独特功能之一的好处。人们甚至可以想象将Jolokia集成到jmxtrans中以便与要监控的服务器进行通信,然后通过JSON / HTTP而不是JSR-160 RMI(这也可以澄清差异焦点和支持的用例)。

答案 2 :(得分:1)

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

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

干杯 笛膜