使用 Prometheus 指標

本頁面說明如何在 Cloud Monitoring 中使用 Prometheus 指標,取得可用性和延遲時間服務等級指標 (SLI),並使用這些指標建立服務等級目標 (SLO)。

Prometheus 基本概念

Prometheus 是領先業界的開放原始碼監控解決方案,可監控指標和發出快訊。

Prometheus 支援具有指標鍵/值 ID 的維度資料,提供 PromQL 查詢語言,並透過為其他產品提供匯出工具,支援許多整合功能。

如要開始搭配使用 Prometheus 與 Monitoring,建議使用 Google Cloud Managed Service for Prometheus

指標

Prometheus 支援下列類型的指標:

  • 計數器:單一值,只能單調遞增或在重新啟動時重設為 0。
  • 量表:可任意設定的單一數值。
  • 直方圖:一組可設定的值區,用於取樣觀察結果並記錄範圍內的值;也會提供所有觀察到的值總和
  • 摘要:與直方圖類似,但也會計算可設定的分位數,並以滑動時間視窗為準。

詳情請參閱指標類型

建立 SLI 的指標

如果應用程式會發出 Prometheus 指標,您就可以將這些指標用於 SLI。

  • 如要取得要求和錯誤計數的可用性 SLI,可以從 Prometheus 計數器指標著手。
  • 如為延遲 SLI,可以使用 Prometheus 直方圖或摘要指標。

如要使用 Google Cloud Managed Service for Prometheus 收集 Prometheus 指標,請參閱代管自行部署指標收集作業的設定說明文件。

在 Google Cloud 控制台中建立 SLO 時,預設的可用性和延遲 SLO 類型不會包含 Prometheus 指標。如要使用 Prometheus 指標,請建立自訂 SLO,然後為 SLI 選擇 Prometheus 指標。

Prometheus 指標開頭為 prometheus.googleapis.com/

GKE 指標

Google Cloud Managed Service for Prometheus 會預設啟用 GKE 的指標代管收集作業。如果您在 GKE 環境中執行,且該環境預設未啟用代管收集功能,可以手動啟用代管收集功能。啟用代管收集功能後,叢集內元件會開始運作,但系統不會產生指標,直到您部署會擷取有效指標端點的 PodMonitoring 資源,或是啟用其中一個代管指標套件為止。

控制層指標套件包含可做為系統健康狀態指標的實用指標。啟用控制層指標的收集作業,即可將這些指標用於可用性、延遲時間和其他 SLI。

  • 使用 API 伺服器指標追蹤 API 伺服器負載、傳回錯誤的 API 伺服器要求比例,以及 API 伺服器收到的要求回應延遲時間。
  • 如果待處理 Pod 的資源不足,請使用排程器指標主動解決排程問題。

可用性 SLI 的指標

您可以在 Cloud Monitoring API 中使用 TimeSeriesRatio 結構,將「良好」或「不良」要求與總要求數的比率設為要求型可用性 SLI。這個比例會用於 RequestBasedSli 結構體的 goodTotalRatio 欄位。

應用程式必須發出 Prometheus 指標,才能建構這個比率。應用程式必須發出至少兩項下列項目:

  1. 計算事件總數的指標;請在比率的totalServiceFilter中使用這項指標。

    您可以針對每個事件使用遞增的 Prometheus 計數器。

  2. 計算「不良」事件的指標,請在比率中使用這項指標。 badServiceFilter

    您可以針對每個錯誤或其他「不良」事件,使用遞增的 Prometheus 計數器。

  3. 這項指標會計算「良好」事件,可用於比率的分子。goodServiceFilter

    您可以針對每個成功或其他「良好」的事件,使用遞增的 Prometheus 計數器。

延遲 SLI 的指標

您可以在 Cloud Monitoring API 中建立 DistributionCut 結構,表示以要求為基礎的延遲時間 SLI。這個結構會用於 RequestBasedSli 結構的 distributionCut 欄位。

應用程式必須發出可用於建構分配比例值的 Prometheus 指標。您可以為此使用 Prometheus 直方圖或摘要。如要瞭解如何定義 bucket,準確評估回應是否符合 SLO,請參閱 Prometheus 說明文件中的「指標類型」。

範例

下列 JSON 範例使用 GKE 控制層指標 prometheus.googleapis.com/apiserver_request_duration_seconds 指標,為服務建立延遲 SLO。服務等級目標規定,在一個月內,98% 的回應延遲時間必須少於 50 秒。

{
 "displayName": "98% Calendar month - Request Duration Under 50s",
 "goal": 0.98,
 "calendarPeriod": "MONTH",
 "serviceLevelIndicator": {
   "requestBased": {
     "distributionCut": {
       "distributionFilter": "metric.type=\"prometheus.googleapis.com/apiserver_request_duration_seconds/histogram\" resource.type=\"prometheus_target\"",
       "range": {
         "min": "-Infinity",
         "max": 50
       }
     }
   }
 }
}

後續步驟