2012-07-07 83 views
1

过去几天我一直在玩JMX,尽管我没有心智 JConsole或标准的JMX网络管理工具,这将是很好的创建我自己的Web应用程序,以某种方式查询已注册的JMX MBeans,并用图表和图形呈现一个漂亮的,丰富的UI风格的“仪表板”; JMX控制台或JConsole根本没有的东西。JMX“仪表板”应用程序

这可能吗?我听说过一种称为JMX“代理”的东西,但不知道这与JMX如何通过仪表板式应用查询和管理有关。提前致谢!

+0

它可能基于应用程序服务器。 JBoss,它是简单的JMXServer调用,websphere如果你有许可证,很简单,他们有自己的库。 – kosa 2012-07-07 00:37:44

回答

1

除非你真的想自己做,否则你打算做的事情可能已经建立。你之前看过VisualVM吗?我真的很喜欢它http://visualvm.java.net/mbeans_tab.html/

要编写你自己的远程管理MBean的应用程序,我想你可以从本教程开始。似乎是一个很好的起点。

http://docs.oracle.com/javase/tutorial/jmx/remote/custom.html

+0

是VisualVM是* profiler *,这不是我想要做的。我想从我的仪表板应用程序中管理我的MBean(设置它们的状态,启动报告生成等) - 不会剖析我的代码! – IAmYourFaja 2012-07-07 11:11:59

+0

你甚至看过我收录的链接吗?有一个用于VisualVM的MBean插件,它可以完成许多你想要做的事情。我知道它主要是一个分析器,但它可以做的比这更多。 – jjathman 2012-07-07 13:55:44

+0

是的,我看着它 - 这迫使你从VisualVM中查看你的MBeans,但是,对吗?如果是这样,这不是我想要的(但是对于很酷的建议+1!)。 – IAmYourFaja 2012-07-07 15:13:39

5

Jolokia是基于代理的方法来JMX其转换为JSON-过HTTP JMX本地调用。它配有一个Javascript库,非常适合在浏览器中使用。有关网页内的示例用法,请参阅Jolokia-Cubism Integration的演示,或者更好地查看Tomasz Nurkiewicz的blog post,该示例提供了使用Jolokia以及Highcharts图形库的非常好的示例。

说了这么多,还有更多的:Jolokia的花哨妹妹Ají已经开始作为项目提供JMX控制台与Jolokia客户捆绑在一起。我仍在整理事情(呃,它慢慢地移动......),但我认为在今年夏天会有更多。人们已经可以玩弄它了,我们仍然在寻找志愿者(提示;-) ......

0

这里的一个评论是VisualVM是一个分析器。 VisualVM不是一个分析器,它是一个构建在NetBeans平台之上的平台。该平台支持以多种方式连接到一个虚拟机,包括使用MBeanPlatformServer的JMXConnector,可维护性代理(SA),按需附加等。

VisualVM确实包含2个不同的分析器,但也有一个MBean插件,允许您查看和操作已在MBeansPlatformServer中注册的MBean。

VisualVM中的许多视图从java.lang.management包中找到的MXBeans中捕获数据,这些数据已在MBeansPlatformServer中注册。许多这些MXBeans都是SA的包装器,它是HotSpot的一个组件,它维护着一组性能计数器。例如,计数器可以为您提供一些关于JIT编译器活动,GC活动甚至主机平台CPU利用率等的信息。

您可以轻松构建自己的插件来查看或操作MBean。在这里张贴的教程是如何完成它的一个信息来源。我编写了一个演示VisualVM插件,用于查看MemoryPool MXBeans中的数据。该插件已被其他人加强做了一些其他的事情。所有代码都可以在项目MemoryPoolView的java.net中找到。它涵盖了阅读数据。但是,执行功能实际上只是使用您正在与之交互的MBean所需的参数针对JMXConnector执行方法。 IOWs,这是插件的一个相当平凡的扩展。

0

HawtIO即将推出的最佳即插即用解决方案,可用于在网页上获取JMX内容。你可以在同一页面上放置多个mbeans,并一次查看它们,它可以在浏览器中运行,不必自己编写一堆前端代码,而且可以在不打开奇怪的端口的情况下完成IT部门会感到紧张。与简单的拖放界面一起工作的数据可视化选项非常少,但是有编写更高级插件的文档。

后端使用Jolokia在JMX上放置一个HTTP REST接口,对于您可能会看到的任何解决方案来说,这可能是正确的。