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 entwederAND
oderOR
.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 unterDocumentation
.
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 voncurl
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.
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 )
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