Wenn Sie Terraform verwenden, können Sie Benachrichtigungen für Dienststatusereignisse einrichten, die in „Personalized Service Health“ angezeigt werden. In diesem Dokument wird beschrieben, wie das geht.
Hinweis
In Ihrer Terraform-Konfiguration muss ein Benachrichtigungskanal definiert sein.
Weitere Informationen finden Sie in der Dokumentation zur Ressource google_monitoring_notification_channel
.
Konfigurationsbeispiel
In der folgenden Beispiel-Terraform-Konfiguration werden Personalized Service Health und Benachrichtigungen für alle neuen Vorfälle und alle Updates aktiviert.
provider "google" {
project = "PROJECT_ID"
}
resource "google_project_service" "project" {
service = "servicehealth.googleapis.com"
}
resource "google_monitoring_alert_policy" "alert_policy_all" {
display_name = "All incidents, all updates"
combiner = "OR"
enabled = "true"
conditions {
display_name = "test condition"
condition_matched_log {
filter = "resource.type = \"servicehealth.googleapis.com/Event\" AND jsonPayload.category = \"INCIDENT\" AND jsonPayload.@type = \"type.googleapis.com/google.cloud.servicehealth.logging.v1.EventLog\""
label_extractors = {
state = "EXTRACT(jsonPayload.state)"
description = "EXTRACT(jsonPayload.description)"
impactedProducts = "EXTRACT(jsonPayload.impactedProducts)"
startTime = "EXTRACT(jsonPayload.startTime)"
title = "EXTRACT(jsonPayload.title)"
impactedLocations = "EXTRACT(jsonPayload.impactedLocations)"
}
}
}
documentation {
content = "### $${log.extracted_label.title}\nCheck out [Personalized Service Health dashboard](https://console.cloud.google.com/servicehealth/incidentDetails/projects%2F${resource.labels.resource_container}%2Flocations%2F${resource.labels.location}%2Fevents%2F${resource.labels.event_id}?project=${resource.labels.resource_container}) for more details.<br><br> Description: $${log.extracted_label.description}<br><br> Impacted products: $${log.extracted_label.impactedProducts}<br><br> Impacted locations: $${log.extracted_label.impactedLocations}<br><br> Incident start time: $${log.extracted_label.startTime}<br><br> State: $${log.extracted_label.state}"
mime_type = "text/markdown"
}
alert_strategy {
notification_rate_limit {
period = "300s"
}
}
notification_channels = ["projects/PROJECT_ID/notificationChannels/NOTIFICATION_CHANNEL"]
user_labels = { # Add any extra labels that might be helpful
scope = "all"
}
}
Der Dienst servicehealth.googleapis.com
bezieht sich auf Personalized Service Health und der Filter ruft alle Ereignisse ab. Eine Liste der Felder, die Sie festlegen können, finden Sie in der Referenz zur Service Health API.
Die vorherige Konfiguration entspricht der Auswahl der Option Alle Vorfälle, alle Updates beim Einrichten einer Benachrichtigung im Dashboard zur Dienstbereitschaft.
Weitere Informationen zu den Feldern, die Sie in der Benachrichtigungsrichtlinie festlegen können, finden Sie auf den folgenden Seiten:
Dokumentation für die Ressource
google_monitoring_alert_policy
Beispielbedingungen für Benachrichtigungen, die Sie dem Feld
filter
Ihrer Terraform-Konfiguration hinzufügen und definieren können, wann die Benachrichtigung ausgelöst wird.