天天看點

#yyds幹貨盤點#Prometheus 之架構及資料模型

Prometheus 專注于現在正在發生的事情,而不是追蹤數周或數月前的資料。它基于這樣一個前提,即大多數監控查詢和警報都是從最近的(通常是一天内的)資料中生成的。

Prometheus 通過抓取或拉取應用程式中暴露的時間序列資料來工作。時間序列資料通常由應用程式本身通過用戶端庫或稱為 exporter(導出器)的代理來作為 HTTP 端點暴露。Prometheus 還有一個推送網關(push gateway),可用于接收少量資料——例如,來自無法拉取的目标資料(如臨時作業或者防火牆後面的目标)。

Prometheus 架構

#yyds幹貨盤點#Prometheus 之架構及資料模型

Prometheus 稱其可以抓取的名額來源為端點(endpoint)。端點通常對應單個程序、主機、服務或應用程式。為了抓取端點資料,Prometheus 定義了名為目标(target)的配置。生成的時間序列資料将被收集并存儲在 Prometheus 伺服器本地,也可以設定從伺服器發送資料到外部存儲器或其他時間序列資料庫。

Prometheus 伺服器沒有内置警報工具,而是将警報從 Prometheus 伺服器推送到名為 Alertmanager(警報管理器)的單獨伺服器。Alertmanager 可以管理、整合和分發各種警報到不同目的地——例如,它可以在發出警報時發送電子郵件,并能夠防止重複發送。

備援和高可用性側重彈性而非資料持久性。Prometheus 團隊建議将 Prometheus 伺服器部署到特定環境和團隊,而不是僅部署一個單體 Prometheus 伺服器。如果你确實要部署高可用 HA 模式,則可以使用兩個或多個配置相同的 Prometheus 伺服器來收集時間序列資料,并且所有生成的警報都由可消除重複警報的高可用 Alertmanager 叢集來處理。

Prometheus 備援架構

#yyds幹貨盤點#Prometheus 之架構及資料模型

标簽共有兩大類:插樁标簽(instrumentation label)和目标标簽(targetlabel)。插樁标簽來自被監控的資源——例如,對于與 HTTP 相關的時間序列,标簽可能會顯示所使用的特定 HTTP 動詞。這些标簽在由諸如用戶端或 exporter 抓取之前會被添加到時間序列中。目标标簽更多地與架構相關——它們可能會識别時間序列所在的資料中心。目标标簽由 Prometheus 在抓取期間和之後添加。

時間序列的真實值是采樣(sample)的結果,它包括兩部分:一個 float64 類型的數值和一個毫秒精度的時間戳。

Prometheus 及其元件不提供任何伺服器端的身份驗證、授權或加密。如果你在一個更加安全的環境中工作,則需要自己實施安全控制——例如,通過反向代理通路 Prometheus 伺服器或者正向代理 exporter。

Prometheus 官網:​​https://prometheus.io/​​。

繼續閱讀