推薦 7 個超棒的監控工具

oschina發表於2015-07-03

Java 開發者最有用的監控工具有哪些呢?

監測是當今生產環境中很重要的一個功能。錯誤和效能問題任何時間都會出現 —— 不僅僅在業務時間內 —— 所以好的監控工具需要 7 天 24 小時。目前有許多從不同角度解決這個問題的工具,所以弄清楚去採用哪個不是那麼簡單。

今天,我帶來了 7 個監測工具以及它們的新一面,它們都是值得考慮作為像 New Relic 或 AppDynamics 的替代或補充。這些工具包括混合開源和 SaaS 模式,它們每個人都有其在度量、視覺化或跟蹤錯誤方面的專長或缺憾。

推薦 7 個超棒的監控工具

SaaS工具

1. Datadog

Datadog 是 SaaS 監測工具,針對 DevOps 團隊,從你的 app 或者其他各種工具獲取資料並提供資料視覺化功能。它把從你基礎裝置和軟體採集的資料統一處理並儲存。允許你建立儀表盤和搜尋訪問你提供的資料。他們目前提供資料的聚合和展示而不是提供資料分析。

Datadog 的一個優點是了開放所有 API,可以讓你很靈活的開發自己的指標或整合。

推薦 7 個超棒的監控工具

Datadog 儀表盤示例

缺點: Datadog 尚未提供太多資料統計功能,做為一個監控軟體,這些功能可能恰恰是你正在尋找的。他們還需要植入你的程式碼,這會產生程式碼依賴。

費用:它有免費版本和15美元/臺/月的標準版本,標準版費用可上下浮動,浮動的多少要看主機的數量。

java支援方面:官方文件中說明,Datadog API 支援 Python,Ruby 和 C#。不過,由於它的 API 訪問是開放的,因此 Datalog 社團編寫了幾個 Java 方面的庫,其中包括對 StatsD 和 Codahale 測量支援的庫。

其他:由於 Datadog 具有告警功能,而且可監控效能,因此它可作為一個價格相對便宜的應用程式效能監控器(APM)。有許多整合方案可以讓你毫不費力地把它整合到你的執行環境中。Datadog 是一個強大的採集並視覺化測量結果的工具,而不是分析工具,因此如果你需要的是分析工具,那就要另尋它物了。

2. Ruxit

它由 Dynatrace 開發,Ruxit 是一個應用效能監控工具,它作用於 SaaS 模型。它通過 SaaS 提供不同的 APM 體驗,並工作在高擴充套件性環境中。它作為一個代理安裝,不需要你配置環境,它還提供了一個類似於 New Relic 的易於安裝的工具。他們監控使用者的活動,應用效能,伺服器和網路活動。

推薦 7 個超棒的監控工具

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 工具,並且它易於安裝也易於整合到你的環境中去。工具為你的環境提供一個良好的範圍廣度,並提供幾個不同區域的檢視。

3. Takipi

Takipi 告知你生產環境下的程式碼在什麼時候、因什麼原因而終止執行。它對所有錯誤進行檢測,同時會給出出現錯誤時程式碼的位置和變數的狀態。Takipi 是以 Java 代理的身份執行的,與任何日誌檔案無關,這樣就會減少小於 %3 的 CPU 和 IO 執行花費。安裝 Takipi 的時候,也不需要進行程式碼更改,不需要安裝二進位制依賴包或者進行構建配置的設定。就像整合 JIRA 和 Slack 那樣,Takipi 可以非常簡單地插入到工作流程中。

推薦 7 個超棒的監控工具

Takipi 的錯誤分析介面

缺點:它是一個只可用在 JVM 層上的工具,因此 JVM 不支援的語言它也不支援。目前,它也沒有可以與其他告警工具整合在一起的 API。

費用:免費級;專業級,其費用可上下浮動,69美元/伺服器/月;企業級。級別的劃分是根據儲存的資料量,分析的錯誤數和部署選項而確定的。

Java支援方面:Takipi 是執行在 JVM 層上的工具。任何不需要其它環境就可以執行在 JVM 上的語言,它都支援。

其他:與其他停留在棧追蹤層級的工具不同,Takipi 深入到 JVM 層級上,可以按照你的要求向你展示實際執行的程式碼和變數的狀態,以達到對每個錯誤的解析。通過 Takipi,你可以確定是否是新部署終止了正在執行的程式碼, 通過深入地分析應用出現的所有錯誤,聚焦出問題的關鍵所在。

4. Rollbar

