建立服務水準指標

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

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

服務水準目標是以評估效能的指標為基礎,並做為服務水準指標 (SLI)。如果是自訂服務等級目標,您必須指明要在服務水準指標 (SLI) 中使用的指標。

如果您並未建立自訂 SLO,可以略過這個頁面。

合適指標類型的特徵

您可以為服務建立下列兩種 SLO:

  • 以要求為準的服務等級目標。
  • 時間範圍式服務等級目標。

服務等級目標是根據您選擇做為服務等級指標的指標類型而定。指標類型中的值會根據彼此的關聯性分類。這項分類稱為「指標種類」,可能的值有三種: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 中的負載平衡指標,懸浮資訊卡顯示指標類型。

    您也可以使用指標探索工具設定指標,模擬 SLO API 的運作方式,並取得該設定的 JSON 表示法。這個 JSON 可用於手動建立 SLI。

  • 「指標清單」頁面包含各項服務的表格,詳細列出與服務相關聯的指標類型。這些表格包含所有內建指標類型,但不顯示自訂指標類型。

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

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

建構 SLI

服務監控會以特定方式處理指標資料,您可以在 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. 使用「篩選器」欄位,將標籤 response_code_class 設為 200。 這個篩選器會移除含有這個標籤其他值的任何時間序列。但仍可能有多個相符的時間序列。

  3. 選擇 sum 匯總工具,建立單一時間序列。「指標探索器」頁面上的圖表會顯示產生的時間序列。

  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 插入 SLO,例如:

{
   "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」。