Настройка уведомлений об алертах с помощью Terraform

Конфигурации уведомлений об алертах в Knowledge Graph позволяют управлять тем, как алерты обрабатываются и маршрутизируются. Вы можете указать метки соответствия для фильтрации алертов, добавлять пользовательские метки, задавать требования к длительности и управлять отключением уведомлений.

Сведения о настройке уведомлений об алертах в интерфейсе Knowledge Graph см. в разделе Configure notifications.

Базовая настройка уведомлений об алертах

Создайте файл с именем alert-configs.tf и добавьте следующее:

terraform
# Basic alert configuration with silencing
resource "grafana_asserts_notification_alerts_config" "prometheus_remote_storage_failures" {
  provider = grafana.asserts

  name = "PrometheusRemoteStorageFailures"

  match_labels = {
    alertname   = "PrometheusRemoteStorageFailures"
    alertgroup  = "prometheus.alerts"
    asserts_env = "prod"
  }

  silenced = true
}

# High severity alert with specific job and context matching
resource "grafana_asserts_notification_alerts_config" "error_buildup_notify" {
  provider = grafana.asserts

  name = "ErrorBuildupNotify"

  match_labels = {
    alertname               = "ErrorBuildup"
    job                     = "acai"
    asserts_request_type    = "inbound"
    asserts_request_context = "/auth"
  }

  silenced = false
}

Уведомления об алертах с дополнительными метками и длительностью

Настройте алерты с пользовательскими метками и требованиями ко времени:

terraform
# Alert with additional labels and custom duration
resource "grafana_asserts_notification_alerts_config" "payment_test_alert" {
  provider = grafana.asserts

  name = "PaymentTestAlert"

  match_labels = {
    alertname         = "PaymentTestAlert"
    additional_labels = "asserts_severity=~\"critical\""
    alertgroup        = "alex-k8s-integration-test.alerts"
  }

  alert_labels = {
    testing = "onetwothree"
  }

  duration = "5m"
  silenced = false
}

Уведомления об алертах по задержкам и производительности

Отслеживайте проблемы с задержками и производительностью и оповещайте о них:

terraform
# Latency alert for shipping service
resource "grafana_asserts_notification_alerts_config" "high_shipping_latency" {
  provider = grafana.asserts

  name = "high shipping latency"

  match_labels = {
    alertname            = "LatencyP99ErrorBuildup"
    job                  = "shipping"
    asserts_request_type = "inbound"
  }

  silenced = false
}

# CPU throttling alert with warning severity
resource "grafana_asserts_notification_alerts_config" "cpu_throttling_sustained" {
  provider = grafana.asserts

  name = "CPUThrottlingSustained"

  match_labels = {
    alertname         = "CPUThrottlingSustained"
    additional_labels = "asserts_severity=~\"warning\""
  }

  silenced = true
}

Уведомления об алертах для инфраструктуры и сервисов

Настройте алерты для инфраструктурных компонентов и сервисов:

terraform
# Ingress error rate alert
resource "grafana_asserts_notification_alerts_config" "ingress_error" {
  provider = grafana.asserts

  name = "ingress error"

  match_labels = {
    alertname            = "ErrorRatioBreach"
    job                  = "ingress-nginx-controller-metrics"
    asserts_request_type = "inbound"
  }

  silenced = false
}

# MySQL Galera cluster alert
resource "grafana_asserts_notification_alerts_config" "mysql_galera_not_ready" {
  provider = grafana.asserts

  name = "MySQLGaleraNotReady"

  match_labels = {
    alertname = "MySQLGaleraNotReady"
  }

  silenced = false
}

Справочник по ресурсам

grafana_asserts_notification_alerts_config

Управление конфигурациями уведомлений об алертах Knowledge Graph через API Grafana.

Аргументы

Имя Тип Обязательный Описание
name string Да Имя конфигурации уведомлений об алертах. Это поле неизменяемо и при изменении приводит к пересозданию ресурса.
match_labels map(string) Нет Метки для сопоставления в этой конфигурации уведомлений об алертах. Используются для фильтрации алертов, к которым применяется конфигурация.
alert_labels map(string) Нет Метки, добавляемые к алертам, созданным этой конфигурацией уведомлений об алертах.
duration string Нет Длительность, в течение которой условие должно сохраняться до срабатывания (например, ‘5m’, ’30s’). Соответствует параметру ‘for’ в API Knowledge Graph.
silenced bool Нет Отключена ли эта конфигурация уведомлений об алертах. По умолчанию false.

Пример

terraform
resource "grafana_asserts_notification_alerts_config" "example" {
  provider = grafana.asserts

  name = "ExampleAlert"

  match_labels = {
    alertname = "HighCPUUsage"
    job       = "monitoring"
  }

  alert_labels = {
    severity = "warning"
    team     = "platform"
  }

  duration = "5m"
  silenced = false
}

Рекомендации

При управлении уведомлениями об алертах с помощью Terraform учитывайте следующие рекомендации.

Управление метками

  • Используйте конкретные и осмысленные метки в match_labels, чтобы обеспечить точную фильтрацию алертов
  • Используйте существующие соглашения о метках из вашей системы мониторинга
  • Рассмотрите использование меток asserts_env и asserts_site для конфигураций с несколькими средами

Стратегия отключения уведомлений

  • Используйте параметр silenced для временного подавления вместо удаления конфигураций уведомлений об алертах
  • Документируйте причину отключения в комментариях к вашей конфигурации Terraform
  • Регулярно проверяйте отключённые конфигурации, чтобы убедиться, что они всё ещё нужны

Настройка длительности

  • Устанавливайте подходящие значения длительности исходя из ваших требований к алертам
  • Учитывайте природу отслеживаемого условия при выборе длительности
  • Используйте согласованные форматы длительности для однотипных алертов

Проверка

После применения конфигурации Terraform убедитесь, что:

  • Конфигурации уведомлений об алертах созданы в вашем экземпляре Knowledge Graph
  • Конфигурации отображаются в интерфейсе Knowledge Graph в разделе Observability > Rules > Notify
  • Метки соответствия корректно фильтруют нужные алерты
  • Пользовательские метки правильно применяются к созданным алертам

Связанная документация