Benachrichtigungen in Terraform konfigurieren

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: