2012-07-07 85 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接口,對於您可能會看到的任何解決方案來說,這可能是正確的。