2011-08-30 125 views
1

我們正在爲十幾個客戶運行服務器集羣。每個客戶在Jetty上都有一些應用程序服務器。這裏重要的是:Java的系統監視器

  • 有許多Java進程要監視。
  • 我需要能夠通過機器和客戶(一臺機器可以服務許多客戶,每個客戶擁有多臺機器)對他們進行分組(分段)。
  • 我還需要收集並顯示一些特定於每個客戶的數據。

我寧願用JMX公開它們,但我仍然可以自由地使用其他合理的解決方案。

什麼(最好是免費的&開源)服務器可以用於監控嗎?我需要從所有這些服務器收集信息,保留歷史記錄,並讓我編寫我的自定義儀表板進行演示。

我考慮過的一個解決方案是Hyperic,但它真的很笨拙,插件開發很糟糕。

回答

0

您可能想要嘗試使用Nagios/Centreon來完成此類任務 - 您可以使用Java爲它編寫插件(或者讓NRPE運行連接到您的服務器的Java程序,或者運行實現NRPE協議的jNRPE,從而避免啓動大量短命的JVM) - 使用JMX命令行客戶端(由Internet Archive等人生成)來查詢JMX bean。

當然還有JConsole - 我相信你可以爲此編寫插件,但它可能無法勝任這項工作!

最後,jstat會生成很多關於GC和關聯進程的很好的統計信息,您可以直接將其傳輸到文件。雖然不是很圖像。

0

如果您查看基於JMX的解決方案,可以嘗試查看Manageengine。或者交互式地,您可以使用Graylog2來擁有基於Syslog或AMQP的解決方案。

0

您可以嘗試使用BTrace從Jetty實例中獲取您之後的指標。 BTrace會將其輸出記錄到一組文件中,然後將其自動導入/導出到監控應用程序中。

我已經寫在BTrace相關的文章,可能會對你有所幫助:http://www.infoq.com/articles/java-profiling-with-open-source

使用BTrace的好處是,你可以登錄你喜歡的任何格式,你可以將你的指標以滿足您的要求。

在文章中,它解釋瞭如何使用EurekaJ對收集的指標進行分組,可視化和警報。

您可以將您的組指標的方式,你希望:

  • 客戶名稱:機:適用範圍:路徑:到:公制
  • 機:應用程序:客戶:路徑:到:公制
  • app:機器:客戶:路徑:至:公制

隨着BTrace,你可以從字面上你的JVM,方法的執行時間,內存使用情況,線程等

0

使用Nagios的或/叉的一種衍生物(Opsview,Icinga)

走出任何你想

您可以設置雙向監測

  1. 獲取Nagios的檢查,如果你的Jetty實例運行(用URL捅他們,並確保您得到預期的積極迴應)。有一些標準的插件用於這種保存活動檢查
  2. 此外,讓您的Java進程和Web應用程序發送警報(稱爲Nagios中的被動檢查)到Nagios,如果出現問題(您可以使用我的庫https://code.google.com/p/jsendnsca/這個: - ))

不僅將Nagios的監控Java進程這樣也是你跨越你的財產(HTTP,FTP,SMTP服務)以及一般錫健康運行的任何其他服務(CPU,內存,裝載Avg)