Rollbar 著眼於錯誤追蹤與監控。它使用堆疊追蹤來捕捉應用中出現的錯誤。這樣做的好處是可以支援更多的語言和環境。Rollbar 也提供手工方式深入異常、事件內部,並提供報告的能力。除提供強大的異常捕獲能力外,還提供了一些警報和分析能力。

推薦 7 個超棒的監控工具

Rollbar 儀表板

劣勢: Rollbar 僅能捕獲“程式未捕捉異常”。如果你打算捕獲程式捕捉異常或其他,只好手工來做。由於依賴頂層程式未捕捉異常處理器,它能忽略由框架產生的異常,避免執行緒死鎖。

成本: 免費版本, $29/每月, $99/月 and $249/月,區別在與追蹤到的事件數量及資料保留長度.

Java支援: Rollbar 沒有提供 Java 的官方支援庫,但社群提供了一些實現,可以講你的日誌發給 Rollbar.

概述: Rollbar 是基於堆疊的錯誤追蹤應用,它能相容大多數開發語言。但負面影響是它僅能捕獲程式未捕捉異常及手動傳送的事件。

開放原始碼(的監控工具)

5. Sensu

Sensu 是一個面向應用和系統服務的開源監控框架。它能收集和使用多種工具的度量值,並提供已定義事件報警。Sensu,使用 Ruby 實現,採用“檢查和處理器”設定,週期性執行檢查指令碼,查詢預定義條件,如果條件滿足,則向處理器報告。處理器用於傳送通告或採取其他處置方法。

推薦 7 個超棒的監控工具

Sensu中的警報

劣勢: 不像 Ruxit,Sensu 並沒有真正的實現 APM 工具。它著重於伺服器監控。在安裝前端, Sensu 依賴 RabbitMQ 和 Redis,及其他依賴,這些依賴包可以在指定的軟體倉庫中找到。還有一些對於可擴充套件能力和維護複雜性的擔憂。當然,你的需求可能不同。

成本: Sensu Core 核心版(其中的開源專案)免費, 但也提供企業版本,企業版提供附加的整合、支援和特性。企業版費用標準: $2/每伺服器/每月, 大規模部署享受折扣.

Java視角: Sensu 的檢查和處理器指令碼能用任何開發語言編寫, Sensu 社群提供了Java支援外掛

概述: Sensu 是雲和伺服器監控的一個開源替代框架實現,在搞擴充套件性和複雜性上還存在一些問題,但它仍然不失為一個度量引數值收集和服務監控的強力工具。

6. ELK stack

ELK Stack,嚴格來講,不是一個新產品,但我們常常忽略掉它,不放到我們的討論列表中。  ELK stack 是一個流行的工具套件,功能涵蓋監控、日誌和資料視覺化。它由 ElasticSearch, Logstash, and Kibana 三部分組成。其中,Elasticsearch 負責搜尋和分析,Logstash 是日誌聚積器,而 Kibana則提供華麗的視覺化儀表盤。我們已經在 Takipi中 使用 ELK Stack一段時間,使用 java 通過日誌和Redis 提供輸入。這既適用於開發者,同樣可用於 BI。今天, Elasticsearch 完美內建了 Logstash,  Kibana 也是靈活的獨立工具。它們整合和設定都很簡單。你可以按照你的需要靈活搭配這三個工具使用。當實施(推出)新的部署時,儀表盤會遵照你設定的應用健康引數閥值指示器工作。這些指示器會實時更新,同樣允許你在上傳產品補丁程式碼時,暫時關閉監控。

推薦 7 個超棒的監控工具

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,是一整套提供搜尋分析日誌並帶有視覺化功能的開源工具。這一套工具整合地非常好,所以使用起來也很簡單(雖然它並不是必須的)。

7. Graphite

Graphite 是應用程式監控度量值的視覺化工具,包括三個元件 (Carbon, Whisper, 和Graphite-web),它的開源特性使得它能被方便定製和改進. 如何構建你自己的 Graphite 構架,可以參看我們的文章 here

Graphite 提供了強大的查詢訪問API和特性豐富的設定。它並不需要設定自身的度量,而是提供Graphite metric protocol ,被多種度量採集器選擇的事實協議格式。因此,輸入給它的資料完全不是問題。使用 Graphite 能使你為你的應用建立各種檢視。

推薦 7 個超棒的監控工具

預設的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 都是值得考慮的。這些工具要麼是最近才建立的,要麼是這篇文章中未提到的一些大型監控工具的替代工具。選擇部署哪款監控工具要明確在哪兒才能搜尋這些工具。這兒所提到的工具就是一個很好的開始。

相關文章