文章目錄
0.架構
Prometheus 工作流程:
- 1.Prometheus Server 定期從配置好的Jobs/exporters
Pull
metrics,或者監控數據先推送到 Push Gateway 上,然後再由 Prometheus Server 端採集Pull
metrics,或者從其他的 Prometheus server 中Pull
metrics。 - 2.Prometheus server 在本地存儲收集到的 metrics,並運行已定義好的 alert.rules,記錄新的時間序列或者向 Alertmanager 推送警報。
- 3.Alertmanager 根據配置文件,對接收到的警報進行處理,發出告警。
Prometheus Server:
核心部分,負責實現對監控數據(時間序列數據)的獲取(Pull)
,存儲(TSDB)
以及查詢(PromQL)
。 可以通過靜態配置管理
監控目標,也可以配合使用Service Discovery的方式動態管理
監控目標,並從這些監控目標中獲取數據。其次Prometheus Server需要對採集到的監控數據進行存儲,Prometheus Server本身就是一個時序數據庫,將採集到的監控數據按照時間序列的方式存儲在本地磁盤
當中。最後Prometheus Server對外提供了自定義的PromQL
語言,實現對數據的查詢以及分析。
Client Library:
客戶端庫,爲需要監控的服務生成相應的 metrics 並暴露給 Prometheus server。當 Prometheus server 來 pull 時,直接返回實時狀態的 metrics。
Push Gateway:
主要用於短期的 jobs
。由於這類 jobs 存在時間較短,可能在 Prometheus server 來 pull 之前就消失了。爲此,這些 jobs 可以直接向 Prometheus server 端推送它們的 metrics。
Exporters:
負責從目標處蒐集數據,並將其轉化爲Prometheus支持的格式,用於暴露已有的第三方服務的 metrics 給 Prometheus。Exporter將監控數據採集的端點通過HTTP服務的形式暴露給Prometheus Server,Prometheus Server通過訪問該Exporter提供的Endpoint端點,即可獲取到需要採集的監控數據。
Alertmanager:
從 Prometheus server 端接收到 alerts 後,會進行去除重複數據,分組,並路由到對方的接受方式,發出報警。常見的接收方式有:電子郵件,pagerduty 等。
WEB UI:
Prometheus Server內置的Express Browser UI,通過這個UI可以直接通過PromQL實現數據的查詢以及可視化。
Service Discovery:
服務發現,Prometheus支持多種服務發現機制:文件,DNS,Consul,Kubernetes,OpenStack,EC2等等。基於服務發現的過程並不複雜,通過第三方提供的接口,Prometheus查詢到需要監控的Target列表,然後輪訓這些Target獲取監控數據。
Discover targets:
發現目標
Notify:
通知,通告
Retrieval:
採樣模塊
TSDB:
存儲模塊默認本地存儲爲tsdb
HTTP Server:
提供http接口查詢和麪板,默認端口爲9090