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

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

Сведения о подавлении инсайтов в интерфейсе Knowledge Graph см. в разделе Suppress insights.

Базовая настройка подавленных проверок

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

terraform
# Basic suppressed alert configuration for maintenance
resource "grafana_asserts_suppressed_assertions_config" "maintenance_window" {
  provider = grafana.asserts

  name = "MaintenanceWindow"

  match_labels = {
    service     = "api-service"
    maintenance = "true"
  }
}

# Suppress specific alertname during deployment
resource "grafana_asserts_suppressed_assertions_config" "deployment_suppression" {
  provider = grafana.asserts

  name = "DeploymentSuppression"

  match_labels = {
    alertname = "HighLatency"
    job       = "web-service"
    env       = "staging"
  }
}

# Suppress alerts for specific test environment
resource "grafana_asserts_suppressed_assertions_config" "test_environment_suppression" {
  provider = grafana.asserts

  name = "TestEnvironmentSuppression"

  match_labels = {
    alertgroup  = "test.alerts"
    environment = "test"
  }
}

Конфигурации подавления для конкретных сервисов

Подавляйте алерты для отдельных сервисов во время обслуживания или операционных работ:

terraform
# Suppress alerts for specific services during maintenance
resource "grafana_asserts_suppressed_assertions_config" "api_service_maintenance" {
  provider = grafana.asserts

  name = "APIServiceMaintenance"

  match_labels = {
    service     = "api-gateway"
    job         = "api-gateway"
    maintenance = "scheduled"
  }
}

# Suppress database alerts during backup operations
resource "grafana_asserts_suppressed_assertions_config" "database_backup" {
  provider = grafana.asserts

  name = "DatabaseBackupSuppression"

  match_labels = {
    service     = "postgresql"
    job         = "postgres-exporter"
    backup_mode = "active"
  }
}

# Suppress monitoring system alerts during updates
resource "grafana_asserts_suppressed_assertions_config" "monitoring_update" {
  provider = grafana.asserts

  name = "MonitoringSystemUpdate"

  match_labels = {
    service = "prometheus"
    job     = "prometheus"
    update  = "in_progress"
  }
}

Подавление по среде и команде

Создавайте правила подавления на основе среды или команды:

terraform
# Suppress all alerts for development environment
resource "grafana_asserts_suppressed_assertions_config" "dev_environment" {
  provider = grafana.asserts

  name = "DevelopmentEnvironmentSuppression"

  match_labels = {
    environment = "development"
    team        = "platform"
  }
}

# Suppress alerts for specific team during their maintenance window
resource "grafana_asserts_suppressed_assertions_config" "team_maintenance" {
  provider = grafana.asserts

  name = "TeamMaintenanceWindow"

  match_labels = {
    team        = "backend"
    maintenance = "team_scheduled"
    timezone    = "UTC"
  }
}

# Suppress alerts for staging environment during testing
resource "grafana_asserts_suppressed_assertions_config" "staging_testing" {
  provider = grafana.asserts

  name = "StagingTestingSuppression"

  match_labels = {
    environment = "staging"
    testing     = "automated"
    job         = "integration-tests"
  }
}

Подавление по типу и важности алерта

Подавляйте алерты на основе их типа или важности:

terraform
# Suppress low severity alerts during business hours
resource "grafana_asserts_suppressed_assertions_config" "low_severity_business_hours" {
  provider = grafana.asserts

  name = "LowSeverityBusinessHours"

  match_labels = {
    severity = "warning"
    timezone = "business_hours"
  }
}

# Suppress specific alert types during known issues
resource "grafana_asserts_suppressed_assertions_config" "known_issue_suppression" {
  provider = grafana.asserts

  name = "KnownIssueSuppression"

  match_labels = {
    alertname = "HighMemoryUsage"
    service   = "legacy-service"
    issue_id  = "LEG-123"
  }
}

# Suppress infrastructure alerts during planned maintenance
resource "grafana_asserts_suppressed_assertions_config" "infrastructure_maintenance" {
  provider = grafana.asserts

  name = "InfrastructureMaintenance"

  match_labels = {
    alertgroup = "infrastructure.alerts"
    maintenance_type = "planned"
    affected_services = "all"
  }
}

Сложное подавление по нескольким меткам

Определите сложные правила подавления с несколькими метками:

terraform
# Complex suppression for multi-service deployments
resource "grafana_asserts_suppressed_assertions_config" "multi_service_deployment" {
  provider = grafana.asserts

  name = "MultiServiceDeploymentSuppression"

  match_labels = {
    deployment_id = "deploy-2024-01-15"
    services      = "api,worker,frontend"
    environment   = "production"
    deployment_type = "blue_green"
  }
}

# Suppress alerts for specific cluster during maintenance
resource "grafana_asserts_suppressed_assertions_config" "cluster_maintenance" {
  provider = grafana.asserts

  name = "ClusterMaintenanceSuppression"

  match_labels = {
    cluster     = "production-cluster-1"
    maintenance = "cluster_upgrade"
    affected_nodes = "all"
    estimated_duration = "2h"
  }
}

# Suppress alerts for specific region during network issues
resource "grafana_asserts_suppressed_assertions_config" "regional_network_issue" {
  provider = grafana.asserts

  name = "RegionalNetworkIssueSuppression"

  match_labels = {
    region      = "us-west-2"
    issue_type  = "network"
    affected_services = "external_dependencies"
    incident_id = "NET-456"
  }
}

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

grafana_asserts_suppressed_assertions_config

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

Аргументы

Имя Тип Обязательный Описание
name string Да Имя конфигурации подавленных проверок. Это поле неизменяемо и при изменении приводит к пересозданию ресурса.
match_labels map(string) Нет Метки для сопоставления в этой конфигурации подавленных проверок. Определяют, какие алерты следует подавлять.

Пример

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

  name = "ExampleSuppression"

  match_labels = {
    alertname = "TestAlert"
    env       = "development"
  }
}

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

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

Стратегия подавления

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

Правила сопоставления меток

  • Будьте конкретны в метках соответствия, чтобы не подавить непреднамеренные алерты
  • Сначала протестируйте правила подавления в средах, отличных от продакшена
  • Используйте описательные имена, отражающие цель и область действия подавления
  • Включайте в метки соответствующий контекст (например, идентификаторы инцидентов, окна обслуживания)

Управление жизненным циклом

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

Проверка

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

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

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