Service Level Indicator erstellen

Wenn Sie benutzerdefinierte Dienste erstellen, müssen Sie auch Service Level Objectives (SLOs) für diese erstellen. Es gibt keine vordefinierten SLOs für benutzerdefinierte Dienste.

Sie können auch benutzerdefinierte SLOs für automatisch erkannte Dienste erstellen. Dies ist jedoch weniger verbreitet.

SLOs basieren auf Messwerten, die zur Leistungsmessung herangezogen und als SLI-Indikatoren verwendet werden. Bei benutzerdefinierten SLOs müssen Sie die Messwerte identifizieren, die Sie in Ihren Service Level Indicators (SLIs) verwenden möchten.

Wenn Sie keine benutzerdefinierten SLOs erstellen, können Sie diese Seite überspringen.

Eigenschaften geeigneter Messwerttypen

Es gibt zwei Arten von SLOs, die Sie für Ihre Dienste erstellen können:

  • Anfragebasierte SLOs.
  • Zeitfenster-basierte SLOs.

SLOs basieren auf den als SLIs ausgewählten Messwerttypen. Die Werte in den Messwerttypen werden nach ihrer Beziehung zueinander klassifiziert. Diese Klassifizierung wird als Messwertart bezeichnet und es gibt drei mögliche Werte: GAUGE, DELTA, und CUMULATIVE. Weitere Informationen finden Sie unter MetricKind.

Bei anfragebasierten SLOs stellt Ihr SLI das Verhältnis erfolgreicher Anfragen zur Gesamtzahl der Anfragen dar. Der Messwerttyp Ihres SLI muss DELTA oder CUMULATIVE sein. Sie können GAUGE-Messwerte nicht in anfragebasierten SLOs verwenden.

Bei Windows-basierten SLOs repräsentiert Ihr SLI die Anzahl der erfolgreichen Ergebnisse in einem bestimmten Zeitraum. Die zulässigen Messwerttypen hängen von der Struktur der SLIs ab. Weitere Informationen finden Sie unter Strukturen für Windows-basierte SLIs.

Weitere Informationen über die Arten von SLOs finden Sie unter Konzepte im Service Monitoring.

Sie können von Cloud Monitoring bereitgestellte Messwerttypen oder von Ihnen erstellte benutzerdefinierte Messwerttypen verwenden. In beiden Fällen eignen sich die Werte für den zu erstellenden SLI.

Nicht geeignete Messwerttypen

Vermeiden Sie für SLIs Messwerttypen mit hoher Kardinalität. Die Kardinalität beschreibt die Anzahl der möglichen Zeitachsen, die dem Messwerttyp zugeordnet werden können, und bezieht sich auf den Detailgrad der Werte, die Messwertlabels annehmen können. Eine Erläuterung der Kardinalität finden Sie unter Kardinalität: Zeitachsen und Labels.

Messwerttypen mit Labels mit Werten wie Zeitstempel haben in der Regel eine sehr hohe Kardinalität und sind für die Verwendung als SLIs wenig geeignet. Messwerte mit hoher Kardinalität sind häufig benutzerdefinierte Messwerte, die nicht entwickelt wurden, um Kardinalitätsprobleme zu vermeiden. Dazu können benutzerdefinierte logbasierte Messwerte und benutzerdefinierte Messwerte gehören.

Nach geeigneten Messwerttypen suchen

Die Informationen zu Messwerttypen, einschließlich des Messwerttyps, finden Sie an mehreren Stellen:

  • Die in Tools wie dem Messwert-Explorer verwendete Messwertauswahl zeigt eine Kurzinfo für den markierten Messwerttyp an. Dieses Tool eignet sich für benutzerdefinierte und integrierte Messwerte.

    Der folgende Screenshot zeigt beispielsweise die Kurzinfo für den Messwerttyp loadbalancing.googleapis.com/https/request_count in Metrics Explorer:

    Ein Load-Balancing-Messwert in Metrics Explorer mit Kurzinfo über die Messwertart.

    Mit Metrics Explorer können Sie den Messwert auch so konfigurieren, dass er dem Verhalten der SLO API entspricht. Für eine solche Konfiguration lässt sich eine JSON-Darstellung abrufen. Dies ist hilfreich beim manuellen Erstellen eines SLI.

  • Die Seiten in der Messwertliste enthalten Tabellen für jeden Dienst, in denen die den Diensten zugeordneten Messwerttypen detailliert beschrieben sind. Diese Tabellen enthalten alle integrierten Messwerttypen, aber keine benutzerdefinierten Messwerttypen.

    Der folgende Screenshot zeigt beispielsweise den Eintrag für den Messwerttyp loadbalancing.googleapis.com/https/request_count, wie in der Liste der Load-Balancing-Messwerte zu sehen. Diese Einträge bieten häufig mehr Details als die Kurzinfo in Metrics Explorer.

    Ein Load-Balancing-Messwert in der Referenztabelle.

SLI erstellen

Für die Dienstüberwachung werden Messwertdaten auf bestimmte Weise verarbeitet, die Sie in Metrics Explorer replizieren können. Auf dieser Seite wird davon ausgegangen, dass Sie mit der Verwendung von Metrics Explorer vertraut sind. Weitere Informationen finden Sie unter Metrics Explorer.

Zum Erstellen eines anfragebasierten SLI auf Basis eines Zeitachsenverhältnisses benötigen Sie zwei Zeitachsen: eine, die alle Anfragen darstellt, und eine, die erfolgreiche (oder fehlerhafte) Anfragen darstellt. Diese Art von SLI hat die folgende Struktur:

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

So rufen Sie den Wert für das Feld goodServiceFilter ab:

  1. Wählen Sie den Typ der überwachten Ressource und den Messwerttyp aus. Der Messwert muss DELTA oder CUMULATIVE sein. Das Ergebnis kann viele verschiedene Zeitachsen enthalten.

    Wählen Sie beispielsweise den Ressourcentyp http_lb_rule und den Messwerttyp loadbalancing.googleapis.com/https/request_count aus.

  2. Verwenden Sie das Feld Filter, um das Label response_code_class auf 200 festzulegen. Dieser Filter entfernt alle Zeitachsen mit anderen Werten für dieses Label. Es kann immer noch mehrere übereinstimmende Zeitachsen geben.

  3. Wählen Sie den Aggregator sum aus, um eine einzelne Zeitreihe zu erstellen. Das Diagramm auf der Seite Metrics Explorer zeigt die resultierende Zeitreihe an.

  4. Klicken Sie auf Weitere Optionen über dem Diagramm und wählen Sie Als JSON anzeigen aus dem Menü aus.

    Der JSON-Antwortcode sieht ungefähr so aus:

    "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"
      }
    ],
    

Sie interessieren sich für den Wert des Feldes filter, das in das dataSets-Objekt eingebettet ist:

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

So erstellen Sie die SLI-Struktur:

  1. Fügen Sie diesen Wert als Wert des Feldes goodServiceFilter in die SLI-Struktur ein.

  2. Fügen Sie diesen Wert auch als Wert des totalServiceFilter in die SLI-Struktur ein. Entfernen Sie dann aber den Label-Teil des Filters metric.label.\"response_code_class\"=\"200\".

Daraus ergibt sich der folgende Service Level Indicator:

  "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"",
    }
  }

Sie können diesen SLI anschließend z. B. in ein SLO einfügen:

{
   "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"
}

Mit diesem JSON-Code können Sie ein SLO erstellen, wie unter SLO erstellen beschrieben.