本頁將說明使用 Prometheus 指標在 Cloud Monitoring 中監控可用性和延遲時間 SLI 的基本概念,以及如何使用這些指標建立服務等級目標。
Prometheus 的基本概念
Prometheus 是一項開放原始碼監控解決方案,可用於監控指標和發出快訊。
Prometheus 支援以指標的鍵/值 ID 為基礎的維度資料,並提供 PromQL 查詢語言,以及為其他產品提供匯出工具,以支援多項整合。
如要開始搭配 Monitoring 使用 Prometheus,建議您使用 Google Cloud Managed Service for Prometheus。
指標
Prometheus 支援下列指標類型:
- 計數器:單一值,只能單調遞增,或在重新啟動時重設為 0。
- 量測儀:可任意設定的單一數值。
- 直方圖:一組可設定的值區,用於取樣觀察值並記錄值範圍;也會提供所有觀察值的總和
- 摘要:類似於直方圖,但也會在滑動時間視窗中計算可設定的分位數。
詳情請參閱「指標類型」。
建立 SLI 的指標
如果應用程式會發出 Prometheus 指標,您可以將這些指標用於 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 的指標
您可以在 Cloud Monitoring API 中,使用 TimeSeriesRatio
結構體,針對「良好」或「不良」要求與總要求的比率,表示以要求為依據的可用性 SLI。這個比率會用於 RequestBasedSli
結構體的 goodTotalRatio
欄位。
您的應用程式必須發出 Prometheus 指標,以便用於建立此比率。應用程式必須發出下列至少兩項資訊:
計算事件總數的指標;請在比率的
totalServiceFilter
中使用這項指標。您可以使用 Prometheus 計數器,每當事件發生時計數器就會遞增。
這項指標會計算「不良」事件,請在比率的
badServiceFilter
中使用這項指標。您可以使用 Prometheus 計數器,針對每個錯誤或其他「不良」事件遞增。
這項指標會計算「成功」事件,並在比率的
goodServiceFilter
中使用這項指標。您可以使用 Prometheus 計數器,針對每個成功或其他「良好」事件遞增。
延遲時間 SLI 的指標
您可以建立 DistributionCut
結構,在 Cloud Monitoring API 中表示以要求為基礎的延遲時間 SLI。這個結構體會用於 RequestBasedSli
結構體的 distributionCut
欄位。
應用程式必須發出 Prometheus 指標,以便用於建構分發切割值。您可以使用 Prometheus 直方圖或摘要來達成這項目的。如要判斷如何定義區塊,以便準確評估回應是否符合 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
}
}
}
}
}
後續步驟
- 建立服務水準目標
- 進一步瞭解 Google Cloud Managed Service for Prometheus。
- 進一步瞭解控制層指標。