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 아래에 나타남
- 일치 레이블이 의도한 알림을 올바르게 필터링함
- 사용자 정의 레이블이 생성된 알림에 올바르게 적용됨