Benachrichtigungsrichtlinie erstellen

Die Benachrichtigungsrichtlinien für die Brennrate Ihres Fehlerbudgets basieren auf dem Zeitachsenselektor select_slo_burn_rate, der unter SLO-Daten abrufen beschrieben wird. Es gibt noch weitere Zeitachsenselektoren, von denen Sie einige als Basis für Benachrichtigungsrichtlinien verwenden können. Eine Erläuterung der SLO-basierten Benachrichtigungsrichtlinien finden Sie unter Benachrichtigung über Ihre Brennrate.

Sie erstellen Benachrichtigungsrichtlinien mit der Methode alertPolicies.create. Eine Dokumentation zur allgemeinen Verwendung dieser Methode finden Sie unter Benachrichtigungsrichtlinien verwalten.

Die Benachrichtigungsrichtlinien für SLOs ähneln in vielerlei Hinsicht anderen Benachrichtigungsrichtlinien mit Messwertschwellen, unterscheiden sich jedoch in einer bestimmten Hinsicht. filter in der MetricThreshold-Spezifikation der Bedingung verwendet einen Zeitachsenselektor anstelle eines Messwertpaars und überwachter Ressourcentypen.

Bedingungen für SLO-basierte Benachrichtigungsrichtlinien

Eine Benachrichtigungsrichtlinie muss mindestens eine Bedingung aufweisen. Verwenden Sie für eine SLO-basierte Bedingung eine Bedingung vom Typ MetricThreshold.

Eine Bedingung mit Messwertschwellen kann zwei Paare von Zeitachsenkonfigurationen enthalten: filter und aggregations. Da SLO-Daten anders als andere Zeitachsendaten abgerufen werden, ist filter das einzige Feld, das in einer Bedingung für ein SLO verwendet werden kann.

Eine Bedingung für ein SLO legt die Felder comparison, thresholdValue, duration und trigger fest.

In diesem Beispiel wird eine Bedingung erstellt, gegen die verstoßen wird, wenn die Brennrate das Doppelte der normalen Rate überschreitet. Die Struktur sieht so aus:

  "conditions": [
    {
      "displayName":"SLO burn rate alert for ${SLO_ID} exceeds 2",
      "conditionThreshold": {
        "filter": DATA_RETRIEVAL_FILTER_FOR_SLO,
        "comparison":"COMPARISON_GT",
        "thresholdValue": 2,
        "duration": {
          "seconds":"0",
        },
      },
    }
  ],

Zum Festlegen des Feldes filter ist der Ressourcenname eines bestimmten SLO erforderlich. Dieser Wert hat die Form projects/${PROJECT}/services/${SERVICE_ID}/serviceLevelObjectives/${SLO_ID}. Informationen zur Suche nach der SLO-ID finden Sie in der SLO-Liste.

Verwenden Sie den Zeitachsenselektor select_slo_burn_rate, um eine Benachrichtigung für die Brennrate zu erstellen. Dieser Selektor verwendet zwei Werte: das Ziel-SLO und den Lookback-Zeitraum. Weitere Informationen finden Sie unter select_slo_burn_rate.

Der folgende Filter ermittelt beispielsweise die Brennrate des Ziel-SLO mit einem Lookback-Zeitraum von einer Stunde:

"filter":"select_slo_burn_rate(\"projects/${PROJECT}/services/${SERVICE_ID}/serviceLevelObjectives/${SLO_ID}\", \"60m\")"

Der Rest der Benachrichtigungsrichtlinie

Um die Benachrichtigungsrichtlinie fertigzustellen, geben Sie Werte für die verbleibenden Felder an:

  • displayName: Eine Beschreibung der Benachrichtigungsrichtlinie.
  • combiner: Beschreibt die Logik zum Kombinieren von Bedingungen. Diese Richtlinie hat nur eine Bedingung, daher funktioniert entweder AND oder OR.
  • notificationChannels: Ein Array vorhandener Benachrichtigungskanäle, die beim Auslösen der Benachrichtigungsrichtlinie verwendet werden sollen. Informationen zum Suchen und Erstellen von Benachrichtigungskanälen finden Sie unter Benachrichtigungskanäle.
  • documentation: Informationen, die gesendet werden, wenn die Bedingung verletzt wird, damit die Empfänger das Problem diagnostizieren können. Weitere Informationen finden Sie unter Documentation.

Benachrichtigungsrichtlinie erstellen

Im folgenden Beispiel wird die API verwendet, um eine Benachrichtigungsrichtlinie für die Brennrate zu erstellen. Informationen zum Auflisten, Ändern und Löschen von Benachrichtigungsrichtlinien finden Sie unter Benachrichtigungsrichtlinien mit der API verwalten.

Protokoll

Um die Benachrichtigungsrichtlinie mithilfe von curl zu erstellen, senden Sie eine POST-Nachricht an den https://monitoring.googleapis.com/v3/projects/${PROJECT_ID}/alertPolicies-Endpunkt und geben die Benachrichtigungsrichtlinie im Anfragetext an. Das JSON-Element im Anforderungstext beschreibt eine Benachrichtigungsrichtlinie, die eine Schwellenwertbedingung basierend auf dem Zeitachsenselektor select_slo_burn_rate mit einem Lookback-Zeitraum von 1 Stunde verwendet.

  1. Erstellen Sie eine Variable, die den Anfragetext enthält:

    CREATE_ALERT_POST_BODY=$(cat <<EOF
    {
      "displayName":"SLO burn-rate alert for ${SLO_ID} with a threshold of 2",
      "combiner":"AND",
      "conditions": [
        {
          "displayName":"SLO burn rate alert for ${SLO_ID} exceeds 2",
          "conditionThreshold": {
            "filter":"select_slo_burn_rate(\"projects/${PROJECT}/services/${SERVICE_ID}/serviceLevelObjectives/${SLO_ID}\", \"60m\")",
            "comparison":"COMPARISON_GT",
            "thresholdValue": 2,
            "duration": {
              "seconds":"0",
            },
          },
        }
      ],
      "notificationChannels": ["${NOTIFICATION_CHANNEL}", ],
      "documentation": {
         "content": "SLO burn for the past 60m exceeded twice the acceptable budget burn rate.",
         "mime_type": "text/markdown",
      },
    }
    EOF
    )
    
  2. Posten Sie die Anfrage an den Endpunkt:

    curl  --http1.1 --header "Authorization: Bearer ${ACCESS_TOKEN}" --header "Content-Type: application/json" -X POST -d "${CREATE_ALERT_POST_BODY}" https://monitoring.googleapis.com/v3/projects/${PROJECT_ID}/alertPolicies