Si usas Terraform, puedes configurar alertas para los eventos de estado del servicio que aparecen en Personalized Service Health. En este documento, se explica cómo hacerlo.
Antes de comenzar
Debes tener un canal de notificaciones definido en tu configuración de Terraform.
Para obtener más información, consulta la documentación del recurso google_monitoring_notification_channel
.
Configuración de ejemplo
En el siguiente ejemplo de configuración de Terraform, se habilita Personalized Service Health y las alertas para todos los incidentes nuevos y todas las actualizaciones.
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"
}
}
El servicio servicehealth.googleapis.com
hace referencia a Personalized Service Health, y el filtro extrae todos los eventos. Consulta la referencia de la API de Service Health para ver los campos que puedes configurar.
La configuración anterior equivale a elegir la opción Todos los incidentes, todas las actualizaciones cuando configuras una alerta en el panel de estado del servicio.
Consulta las siguientes páginas para obtener más información sobre los campos que puedes configurar en la política de alertas:
Documentación del recurso
google_monitoring_alert_policy
.Ejemplos de condiciones de alerta que puedes agregar al campo
filter
de tu configuración de Terraform y definir cuándo se activa la alerta.