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.
Antes de empezar
- Habilita la API Service Health en el proyecto para el que quieras crear alertas.
- 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
La siguiente configuración de Terraform habilita Personalized Service Health y las alertas de todos los incidentes y actualizaciones nuevos.
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 Service Health para ver los campos que puedes definir.
La configuración anterior equivale a elegir la opción Todos los incidentes, todas las actualizaciones al configurar una alerta en el panel de control Estado del servicio.
Consulta las siguientes páginas para obtener más información sobre los campos que puedes definir en la política de alertas:
Documentación del recurso
google_monitoring_alert_policy
.Ejemplos de condiciones de alerta que puedes añadir al campo
filter
de tu configuración de Terraform y definir cuándo se activa la alerta.