版權聲明:本文為部落客chszs的原創文章,未經部落客允許不得轉載。 https://blog.csdn.net/chszs/article/details/50927812
Graphite詳解
作者:chszs,未經部落客允許不得轉載。經許可的轉載需注明作者和部落格首頁: http://blog.csdn.net/chszs
Graphite是一個開源實時的、顯示時間序列度量資料的圖形系統。Graphite并不收集度量資料本身,而是像一個資料庫,通過其後端接收度量資料,然後以實時方式查詢、轉換、組合這些度量資料。Graphite支援内建的Web界面,它允許使用者浏覽度量資料和圖。
Graphite有三個主要元件組成:
-
1)Graphite-Web
這是一個基于Django的Web應用,可以呈現圖形和儀表闆
-
2)Carbon
這是一個度量處理守護程序
-
3)Whisper
這是一個基于時序資料庫的庫
Graphite的整體架構圖
一、Graphite的應用場景
Graphite通常用于監控基礎設施級别的度量,比如CPU、記憶體、I/O使用率、網絡吞吐量和延遲,當然Graphite在應用程式級的度量和業務級的度量方面也很不錯。
Collectd是一個著名的、持續很久的Linux項目,它用于收集基礎設施級的度量,在2012年被Graphite打包到項目中,作為Graphite的“寫插件”。Collectd自帶了很多采集插件,可以捕獲從CPU到電池使用率方面度量資料,還可以度量Java和Redis方面。
通常度量不會直接發送給Graphite的後端,而是發送一次一個度量或采樣給度量采集服務。StatsD是另一個開源項目,是一個著名的度量采集服務。它可以聚合接收到的采樣資料,做計算統計,求平均值、标準差和其他一些統計,周期性地重新整理資料到度量資料庫。Graphite是StatsD的預設後端。
出于可視化的目的,内建Web界面是目前主流的選擇。建立光滑的儀表闆并不難,Grafana首先從Graphite擷取資訊,而且還可以與其它幾個流行的度量資料庫協同工作,比如InfluxDB、OpenTSDB和Premetheus。
當度量資料超過了預期的邊界時,Graphite自身并不提供提醒功能。這方面有幾個方案可以解決此問題。Cabot就是一個流行的選擇,還可以使用另一個選擇StackState,它提供了同樣的功能。Cabot和StackState之間提醒功能的不同之處在于StackState內建了多個監控解決方案,它可以運作檢查,不僅檢查Graphite資料,而且檢查各種以組合的監控資料。
二、Graphite的優點
- 1)Graphite非常快,它的架構是子產品化可規模化的
- 2)Graphite很著名,有龐大的社群和廣泛的支援
- 3)有很多與Graphite互相協作的開源工具
- 4)Graphite完成單個工作且做得很好
- 5)Graphite采用Apache 2.0許可證
三、Graphite的不足
- 1)Graphite不能對資料進行分片,是以要解決這個問題就是采用多個Graphite執行個體
- 2)Graphite的安裝是一個很複雜的任務,盡管目前有了完整的Docker映像可以一次性安裝Graphite及其依賴