Prometheus (五)對比 Graphite

總結(jié):白盒監(jiān)控,或者需要監(jiān)控一個(gè)動(dòng)態(tài)的云環(huán)境,Prometheus更優(yōu)。

一、適用范圍

Graphite:

  • 一個(gè)Python寫的web應(yīng)用,企業(yè)級的系統(tǒng)監(jiān)控工具,可以在廉價(jià)機(jī)硬件上運(yùn)行
  • 作為被動(dòng)機(jī)制的時(shí)間序列數(shù)據(jù)庫,有自己的查詢語言和繪圖方式。其他特性需要通過外部組件來實(shí)現(xiàn)
  • 由三個(gè)軟件組件組成:
    • carbon:一個(gè)Twisted守護(hù)進(jìn)程,監(jiān)聽并接收時(shí)間序列數(shù)據(jù)
    • whisper:固定大小文件的數(shù)據(jù)庫,用來存儲時(shí)間序列數(shù)據(jù),在設(shè)計(jì)上類似于RRD(Round Robin Database,一種環(huán)形數(shù)據(jù)庫,專門設(shè)計(jì)來存儲時(shí)序數(shù)據(jù))
    • graphite-web:Django框架實(shí)現(xiàn)的一個(gè)webapp,可以從whisper數(shù)據(jù)庫獲取時(shí)間序列數(shù)據(jù)并且進(jìn)行展示

小結(jié):Graphite是一個(gè)被動(dòng)接收的時(shí)間序列數(shù)據(jù)庫,但提供了數(shù)據(jù)展示的功能。數(shù)據(jù)采集agent、警報(bào)等其它的功能,需要引入第三方軟件來支持。

Prometheus

  • 有一套完整的監(jiān)控和趨勢系統(tǒng),在時(shí)序數(shù)據(jù)基礎(chǔ)上內(nèi)建主動(dòng)抓取,搜索,繪圖和報(bào)警系統(tǒng),有豐富的官方和第三方貢獻(xiàn)的監(jiān)控收集工具(exporters).

  • 全能監(jiān)控,提供了基于時(shí)間序列數(shù)據(jù)的數(shù)據(jù)采集、存儲、查詢、畫圖和告警的功能

  • 采用主動(dòng)(pull)采集的方式,知道被監(jiān)控的系統(tǒng)是什么樣子的(哪個(gè)endpoints應(yīng)該存在,那種時(shí)間序列模式意味著出問題),能夠?yàn)閱栴}診斷提供強(qiáng)力的支持

二、數(shù)據(jù)模型

  1. 兩者大體一致,Prometheus提供更加豐富的metadata模型:
  • Graphite 的metric名稱以點(diǎn)"."分割組件,這種方式是一種維度的編碼方式,通過"."來潛在的提供分割數(shù)據(jù)標(biāo)識。
  • Prometheus 在提供metric名稱之外,明確的通過標(biāo)簽鍵值對標(biāo)識metric不同的維度,更易于通過查詢語句來過濾、分組、匹配metrics。
  1. 當(dāng)Graphite和StatsD結(jié)合使用時(shí),它存儲的數(shù)據(jù)一般是聚合過后的數(shù)據(jù)(維度降低),Prometheus存原維度數(shù)據(jù)(這些數(shù)據(jù)有不同的維度,能夠根據(jù)這些數(shù)據(jù)來定位更細(xì)節(jié)的問題)。
    例子
  • 使用Graphite/StatsD存儲狀態(tài)碼為500、方法是POST、路徑是"/tracks"、服務(wù)名稱為api-server(api-server有多個(gè)實(shí)例)的http請求數(shù),這樣一個(gè)監(jiān)控指標(biāo):
    stats.api-server.tracks.post.500 -> 93
  • 使用Prometheus存儲同樣的監(jiān)控指標(biāo):
api_server_http_requests_total{method="POST",handler="/tracks",status="500",instance="<sample1>"} -> 34
api_server_http_requests_total{method="POST",handler="/tracks",status="500",instance="<sample2>"} -> 28
api_server_http_requests_total{method="POST",handler="/tracks",status="500",instance="<sample3>"} -> 31

即:Prometheus支持更高維度的監(jiān)控指標(biāo)

三、存儲

  • Graphite 使用Whisper格式在本地磁盤存儲時(shí)間序列數(shù)據(jù)。Whisper是RRD-style database,它要求到達(dá)的采樣數(shù)據(jù)間隔固定。每一個(gè)時(shí)間序列存儲在一個(gè)單獨(dú)的文件,在一定時(shí)間之后新的采樣數(shù)據(jù)會(huì)覆蓋老得數(shù)據(jù)。
  • Prometheus 也為每一個(gè)時(shí)間序列創(chuàng)建一個(gè)本地文件,但是允許以任意時(shí)間間隔存儲采樣數(shù)據(jù)(數(shù)據(jù)采集、規(guī)則計(jì)算評估時(shí)間任意)。舊數(shù)據(jù)可以是任意長度,新的采樣數(shù)據(jù)只是簡單的附加在老數(shù)據(jù)的后面。Prometheus針對短生命周期、頻繁更改標(biāo)簽集合的時(shí)間序列也能和好的支持。

四、總結(jié)

  • Prometheus提供更豐富的數(shù)據(jù)模型和查詢語句,此外還易于運(yùn)行、整合到已有環(huán)境中。
  • 如果想要集群化的解決方案,能夠存儲長期的歷史數(shù)據(jù),Graphite可能是更好的選擇。
  • 白盒監(jiān)控,或者需要監(jiān)控一個(gè)動(dòng)態(tài)的云環(huán)境,Prometheus更優(yōu)。
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容