억제 규칙 구성
억제 규칙 구성 (Configure inhibition rules)
억제 규칙(inhibition rules)은 일치하는 라벨 값을 가진 소스 알림이 이미 발동 중일 때 대상 알림의 알림을 억제해요. 이는 근본 원인 알림이 의존 알림을 중복으로 만들 때 소음을 줄여줘요. 예를 들어 노드가 다운(소스)되면 그 노드에서 실행 중인 모든 서비스 알림(대상)을 억제할 수 있어요. 이 기능은 Grafana 13 이상에서 사용할 수 있어요.
출처: 문서
본문
Note: 억제 규칙은 특정 Alertmanager에 지정되며 그 Alertmanager가 관리하는 알림에 대해서만 알림을 억제해요.
Caution: 억제 규칙은 Prometheus Alertmanager 또는 Mimir에서 가져온 구성과의 호환성을 위해 설계됐어요. 의도적으로 Grafana에 전용 관리 UI가 없어요. 신중히 구성하지 않으면 억제 규칙이 알림을 조용히 억제해 문제 감지를 어렵게 만들 수 있어요. 대부분의 억제 사용 사례에는 silences 또는 mute timings를 고려하세요.
억제 규칙 vs silence
억제 규칙과 silence 모두 알림을 억제하지만, 핵심 차이는 억제 규칙이 다른 알림의 존재에 기반해 자동으로 알림을 억제하는 반면, silence는 다른 알림과 무관하게 고정된 시간 창 동안 알림을 억제한다는 점이에요.
| Inhibition rule | Silence | |
|---|---|---|
| Trigger | 일치하는 소스 알림이 발동 중일 때 활성 | 구성된 시간 창 동안 활성 |
| Duration | 소스 알림이 발동하는 동안 지속 | 고정된 시작·종료 시간 |
| Setup | 영구 구성으로 정의 | 발생별로 수동 생성 |
억제 규칙 관리
억제 규칙은 Grafana App Platform API로 관리해요. 억제 규칙을 만들거나 편집하는 전용 UI는 없어요. API 리소스는:
- Group:
notifications.alerting.grafana.app - Version:
v1beta1 - Resource:
inhibitionrules
Caution: 억제 규칙 API는 베타(v1beta1)이며 변경될 수 있어요. 억제 규칙은 Prometheus Alertmanager에서도 지원돼요. 외부 Alertmanager 설정은 "Configure Alertmanager" 문서를 참고하세요.
억제 규칙 스키마
| Field | Required | Description |
|---|---|---|
| name | Yes | 억제 규칙의 고유 이름. 생성 후 변경 불가. |
| source_matchers | Yes | 소스(억제하는) 알림을 식별하는 하나 이상의 매처. |
| target_matchers | Yes | 대상(억제되는) 알림을 식별하는 하나 이상의 매처. |
| equal | No | 억제가 적용되려면 소스·대상 알림 모두에서 같은 값을 가져야 하는 라벨. |
매처 형식
| Field | Description |
|---|---|
| label | 일치시킬 라벨의 이름. |
| type | 일치 연산자. =, !=, =~, !~ 중 하나. |
| value | 일치시킬 값. =~와 !~의 경우 정규식. |
| Operator | Description |
|---|---|
| = | 라벨이 값과 같은 알림 선택. |
| != | 라벨이 값과 같지 않은 알림 선택. |
| =~ | 라벨이 정규식과 일치하는 알림 선택. |
| !~ | 라벨이 정규식과 일치하지 않는 알림 선택. |
equal 필드
equal이 지정되면 나열된 각 라벨에 대해 소스·대상 알림이 같은 값을 가질 때만 억제가 적용돼요. 예를 들어 equal: [cluster]를 설정하면 한 클러스터의 알림이 같은 클러스터의 알림만 억제해요. equal을 생략하면 source_matchers와 일치하는 발동 중인 소스 알림이 라벨 값과 무관하게 일치하는 모든 대상 알림을 억제해요. 누락된 라벨과 빈 값 라벨은 equal 매칭 목적상 동등하게 처리돼요.
예제: 경고 알림 억제
{
"name": "critical-inhibits-warnings",
"source_matchers": [{ "label": "severity", "type": "=", "value": "critical" }],
"target_matchers": [{ "label": "severity", "type": "=", "value": "warning" }],
"equal": ["cluster", "namespace"]
}
- 소스 매처는
critical알림을 선택해요. 하나가 발동하면 규칙이 활성화돼요. - 대상 매처는
warning알림을 선택해요. 규칙은 소스 알림이 발동하는 동안 이들을 억제해요. equal필드는 소스와 대상이 같은cluster와namespace라벨 값을 공유할 때만 억제가 적용되도록 보장해요.
억제 규칙과 관리형 라우트
Alertmanager는 여러 라우팅 트리를 제공할 수 있어요: 기본 Grafana 관리 라우트와 Prometheus Alertmanager 또는 Mimir 구성에서 가져온 라우트. 억제 규칙은 생성 방식에 따라 다르게 동작해요:
- Grafana 관리 규칙: API를 통해 생성되며 전체 Alertmanager에 적용돼요. 가져온 라우트를 포함한 모든 라우트가 처리하는 알림과 일치할 수 있어요.
- 가져온 규칙: 가져온 Alertmanager 구성에서 왔으며 해당 가져온 라우트가 처리하는 알림으로 범위가 제한돼요. Grafana는 각 가져온 규칙을 자체 가져온 라우트로 제한하는 내부 라벨 매처를 추가하므로, 가져온 규칙은 다른 라우트를 통과하는 알림을 억제할 수 없어요.
여러 가져온 구성에 걸쳐 알림을 억제하려면 가져온 구성에 포함된 억제 규칙에 의존하기보다 API를 통해 Grafana 관리 규칙을 생성하세요.