Si vous utilisez Terraform, vous pouvez configurer des alertes pour les événements d'état des services qui s'affichent dans Personalized Service Health. Ce document explique comment procéder.
Avant de commencer
Vous devez définir un canal de notification dans votre configuration Terraform.
Pour en savoir plus, consultez la documentation de la ressource google_monitoring_notification_channel
.
Exemple de configuration
L'exemple de configuration Terraform suivant active Personalized Service Health et les alertes pour tous les nouveaux incidents et toutes les mises à jour.
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"
}
}
Le service servicehealth.googleapis.com
fait référence à Personalized Service Health, et le filtre extrait tous les événements. Consultez la documentation de référence de l'API Service Health pour connaître les champs que vous pouvez définir.
La configuration précédente équivaut à choisir l'option Tous les incidents, toutes les mises à jour lors de la configuration d'une alerte dans le tableau de bord "État du service".
Pour en savoir plus sur les champs que vous pouvez définir dans la règle d'alerte, consultez les pages suivantes:
Documentation sur la ressource
google_monitoring_alert_policy
.Exemples de conditions d'alerte que vous pouvez ajouter au champ
filter
de votre configuration Terraform et définir le moment où l'alerte se déclenche.