Terraform으로 알림 알림 구성하기

Terraform으로 알림 알림 구성하기 (Configure notification alerts using Terraform)

Knowledge Graph의 알림 알림 구성을 사용하면 알림이 처리되고 라우팅되는 방식을 관리할 수 있어요. 일치 레이블(match labels)을 지정해 알림을 필터링하고, 사용자 정의 레이블을 추가하며, 지속 시간 요구 사항을 설정하고, 알림 일시 중지(silencing)를 제어할 수 있어요.

Knowledge Graph UI에서 알림 알림을 구성하는 방법에 대한 정보는 알림 구성하기를 참고하세요.

출처: 문서

기본 알림 알림 구성

alert-configs.tf라는 파일을 만들고 다음을 추가하세요.

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

추가 레이블과 지속 시간이 있는 알림 알림

사용자 정의 레이블과 타이밍 요구 사항으로 알림을 구성하세요.

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

대기 시간 및 성능 알림 알림

대기 시간(latency) 및 성능 문제를 모니터링하고 알림을 보내세요.

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

인프라 및 서비스 알림 알림

인프라 구성 요소와 서비스에 대한 알림을 구성하세요.

# 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

Grafana API를 통해 Knowledge Graph 알림 알림 구성을 관리하세요.

인자 (Arguments)

이름 타입 필수 설명
name string 예 알림 알림 구성의 이름. 이 필드는 변경할 수 없으며 변경 시 재생성됩니다.
match_labels map(string) 아니요 이 알림 알림 구성에 일치시킬 레이블. 이 구성이 적용되는 알림을 필터링하는 데 사용됩니다.
alert_labels map(string) 아니요 이 알림 알림 구성으로 생성된 알림에 추가할 레이블.
duration string 아니요 조건이 발화(firing)되기 전에 참이어야 하는 지속 시간(예: '5m', '30s'). Knowledge Graph API의 'for'에 매핑됩니다.
silenced bool 아니요 이 알림 알림 구성이 일시 중지되는지 여부. 기본값은 false입니다.

예시

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 구성 주석에 일시 중지 이유를 문서화하세요.
  • 일시 중지된 구성을 정기적으로 검토해 여전히 필요한지 확인하세요.

지속 시간 구성

  • 알림 요구 사항에 따라 적절한 지속 시간 값을 설정하세요.
  • 지속 시간을 선택할 때 모니터링 대상 조건의 특성을 고려하세요.
  • 유사한 알림 유형 전체에서 일관된 지속 시간 형식을 사용하세요.

검증 (Validation)

Terraform 구성을 적용한 후 다음을 확인하세요:

  • Knowledge Graph 인스턴스에 알림 알림 구성이 만들어짐
  • 구성이 Knowledge Graph UI의 Observability > Rules > Notify 아래에 나타남
  • 일치 레이블이 의도한 알림을 올바르게 필터링함
  • 사용자 정의 레이블이 생성된 알림에 올바르게 적용됨

관련 문서