Prometheus 是什么

監(jiān)控系統(tǒng)不完全發(fā)展史

監(jiān)控系統(tǒng)的發(fā)展可以粗略地劃分為三個(gè)時(shí)代。

最初是SNMP監(jiān)控時(shí)代,那時(shí)候的監(jiān)控系統(tǒng)基于 SNMP 協(xié)議抓取信息;多用于監(jiān)控網(wǎng)絡(luò)設(shè)備,以硬件監(jiān)控為主。典型代表有 Cadvisor + InfluxDB + Grafana,這一代監(jiān)控系統(tǒng)只能從主機(jī)維度采集信息,沒有 NameSpace、Pod 等維度的匯聚功能。

而后出現(xiàn)了第二代,算是第一代的改良版,可以對(duì)數(shù)據(jù)進(jìn)行匯總。典型代表有 Heapster + InfluxDB + Grafana。其中,Heapster 負(fù)責(zé)調(diào)用各 node 中的 Cadvisor 接口,對(duì)數(shù)據(jù)進(jìn)行匯總,然后導(dǎo)到 InfluxDB,可以從 cluster、node、pod 各個(gè)層面提供詳細(xì)的資源使用情況。

Prometheus-1.png

第三代是云原生監(jiān)控系統(tǒng)。云計(jì)算時(shí)代到來后,云原生監(jiān)控系統(tǒng)成為新的主流。監(jiān)控系統(tǒng)具備監(jiān)控目標(biāo)的數(shù)據(jù)采集、存儲(chǔ)、報(bào)警等一套監(jiān)控系統(tǒng)必備的功能,基于指標(biāo)、日志和鏈路三個(gè)立體維度進(jìn)行立體的系統(tǒng)監(jiān)控。典型代表有 Metrics- Server + Prometheus。

Prometheus-2.png

如上圖,Resource Metrics 對(duì)應(yīng)的接口是metrics.k8s.io,主要的實(shí)現(xiàn)就是 metrics-server,它提供資源監(jiān)控能力,比較常見的是節(jié)點(diǎn)級(jí)別,pod級(jí)別,namespace級(jí)別,class級(jí)別,這類的監(jiān)控指標(biāo)都可以通過 metrics.k8s.io 接口獲取。

Custom Metrics 對(duì)應(yīng)的接口是 custom metrics.k8s.io,主要的實(shí)現(xiàn)是 Prometheus,它提供的是資源監(jiān)控和自定義監(jiān)控。

常見監(jiān)控系統(tǒng)的三個(gè)立體維度:

指標(biāo)監(jiān)控(metrics):隨時(shí)間推移產(chǎn)生的一些與監(jiān)控相關(guān)的可聚合的數(shù)據(jù)點(diǎn),該類數(shù)據(jù)具備:零散信息和可聚合的特性。

日志監(jiān)控(logging):整體日志或分層次的日志和事件。

鏈路跟蹤(tracing):分布式系統(tǒng),對(duì)分布式鏈路跟蹤、調(diào)用過程中發(fā)生的一系列事情(性能數(shù)據(jù))做的收集。

Prometheus 簡介

Prometheus 由 SoundCloud 開發(fā)的開源監(jiān)控報(bào)警系統(tǒng)和時(shí)序列數(shù)據(jù)庫(TSDB),主要用 Go 編寫。自2012年起,許多公司及組織已經(jīng)采用 Prometheus,并且該項(xiàng)目有著非?;钴S的開發(fā)者和用戶社區(qū),現(xiàn)在已經(jīng)成為一個(gè)獨(dú)立的開源項(xiàng)目,并且保持獨(dú)立于任何公司,Prometheus 在2016加入 CNCF ( Cloud Native Computing Foundation ), 作為在 kubernetes 之后的第二個(gè)由基金會(huì)主持的項(xiàng)目。github地址(https://github.com/prometheus

Prometheus 的主要特征

  • 多維數(shù)據(jù)模型(時(shí)序列數(shù)據(jù)有metric和一組key/value組成)
  • 在多維度上靈活的查詢語言(PromQl)
  • 不依賴分布式存儲(chǔ),單主節(jié)點(diǎn)工作.
  • 可以通過pushgateway進(jìn)行時(shí)序列數(shù)據(jù)推送(pushing)
  • 可以通過服務(wù)發(fā)現(xiàn)或者靜態(tài)配置去獲取要采集的目標(biāo)服務(wù)器
  • 多種可視化圖表及儀表盤支持

Prometheus 架構(gòu)

Prometheus 架構(gòu).png

prometheus生態(tài)系統(tǒng)由多個(gè)組件組成,其中許多組件是可選的。

  • promethues server:主要獲取和存儲(chǔ)時(shí)間序列數(shù)據(jù)。
  • client libraries:用于對(duì)接 Prometheus Server, 可以查詢和上報(bào)數(shù)據(jù)。右下角部分。
  • exporters:主要是作為agent收集數(shù)據(jù)發(fā)送到prometheus server,不同的數(shù)據(jù)收集由不同的exporters實(shí)現(xiàn),如監(jiān)控主機(jī)有node-exporters,mysql有MySQL server exporters。
  • pushgateway:允許短暫和批處理的jobs推送它們的數(shù)據(jù)到prometheus;由于這類工作的存在時(shí)間不夠長,所以需要他們主動(dòng)將數(shù)據(jù)推送到pushgateway,然后由pushgateway將數(shù)據(jù)發(fā)送的prometheus。總結(jié):類似于zabbix proxy
  • alertmanager:實(shí)現(xiàn)prometheus的告警功能。

prometheus 直接或通過pushgateway抓取數(shù)據(jù)。將數(shù)據(jù)存儲(chǔ)在本地,并對(duì)這些數(shù)據(jù)運(yùn)行規(guī)則,以便從現(xiàn)有數(shù)據(jù)聚合和記錄新時(shí)間序列,或者生成警報(bào)。然后利用 grafana 等工具可視化數(shù)據(jù)。

Prometheus 適合做什么

Prometheus適用于錄制任何純數(shù)字時(shí)間序列。它適用于以機(jī)器為中心的監(jiān)控以及高度動(dòng)態(tài)的面向服務(wù)架構(gòu)的監(jiān)控。在微服務(wù)的世界中,它對(duì)多維數(shù)據(jù)收集和查詢的支持是一種特殊的優(yōu)勢。

Prometheus專為提高可靠性而設(shè)計(jì),是您在停電期間可以快速診斷問題的系統(tǒng)。每個(gè)Prometheus服務(wù)器都是獨(dú)立的,不依賴于網(wǎng)絡(luò)存儲(chǔ)或其他遠(yuǎn)程服務(wù)。當(dāng)基礎(chǔ)架構(gòu)的其他部分損壞時(shí),您可以依賴它,并且您不需要設(shè)置大量的基礎(chǔ)架構(gòu)來使用它。

Prometheus 不適合做什么

雖然 Prometheus 是一個(gè)全面的監(jiān)控解決方案,但它不適合某些角色。Prometheus 的設(shè)計(jì)以可靠性和性能為核心原則。這會(huì)導(dǎo)致衡量指標(biāo)準(zhǔn)確性的權(quán)衡。

Prometheus 不保證收集到的數(shù)據(jù)是 100% 準(zhǔn)確的。它適用于偶爾丟失的事件不會(huì)影響全局的高容量場景。如果您正在跟蹤需要正確的敏感統(tǒng)計(jì)數(shù)據(jù),您應(yīng)該使用其他平臺(tái)來處理這些指標(biāo)。對(duì)于系統(tǒng)中不太重要的值,您仍然可以采用 Prometheus。

此外,Prometheus 可能不是您想要的監(jiān)控堆棧中的唯一組件。它專注于存儲(chǔ)和查詢您的事件,主要使用 HTTP API。內(nèi)置的 Web UI 提供基本的繪圖功能,但不支持高級(jí)自定義儀表板。數(shù)據(jù)可視化場景通常通過部署一個(gè)Grafana實(shí)例來處理;這通過內(nèi)置的Prometheus 集成提供儀表板和指標(biāo)分析功能。

**注:以上內(nèi)容參考 **prometheus官網(wǎng)

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

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

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