Prometheus 概念摘要(從圖像筆記整理)
一句話
Prometheus 是用來收集、儲存、查詢與告警時間序列指標的開源系統,核心採 pull-based scrape。
1) 為什麼需要 Prometheus
- 早期監控常見問題:工具分散、查詢不一致、標準化不足。
- Prometheus 提供統一模型:
- 指標(metrics)
- 時間序列(time series)
- 查詢(PromQL)
- 告警(Alertmanager)
2) 核心工作方式
Pull-based(主流)
- Prometheus 週期性去目標服務抓取
/metrics(scrape)。 scrape_config決定抓誰、多久抓一次。
Push-based(例外)
- 針對短生命週期工作(如 batch job)可先推到 Pushgateway。
- 最終仍由 Prometheus 去抓 Pushgateway。
指標可被抓取的前提
- 指標格式符合 OpenMetrics / Prometheus exposition format。
- 可由 Prometheus 到達指定 endpoint。
3) 在 Kubernetes 的常見做法
- 常用 Prometheus Operator。
- 以
ServiceMonitor(CRD)宣告抓取目標。 - Operator 依
ServiceMonitor生成/更新 scrape 設定。
4) 常見架構選項
- Standalone Prometheus:小規模、單體部署。
- Federation:多個 Prometheus 分層聚合。
- Thanos:多實例聚合 + 長期儲存 + 全域查詢。
5) 生態系
- Prometheus:收集與查詢核心。
- Alertmanager:告警路由、抑制、分派(Slack/PagerDuty/Webhook)。
- Grafana:可視化儀表板。
- Exporters:把各系統暴露為 Prometheus 可抓格式。
- Thanos Ruler / Query:跨叢集規則與查詢(若採 Thanos)。
6) 告警流程
- Prometheus 規則判斷異常(如記憶體 > 80%)。
- Prometheus 送告警給 Alertmanager。
- Alertmanager 依路由/分組策略通知外部系統。
7) 常見 metric 類型
- Counter:單調遞增。
- Gauge:可升可降。
- Histogram:桶化分布(可算分位數)。
- Summary:流式分位數/總量統計。
8) 查詢與運維重點
- 常用函數:
rate,irate,sum,max,min。 - 高 cardinality 會拖垮查詢與成本。
- 用 relabel 設定控制 labels,避免無限維度膨脹。
9) 給 SRE 的實務結論
- 先定義 SLI/SLO,再反推要收的 metrics。
- 優先監控四訊號:延遲、流量、錯誤、飽和度。
- 從「能告警 + 能行動」的最小儀表板開始,不追求一次到位。