Mengonfigurasi pemberitahuan di Terraform

Jika menggunakan Terraform, Anda dapat menyiapkan pemberitahuan untuk peristiwa kondisi layanan yang muncul di Personalized Service Health. Dokumen ini menjelaskan caranya.

Sebelum memulai

Anda harus memiliki saluran notifikasi yang ditentukan dalam konfigurasi Terraform. Untuk mengetahui informasi selengkapnya, lihat dokumentasi untuk resource google_monitoring_notification_channel.

Contoh konfigurasi

Contoh konfigurasi Terraform berikut mengaktifkan Status Layanan yang Dipersonalisasi dan pemberitahuan untuk semua insiden baru dan semua update.

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

Layanan servicehealth.googleapis.com mengacu pada Personalized Service Health, dan filter menarik semua peristiwa. Lihat Referensi Service Health API untuk mengetahui kolom yang dapat Anda tetapkan.

Konfigurasi sebelumnya setara dengan memilih opsi Semua insiden, semua update dalam menyiapkan pemberitahuan dalam dasbor Status Layanan.

Lihat halaman berikut untuk mengetahui informasi selengkapnya tentang kolom yang dapat Anda tetapkan dalam kebijakan pemberitahuan: