Configure alertas no Terraform

Se estiver a usar o Terraform, pode configurar alertas para eventos de estado de funcionamento do serviço que aparecem no Personalized Service Health. Este documento explica como.

Antes de começar

  1. Ative a API Service Health para o projeto para o qual quer criar alertas.
  2. Ter um canal de notificação definido na sua configuração do Terraform. Para mais informações, consulte a documentação do recurso google_monitoring_notification_channel.

Exemplo de configuração

A seguinte configuração do Terraform de exemplo ativa o estado de saúde do serviço personalizado e os alertas para todos os novos incidentes e todas as atualizações.

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

O serviço servicehealth.googleapis.com refere-se ao Personalized Service Health e o filtro extrai todos os eventos. Consulte a referência da API Service Health para ver os campos que pode definir.

A configuração anterior é equivalente a escolher a opção Todos os incidentes, todas as atualizações em configurar um alerta no painel de controlo do estado do serviço.

Consulte as páginas seguintes para ver mais informações sobre os campos que pode definir na política de alerta: