這個圖展示的是Prometheus監控系統的核心架構,各組件功能如下:

1. 數據採集相關組件

  • Short-lived jobs(短生命週期任務): 臨時運行的任務(如定時腳本),無法被Prometheus主動拉取數據,會在任務結束時通過push metrics將指標推送到Pushgateway。
  • Pushgateway: 接收短生命週期任務推送的指標,作為“中轉站”供Prometheus拉取數據(解決短任務無法被持續拉取的問題)。
  • Jobs/exporters(任務/ exporters): 長期運行的服務(如服務器、數據庫),通過exporters(如Node Exporter、MySQL Exporter)暴露指標接口,作為Prometheus的targets(被拉取對象)。

2. 服務發現組件(Service discovery)

  • kubernetes / file_sd: 自動發現待監控的targets(避免手動配置)。例如通過Kubernetes API發現集羣內的Pod/服務,或通過配置文件(file_sd)定義靜態targets。

3. Prometheus核心(Prometheus server)

  • Retrieval: 從targets(或Pushgateway)拉取指標數據。
  • TSDB: 時序數據庫(Time Series Database),存儲拉取到的指標數據(默認存在本地HDD/SSD)。
  • HTTP server: 提供HTTP接口,支持PromQL查詢、接收外部請求。

4. 告警組件(Prometheus alerting)

  • Alertmanager: 接收Prometheus server推送的告警,負責告警去重、分組、抑制、路由,最終通過PagerDuty、Email等渠道通知用户。

5. 數據可視化/導出組件(Data visualization and export)

  • Prometheus web UI: Prometheus自帶的簡易UI,支持用PromQL查詢指標。
  • Grafana: 第三方可視化工具,通過PromQL對接Prometheus,生成更豐富的監控儀表盤。
  • API clients: 自定義程序通過API調用Prometheus數據,實現二次開發(如自定義報表)。

要不要我幫你整理一份各組件交互流程的簡化清單