建立服務水準指標

如果您建立自訂服務,則必須為這些服務建立服務等級目標 (SLO)。自訂服務沒有預先定義的服務水準目標。

您也可以為自動偵測到的服務建立自訂 SLO,但這種做法較不常見。

服務水準目標是建立在評估效能的相關指標之上,並用來做為服務水準指標 (SLI)。針對自訂服務等級目標,您必須指明要在 SLI 中使用的指標。

如果您不打算建立自訂 SLO,可以略過本頁。

適合的指標類型特徵

您可以為服務建立兩種類型的 SLO:

  • 以要求為準的服務等級目標。
  • 以 Windows 為準的服務等級目標。

SLO 會根據您選擇做為 SLI 的指標類型,指標類型中的值會根據彼此的關係進行分類。這類分類稱為「指標類型」,有三個可能的值:GAUGEDELTA,CUMULATIVE。詳情請參閱 MetricKind

針對以要求為準的服務等級目標,服務水準指標代表良好要求與要求總數的比率。SLI 的指標類型必須是 DELTACUMULATIVE。您無法在依要求產生的 SLI 中使用 GAUGE 指標。

對於以時間範圍為依據的 SLO,SLI 代表特定期間內的良好結果數量。可接受的指標類型取決於您如何設定 SLI。不過,如果您使用以要求為準的 SLI,則 SLI 的指標類型必須為 DELTACUMULATIVE。您無法在依要求產生的 SLI 中使用 GAUGE 指標。詳情請參閱「以視窗為基礎的 SLI 結構」。

如要進一步瞭解 SLO 類型,請參閱「服務監控的概念」。

您可以使用 Cloud Monitoring 提供的指標類型,也可以使用您建立的自訂指標類型。無論是哪種情況,這些值都適合您要建立的 SLI。

不適合的指標類型

在考慮用於 SLI 的指標類型時,請避免使用高基數指標類型。基數描述可與指標類型相關聯的時間序列數量,這與指標標籤可採用的值精細程度有關。如要進一步瞭解基數,請參閱「基數:時間序列和標籤」一文。

指標類型如果含有使用時間戳記等值的標籤,很可能會出現非常高的基數,因此不適合用做 SLI。高基數指標通常是使用者定義的指標,並未設計用來避免基數問題。這些指標可能包括使用者定義的以記錄為基礎的指標自訂指標

找出合適的指標類型

指標類型 (包括指標種類) 的相關資訊可在多個位置找到:

  • Metrics Explorer 等工具中使用的指標選取器會針對醒目顯示的指標類型顯示懸浮資訊卡。這項工具適用於自訂和內建指標。

    舉例來說,下列螢幕截圖顯示指標類型 loadbalancing.googleapis.com/https/request_count 的懸浮資訊卡,如 Metrics Explorer 所示:

    Metrics Explorer 中的負載平衡指標,其中懸浮資訊卡顯示指標類型。

    您也可以使用「Metrics Explorer」設定指標,模擬 SLO API 的運作方式,並取得該設定的 JSON 表示法。這個 JSON 對手動建立 SLI 很有幫助。

  • 指標清單中的頁面包含各項服務的資料表,詳細說明與服務相關聯的指標類型。這些表格包含所有內建指標類型,但不會顯示自訂指標類型。

    舉例來說,下圖顯示指標類型 loadbalancing.googleapis.com/https/request_count 的項目,如同負載平衡指標清單所示。這些項目通常會提供比 Metrics Explorer 中懸停資訊卡更詳細的資訊。

    參考表格中的負載平衡指標。

建構服務等級指標

在服務監控方面,指標資料會以特定方式處理,您可以在 Metrics Explorer 中複製這類資料。本頁面假設您已熟悉如何使用 Metrics Explorer。如需更多資訊,請參閱「Metrics Explorer」。

如要根據時間序列比率建立以要求為準的 SLI,您需要兩個時間序列:一個代表所有要求,另一個代表良好 (或不良) 要求。這類 SLI 的結構如下:

  "requestBased": {
    "goodTotalRatio": {
      "totalServiceFilter": TO_BE_IDENTIFIED,
      "goodServiceFilter": TO_BE_IDENTIFIED,
    }
  }

如要取得 goodServiceFilter 欄位的值,請按照下列步驟操作:

  1. 選取要監控的資源類型和指標類型。請注意,指標類型必須是 DELTACUMULATIVE。結果可能包含許多不同的時間序列。

    例如,選取 http_lb_rule 資源類型和 loadbalancing.googleapis.com/https/request_count 指標類型。

  2. 使用「Filter」欄位,將標籤 response_code_class 設為 200。這個篩選器會移除標籤中含有其他值的任何時間序列。但仍可能有多個時間序列符合條件。

  3. 選擇 sum 匯集器來建立單一時間序列。「Metrics Explorer」頁面上的圖表會顯示產生的時間序列。

  4. 按一下圖表上方的「更多選項」,然後從選單中選取「以 JSON 格式查看」

    擷取的 JSON 如下所示:

    "dataSets": [
      {
        "timeSeriesFilter": {
          "filter": "metric.type="loadbalancing.googleapis.com/https/request_count" resource.type="http_lb_rule" metric.label."response_code_class"="200""
          "perSeriesAligner": "ALIGN_RATE",
          "crossSeriesReducer": "REDUCE_SUM",
          "secondaryCrossSeriesReducer": "REDUCE_NONE",
          "minAlignmentPeriod": "60s",
          "groupByFields": [],
          "unitOverride": "1"
        },
        "targetAxis": "Y1",
        "plotType": "LINE"
      }
    ],
    

您感興趣的部分是 dataSets 物件中嵌入的 filter 欄位值:

"filter": "metric.type="loadbalancing.googleapis.com/https/request_count" resource.type="http_lb_rule" metric.label."response_code_class"="200""

如要建構 SLI 結構,請按照下列步驟操作:

  1. 將這個值插入 SLI 結構體中,做為 goodServiceFilter 欄位的值。

  2. 並將這個值插入 SLI 結構中,做為 totalServiceFilter 的值,但請移除篩選器的標籤部分 metric.label.\"response_code_class\"=\"200\"

產生的服務水準指標如下:

  "requestBased": {
    "goodTotalRatio": {
      "totalServiceFilter": "metric.type="loadbalancing.googleapis.com/https/request_count" resource.type="http_lb_rule"",
      "goodServiceFilter": "metric.type="loadbalancing.googleapis.com/https/request_count" resource.type="http_lb_rule" metric.label."response_code_class"="200"",
    }
  }

接著,您可以將這個 SLI 插入服務等級目標,例如:

{
   "serviceLevelIndicator": {
      "requestBased": {
        "goodTotalRatio": {
          "totalServiceFilter": "metric.type="loadbalancing.googleapis.com/https/request_count" resource.type="http_lb_rule"",
          "goodServiceFilter": "metric.type="loadbalancing.googleapis.com/https/request_count" resource.type="http_lb_rule" metric.label."response_code_class"="200"",
        }
     }
   },
   "goal": 0.98,
   "calendarPeriod": "WEEK",
   "displayName": "98% Successful requests in a calendar week"
}

您可以使用這份 JSON 建立 SLO,詳情請參閱「建立 SLO」一文。