Graphite是一個高度可擴展的實時圖形系統。作為用戶,你編寫一個應用程序,收集你感興趣的數字時間序列數據,并將其發送到Graphite的處理后臺carbon,carbon將數據存儲在Graphite的專用數據庫中。然后可以通過graphite的Web界面將數據可視化。
誰應該使用Graphite?
任何想要長期跟蹤任何數值的人。如果你有一個可能會隨時間變化的數字,并且你可能想把這個值隨時間變化的情況用圖表表示出來,那么Graphite可能可以滿足你的需求。
具體來說,Graphite被設計用來處理數字時間序列數據。例如,Graphite就很適合繪制股票價格圖,因為它們是隨時間變化的數字。無論是幾個數據點,還是來自數千臺服務器的幾十個性能指標,那么Graphite都適合你。作為獎勵,你不一定要事先知道這些東西的名稱(誰想維護如此龐大的配置?);你只需發送一個度量名稱、一個時間戳和一個值,剩下的事情就由Graphite來處理了。
Graphite的可擴展性如何?
從CPU的角度來看,Graphite在前端和后端都是水平擴展的,這意味著你可以簡單地添加更多的機器來獲得更多的吞吐量。它還具有容錯性,即失去一臺后端機器會造成極小的數據損失(無論這臺機器在內存中緩存了什么),如果你有足夠的剩余容量來處理負載,就不會破壞系統。
從I/O的角度來看,在負載下,Graphite會非常迅速地對很多不同的文件執行很多微小的I/O操作。這是因為每一個發送到Graphite的不同度量都存儲在自己的數據庫文件中,類似于很多建立在RRD之上的工具(drraw、Cacti、Centreon等)的工作方式。事實上,Graphite最初確實使用RRD進行存儲,直到出現了基本的限制,需要新的存儲引擎。
高容量(每分鐘更新幾千個不同的指標)幾乎需要一個好的RAID陣列和/或SSD。如果磁盤無法跟上大量發生的小型寫操作(每個數據點只有幾個字節,但大多數標準磁盤每秒的I/O操作不能超過幾千次,即使它們很小),Graphite的后端會緩存傳入的數據。當這種情況發生時,Graphite的數據庫引擎whisper允許碳一次寫入多個數據點,從而提高整體吞吐量,只是代價是將多余的數據緩存在內存中,直到可以寫入。
Graphite還支持替代的存儲后端,可以大大改變這些特性。
圖表的實時性如何?
非常實時。即使是在重負載的情況下,當每個時間間隔傳入的指標數量遠遠大于存儲系統執行 I/O 操作的速度,并且大量的數據點被緩存在存儲管道中(見前面的問題解釋),Graphite 仍然可以繪制實時圖形。訣竅是,當 Graphite webapp 收到繪制圖形的請求時,它同時從磁盤上以及預存儲緩存中檢索數據(如果你有多個后端服務器,緩存可能是分布式的),并將兩個數據源結合起來,創建一個實時圖形。
誰已經在使用Graphite?
Graphite是由Orbitz內部開發的,在這里,它被用來可視化各種關鍵運營數據,包括應用指標、數據庫指標、銷售等。在寫這篇文章的時候,Orbitz的生產系統可以每分鐘處理大約160,000個不同的指標,這些指標運行在高速SAN上的兩臺niagra-2 Sun服務器上。
Graphite是用什么寫的?
Graphite webapp建立在Django web框架上,使用ExtJS javascript GUI工具包。圖形渲染使用Cairo圖形庫完成。后臺和數據庫是用純Python編寫的。
誰來編寫和維護Graphite?
Graphite最初是由Orbitz的Chris Davis開發的。Orbitz長期以來一直是開源社區的一部分,并發布了其他一些內部開發的產品。
Graphite 目前由 Graphite-Project GitHub 組織下的志愿者團隊開發。
騰訊視頻官方版 | 45.34MB
愛奇藝視頻官方正式版 | 35.10MB
暴風影音最新版下載 | 50.3MB
酷狗音樂2022下載 | 37MB