這個圖展示的是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數據,實現二次開發(如自定義報表)。
要不要我幫你整理一份各組件交互流程的簡化清單?