Configurare gli avvisi in Terraform

Se utilizzi Terraform, puoi configurare avvisi per gli eventi relativi all'integrità del servizio che vengono visualizzati in Personalized Service Health. Questo documento spiega come.

Prima di iniziare

Devi avere un canale di notifica definito nella configurazione di Terraform. Per ulteriori informazioni, consulta la documentazione della risorsa google_monitoring_notification_channel.

Configurazione di esempio

Il seguente esempio di configurazione di Terraform attiva Personalized Service Health e gli avvisi per tutti i nuovi incidenti e tutti gli aggiornamenti.

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

Il servizio servicehealth.googleapis.com si riferisce a Personalized Service Health e il filtro estrae tutti gli eventi. Consulta la documentazione di riferimento dell'API Service Health per i campi che puoi impostare.

La configurazione precedente è equivalente alla scelta dell'opzione Tutti gli incidenti, tutti gli aggiornamenti durante la configurazione di un avviso nella dashboard Stato del servizio.

Per ulteriori informazioni sui campi che puoi impostare nel criterio di avviso, consulta le seguenti pagine: