推薦 7 個超棒的監控工具
Java 開發者最有用的監控工具有哪些呢?
監測是當今生產環境中很重要的一個功能。錯誤和性能問題任何時間都會出現 —— 不僅僅在業務時間內 —— 所以好的監控工具需要 7 天 24 小時。目前有許多從不同角度解決這個問題的工具,所以弄清楚去采用哪個不是那么簡單。
今天,我帶來了 7 個監測工具以及它們的新一面,它們都是值得考慮作為像 New Relic 或 AppDynamics 的替代或補充。這些工具包括混合開源和 SaaS 模式,它們每個人都有其在度量、可視化或跟蹤錯誤方面的專長或缺憾。
SaaS工具
1. Datadog
Datadog 是 SaaS 監測工具,針對 DevOps 團隊,從你的 app 或者其他各種工具獲取數據并提供數據可視化功能。它把從你基礎設備和軟件采集的數據統一處理并存儲。允許你創建儀表盤和搜索訪問你提供的數據。他們目前提供數據的聚合和展示而不是提供數據分析。
Datadog 的一個優點是了開放所有 API,可以讓你很靈活的開發自己的指標或整合。
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 的易于安裝的工具。他們監控用戶的活動,應用性能,服務器和網絡活動。
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 可以非常簡單地插入到工作流程中。
Takipi 的錯誤分析界面
缺點:它是一個只可用在 JVM 層上的工具,因此 JVM 不支持的語言它也不支持。目前,它也沒有可以與其他告警工具集成在一起的 API。
費用:免費級;專業級,其費用可上下浮動,69美元/服務器/月;企業級。級別的劃分是根據保存的數據量,分析的錯誤數和部署選項而確定的。
Java支持方面:Takipi 是運行在 JVM 層上的工具。任何不需要其它環境就可以運行在 JVM 上的語言,它都支持。
其他:與其他停留在棧追蹤層級的工具不同,Takipi 深入到 JVM 層級上,可以按照你的要求向你展示實際運行的代碼和變量的狀態,以達到對每個錯誤的解析。通過 Takipi,你可以確定是否是新部署終止了正在運行的代碼, 通過深入地分析應用出現的所有錯誤,聚焦出問題的關鍵所在。
4. Rollbar
Rollbar 著眼于錯誤追蹤與監控。它使用堆棧追蹤來捕捉應用中出現的錯誤。這樣做的好處是可以支持更多的語言和環境。Rollbar 也提供手工方式深入異常、事件內部,并提供報告的能力。除提供強大的異常捕獲能力外,還提供了一些警報和分析能力。
Rollbar 儀表板
劣勢: Rollbar 僅能捕獲“程序未捕捉異常”。如果你打算捕獲程序捕捉異常或其他,只好手工來做。由于依賴頂層程序未捕捉異常處理器,它能忽略由框架產生的異常,避免線程死鎖。
成本: 免費版本, $29/每月, $99/月 and $249/月,區別在與追蹤到的事件數量及數據保留長度.
Java支持: Rollbar 沒有提供 Java 的官方支持庫,但社區提供了一些實現,可以講你的日志發給 Rollbar.
概述: Rollbar 是基于堆棧的錯誤追蹤應用,它能兼容大多數開發語言。但負面影響是它僅能捕獲程序未捕捉異常及手動發送的事件。
開放源代碼(的監控工具)
5. Sensu
Sensu 是一個面向應用和系統服務的開源監控框架。它能收集和使用多種工具的度量值,并提供已定義事件報警。Sensu,使用 Ruby 實現,采用“檢查和處理器”設定,周期性運行檢查腳本,查找預定義條件,如果條件滿足,則向處理器報告。處理器用于發送通告或采取其他處置方法。
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 也是靈活的獨立工具。它們集成和設置都很簡單。你可以按照你的需要靈活搭配這三個工具使用。當實施(推出)新的部署時,儀表盤會遵照你設定的應用健康參數 閥值指示器工作。這些指示器會實時更新,同樣允許你在上傳產品補丁代碼時,暫時關閉監控。
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 能使你為你的應用創建各種視圖。
默認的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 都是值得考慮的。這些工具要么是最近才創建的,要么是這篇文章中未提到的一些大型監控工具的替代工具。選擇部署哪款監控工具要明確在哪兒才能搜索這些工 具。這兒所提到的工具就是一個很好的開始。
來源:oschina