Java 開發者最有用的監控工具備哪些呢?前端
監測是當此生產環境中很重要的一個功能。錯誤和性能問題任什麼時候間都會出現 —— 不只僅在業務時間內 —— 因此好的監控工具須要 7 天 24 小時。目前有許多從不一樣角度解決這個問題的工具,因此弄清楚去採用哪一個不是那麼簡單。java
今天,我帶來了 7 個監測工具以及它們的新一面,它們都是值得考慮做爲像 New Relic 或 AppDynamics 的替代或補充。這些工具包括混合開源和 SaaS 模式,它們每一個人都有其在度量、可視化或跟蹤錯誤方面的專長或缺憾。git
Datadog 是 SaaS 監測工具,針對 DevOps 團隊,從你的 app 或者其餘各類工具獲取數據並提供數據可視化功能。它把從你基礎設備和軟件採集的數據統一處理並存儲。容許你建立儀表盤和搜索訪問你提供的數據。他們目前提供數據的聚合和展現而不是提供數據分析。github
Datadog 的一個優勢是了開放全部 API,可讓你很靈活的開發本身的指標或整合。web
Datadog 儀表盤示例服務器
缺點: Datadog 還沒有提供太多數據統計功能,作爲一個監控軟件,這些功能可能偏偏是你正在尋找的。他們還須要植入你的代碼,這會產生代碼依賴。網絡
費用:它有免費版本和15美圓/臺/月的標準版本,標準版費用可上下浮動,浮動的多少要看主機的數量。app
java支持方面:官方文檔中說明,Datadog API 支持 Python,Ruby 和 C#。不過,因爲它的 API 訪問是開放的,所以 Datalog 社團編寫了幾個 Java 方面的庫,其中包括對 StatsD 和 Codahale 測量支持的庫。框架
其餘:因爲 Datadog 具備告警功能,並且可監控性能,所以它可做爲一個價格相對便宜的應用程序性能監控器(APM)。有許多集成方案可讓你絕不費力地把它集成到你的運行環境中。Datadog 是一個強大的採集並可視化測量結果的工具,而不是分析工具,所以若是你須要的是分析工具,那就要另尋它物了。運維
它由 Dynatrace 開發,Ruxit 是一個應用性能監控工具,它做用於 SaaS 模型。它經過 SaaS 提供不一樣的 APM 體驗,並工做在高擴展性環境中。它做爲一個代理安裝,不須要你配置環境,它還提供了一個相似於 New Relic 的易於安裝的工具。他們監控用戶的活動,應用性能,服務器和網絡活動。
Ruxit面板
缺點: Ruxit 沒有在空間上提供不少深度功能給其餘的 APM 工具。
消耗: Ruxit 監控應用會消耗 $0.15/主機/小時,而且對真實的用戶監控(Real User Monitoring)來講每 1000 個訪問者就花費 $0.15。
The Java Angle: Ruxit 能夠工做在任何 Java 1.5 版本以上的 Java 服務器上。Java 是他們首選語言,所以能得到更好的支持。
Takeaway: Ruxit 是一個 SaaS APM 工具,而且它易於安裝也易於集成到你的環境中去。工具爲你的環境提供一個良好的範圍廣度,並提供幾個不一樣區域的視圖。
Takipi 告知你生產環境下的代碼在何時、因什麼緣由而終止執行。它對全部錯誤進行檢測,同時會給出出現錯誤時代碼的位置和變量的狀態。Takipi 是以 Java 代理的身份運行的,與任何日誌文件無關,這樣就會減小小於 %3 的 CPU 和 IO 運行花費。安裝 Takipi 的時候,也不須要進行代碼更改,不須要安裝二進制依賴包或者進行構建配置的設置。就像集成 JIRA 和 Slack 那樣,Takipi 能夠很是簡單地插入到工做流程中。
Takipi 的錯誤分析界面
缺點:它是一個只可用在 JVM 層上的工具,所以 JVM 不支持的語言它也不支持。目前,它也沒有能夠與其餘告警工具集成在一塊兒的 API。
費用:免費級;專業級,其費用可上下浮動,69美圓/服務器/月;企業級。級別的劃分是根據保存的數據量,分析的錯誤數和部署選項而肯定的。
Java支持方面:Takipi 是運行在 JVM 層上的工具。任何不須要其它環境就能夠運行在 JVM 上的語言,它都支持。
其餘:與其餘停留在棧追蹤層級的工具不一樣,Takipi 深刻到 JVM 層級上,能夠按照你的要求向你展現實際運行的代碼和變量的狀態,以達到對每一個錯誤的解析。經過 Takipi,你能夠肯定是不是新部署終止了正在運行的代碼, 經過深刻地分析應用出現的全部錯誤,聚焦出問題的關鍵所在。
Rollbar 着眼於錯誤追蹤與監控。它使用堆棧追蹤來捕捉應用中出現的錯誤。這樣作的好處是能夠支持更多的語言和環境。Rollbar 也提供手工方式深刻異常、事件內部,並提供報告的能力。除提供強大的異常捕獲能力外,還提供了一些警報和分析能力。
Rollbar 儀表板
劣勢: Rollbar 僅能捕獲「程序未捕捉異常」。若是你打算捕獲程序捕捉異常或其餘,只好手工來作。因爲依賴頂層程序未捕捉異常處理器,它能忽略由框架產生的異常,避免線程死鎖。
成本: 免費版本, $29/每個月, $99/月 and $249/月,區別在與追蹤到的事件數量及數據保留長度.
Java支持: Rollbar 沒有提供 Java 的官方支持庫,但社區提供了一些實現,能夠講你的日誌發給 Rollbar.
概述: Rollbar 是基於堆棧的錯誤追蹤應用,它能兼容大多數開發語言。但負面影響是它僅能捕獲程序未捕捉異常及手動發送的事件。
Sensu 是一個面向應用和系統服務的開源監控框架。它能收集和使用多種工具的度量值,並提供已定義事件報警。Sensu,使用 Ruby 實現,採用「檢查和處理器」設定,週期性運行檢查腳本,查找預約義條件,若是條件知足,則向處理器報告。處理器用於發送通告或採起其餘處置方法。
Sensu中的警報
劣勢: 不像 Ruxit,Sensu 並無真正的實現 APM 工具。它着重於服務器監控。在安裝前端, Sensu 依賴 RabbitMQ 和 Redis,及其餘依賴,這些依賴包能夠在指定的軟件倉庫中找到。還有一些對於可擴展能力和維護複雜性的擔心。固然,你的需求可能不一樣。
成本: Sensu Core 核心版(其中的開源項目)免費, 但也提供企業版本,企業版提供附加的集成、支持和特性。企業版費用標準: $2/每服務器/每個月, 大規模部署享受折扣.
Java視角: Sensu 的檢查和處理器腳本能用任何開發語言編寫, Sensu 社區提供了Java支持插件。
概述: Sensu 是雲和服務器監控的一個開源替代框架實現,在搞擴展性和複雜性上還存在一些問題,但它仍然不失爲一個度量參數值收集和服務監控的強力工具。
ELK Stack,嚴格來說,不是一個新產品,但咱們經常忽略掉它,不放到咱們的討論列表中。 ELK stack 是一個流行的工具套件,功能涵蓋監控、日誌和數據可視化。它由 ElasticSearch, Logstash, and Kibana 三部分組成。其中,Elasticsearch 負責搜索和分析,Logstash 是日誌聚積器,而 Kibana則提供華麗的可視化儀表盤。咱們已經在 Takipi中 使用 ELK Stack一段時間,使用 java 經過日誌和Redis 提供輸入。這既適用於開發者,一樣可用於 BI。今天, Elasticsearch 完美內置了 Logstash, Kibana 也是靈活的獨立工具。它們集成和設置都很簡單。你能夠按照你的須要靈活搭配這三個工具使用。當實施(推出)新的部署時,儀表盤會遵守你設定的應用健康參數閥值指示器工做。這些指示器會實時更新,一樣容許你在上傳產品補丁代碼時,暫時關閉監控。
ELK Stack 視圖
劣勢:ELK Stack 有着開源工具所通用的缺點(即你須要本身承擔工具的安裝成本和部署問題)。在大規模數據狀況下,須要運行 ELK Stack 的機器數量成倍增加,這就須要你本身來監控和維護這些額外的機器。一種可行的方案是使用託管服務,例如 Logz.io 來減輕這種監控的壓力。
成本: 做爲開源工具,ELK Stack 沒有任何價格負擔,但它也能夠提供來自 Elastic 專業的服務支持。
Java視角: ELK Stack 轉爲 Java 設計。事實上,ElasticSearch 和 Logstash 運行在 Java 環境。Elastic 要求的 Java 版本最低爲 Java7,且全部的 ElasticSearch 節點的 JVM 版本必須相同。
其餘: ELK Stack,包括 ElasticSearch Logstash, 和 Kibana,是一整套提供搜索分析日誌並帶有可視化功能的開源工具。這一套工具整合地很是好,因此使用起來也很簡單(雖然它並非必須的)。
Graphite 是應用程序監控度量值的可視化工具,包括三個組件 (Carbon, Whisper, 和Graphite-web),它的開源特性使得它能被方便定製和改進. 如何構建你本身的 Graphite 構架,能夠參看咱們的文章 here。
Graphite 提供了強大的查詢訪問API和特性豐富的設置。它並不須要設置自身的度量,而是提供Graphite metric protocol ,被多種度量採集器選擇的事實協議格式。所以,輸入給它的數據徹底不是問題。使用 Graphite 能使你爲你的應用建立各類視圖。
默認的Graphite儀表盤GUI
缺點: Graphite 面臨開源工具的共同困境(也就是,安裝的開銷以及部署的問題)。另外,Graphite 在大規模的狀況下會遇到問題,這些問題是由 Carbon 和 Whisper 組件的設計決策而來。這是一個偏好問題,可是人們對默認的 GUI 也沒有太大的熱情。
開銷: 下載 Graphite 是免費的,可是你須要將硬件的因素以及運維的開銷考慮在內。 相對於 Graphite 而言,也有許多替代品,如 Grafana 和 InfluxDB 也是免費的。若是你想使用 Graphite,而不但願本身部署,也能夠經過付費的方式進行託管。
Java視角: Graphite 是語言無關的,有許多工具能夠從 Java 應用程序收集指標,並將它們發送給 Graphite。
紀要: Graphite 是一個受歡迎的開源軟件工具,它以可視化的方式展現從應用程序收集的指標。它有開源軟件共同的缺點,以及規模化的限制。不過,若是你願意付費或者定製,這兩方面的缺點均可以經過許多不一樣的方式來克服。
現在,監控工具是生產環境的重要組成部分。測量結果的可視化、錯誤追蹤、性能監控和應用分析是對應用的運行情況進行深刻觀測的基本手段。認識到這一需求很是容易,但要選擇哪一款監控工具或者哪一組監控工具卻異常困難。
上面我提到的7個工具:Datalog,Ruxit,Takipi,Rollbar,Sensu,ELK Stack 和 Graphite 都是值得考慮的。這些工具要麼是最近才建立的,要麼是這篇文章中未提到的一些大型監控工具的替代工具。選擇部署哪款監控工具要明確在哪兒才能搜索這些工具。這兒所提到的工具就是一個很好的開始。