알림 그룹핑

알림 그룹핑 (Group alert notifications)

Grafana Alerting의 그룹핑은 관련된 알림들을 적은 수의 알림으로 일괄 처리해요. 특히 대량 장애 상황에서 첫 대응자(예: 온콜 엔지니어)가 짧은 시간에 수많은 알림을 받는 것을 막는 데 중요합니다. 예를 들어 큰 장애로 여러 시스템이 다운된 경우, 그룹핑은 1번 전화를 받느냐 100번 전화를 받느냐의 차이를 만들어요.

출처: 문서

본문

그룹핑(Grouping) 은 특정 기간 내의 유사한 알림 인스턴스를 단일 알림으로 결합해 알림 노이즈를 줄입니다.

알림 정책(notification policy)에서 여러 알림을 단일 알림으로 그룹핑하는 방법을 구성할 수 있어요:

  • Group by 옵션은 정책 내 수신 알림을 그룹핑하는 기준을 지정합니다. 기본값은 알림 규칙입니다.
  • Timing options 은 언제·얼마나 자주 알림을 보낼지 결정합니다.

Group by 옵션에 구성된 라벨에 대한 정확히 동일한 라벨 값을 가진 알림 인스턴스가 함께 그룹핑됩니다. 예를 들어 Group by 옵션이 team 라벨로 설정된 경우:

  • alertname:foo, team=frontend, alertname:bar, team=frontend 는 한 그룹입니다.
  • alertname:foo, team=frontend, alertname:qux, team=backend 는 다른 그룹입니다.

팁: 그룹핑의 실용적 예제는 Getting Started with Grouping 튜토리얼를 참고하세요.

알림 규칙 또는 라벨로 그룹핑 (Group by alert rule or labels)

기본적으로 Grafana의 알림 정책은 알림 규칙별로 알림을 그룹핑합니다. 구체적으로 alertnamegrafana_folder 라벨로 그룹핑하는데, 알림 규칙 이름은 폴더 간에 고유하지 않기 때문이에요. 알림 규칙이 아닌 다른 라벨로 그룹핑하려면 Group by 옵션을 다른 라벨 조합으로 변경하세요.

모든 알림을 단일 그룹으로: 알림 정책이 처리하는 모든 알림을 (알림 규칙이나 다른 라벨로 그룹핑하지 않고) 단일 그룹으로 묶으려면 Default 정책의 Group by 를 비워 두세요.

그룹핑 비활성화: 각 알림을 별도 알림으로 받으려면 ... 이라는 특수 라벨로 그룹핑하면 다른 라벨이 없도록 보장할 수 있어요.

타이밍 옵션 (Timing options)

알림 정책에서 각 알림 그룹에 대해 얼마나 자주 알림을 보낼지도 구성할 수 있어요. 알림 정책의 그룹에 적용되는 세 가지 별도 타이머가 있습니다:

  • Group wait: 새 알림 그룹에 대한 첫 알림을 보내기 전 대기 시간
  • Group interval: 알림 그룹의 변경 사항에 대한 알림을 보내기 전 대기 시간
  • Repeat interval: 마지막 알림 이후 그룹이 변경되지 않았을 때 알림을 보내기 전 대기 시간

이 타이머들은 보내는 알림 수를 줄입니다. 알림 전달을 지연함으로써 수신 알림을 여러 개 대신 하나의 알림으로 그룹핑할 수 있어요.

Group wait (기본: 30초)

Group wait 는 Grafana가 새 알림 그룹에 대한 첫 알림을 보내기 전에 대기하는 시간입니다. 이 옵션은 짧은 시간 내에 발생하는 관련 알림에 대해 보내는 알림 수를 줄이는 데 도움이 됩니다. Group wait가 길수록 새 그룹의 초기 알림에 다른 알림이 포함될 시간이 늘어나고, 짧을수록 첫 알림이 더 일찍 보내지지만 일부 알림이 포함되지 않을 위험이 있습니다. 지속 시간이 끝나기 전에 알림이 해결되면 그 알림에 대해 알림이 전송되지 않아 flapping 알림의 노이즈를 줄입니다.

예시 — 다음 알림 정책이 있다고 가정합니다:

  • team 라벨이 있는 모든 알림 인스턴스 일치 — 매칭 라벨이 team=~.+ 와 같음
  • team 라벨로 알림 그룹핑 — 각 고유 team 에 대해 하나의 그룹
  • Group wait 타이머를 30s 로 설정
시간 수신 알림 인스턴스 알림 정책 그룹 인스턴스 수
00:00 alertname=f1 team=frontend frontend 1 — frontend 그룹의 group wait 타이머 시작
00:10 alertname=f2 team=frontend frontend 2
00:20 alertname=b1 team=backend backend 1 — backend 그룹의 group wait 타이머 시작
00:30 * frontend 2 — group wait 경과. 2개 알림을 알리는 초기 알림 전송
00:35 alertname=b2 team=backend backend 2
00:40 alertname=b3 team=backend backend 3
00:50 * backend 3 — group wait 경과. 3개 알림을 알리는 초기 알림 전송

Group interval (기본: 5분)

알림이 group wait 때문에 첫 알림에 포함되기 너무 늦었다면 이후 알림에서 group interval 후에 포함됩니다. Group interval 은 그룹 변경 사항에 대한 알림을 보내기 전 대기 시간입니다. 그룹 변경은 다음 경우에 발생합니다:

  • 새 발화 알림이 그룹에 추가됨
  • 기존 알림이 해결됨

이전 예시의 관련 발췌:

시간 수신 알림 그룹
00:30 * frontend 2 — group wait 경과, Group interval 타이머 시작. 2개 알림 보고
00:50 * backend 3 — group wait 경과, Group interval 타이머 시작. 3개 알림 보고

Group interval을 5분으로 설정한 예시의 연속:

시간 수신 알림 그룹
01:30 alertname=f3 team=frontend frontend 3
02:30 alertname=f4 team=frontend frontend 4
05:30 * frontend 4 — Group interval 경과, 타이머 리셋. 4개 알림 보고하는 알림 1개 전송
05:50 * backend 3 — Group interval 경과, 타이머 리셋. 그룹 변경 없음, 알림 미전송
08:00 alertname=f4 team=backend backend 4
10:30 * frontend 4 — Group interval 경과, 타이머 리셋. 그룹 변경 없음, 알림 미전송
10:50 * backend 4 — Group interval 경과, 타이머 리셋. 4개 알림 보고하는 알림 1개 전송

작동 방식: 새 알림 그룹에 대한 첫 알림이 전송되면 group interval 타이머가 시작됩니다. group interval 타이머가 경과하면 시스템이 group interval 타이머를 리셋하고 그룹 변경이 있었을 때만 알림을 보냅니다. 이 과정은 더 이상 알림이 없을 때까지 반복됩니다. 중요한 점은 알림 인스턴스는 해결되고 상태 변경이 알려진 후 그룹에서 나온다는 것입니다. group interval 타이머가 경과했을 때 남은 알림이 없으면 그룹이 삭제됩니다. 그러면 다음 새 알림이 도착할 때 group wait 타이머가 다시 시작됩니다.

Repeat interval (기본: 4시간)

Repeat interval 은 그룹의 알림이 여전히 발화 중임을 알리는 알림(repeat) 역할을 합니다. repeat interval 타이머는 마지막 알림 이후 그룹이 변경되지 않았다면 알림을 얼마나 자주 보낼지(반복할지) 결정합니다.

작동 방식: repeat interval은 group interval이 리셋될 때마다 평가됩니다. 알림 그룹이 변경되지 않았고 마지막 알림 이후 시간이 repeat interval보다 길다면 알림이 여전히 발화 중임을 알리기 위해 알림이 전송됩니다. Repeat interval은 group interval보다 크거나 같아야 할 뿐만 아니라 group interval의 배수여야 해요. 배수가 아니면 group interval의 배수로 강제됩니다. 예를 들어 Group interval이 5분이고 Repeat interval이 9분이면, Repeat interval은 5의 가장 가까운 배수인 10분으로 올림됩니다. Repeat interval의 최대 지속 시간은 Grafana의 notification_log_retention 설정 기본값에 의해 제한되는 5일입니다.

예시 — Repeat interval을 4시간으로 설정한 예시의 연속:

시간 그룹
04:05:30 frontend 4 — Group interval 리셋. 마지막 알림 이후 시간이 repeat interval보다 길지 않음
04:10:30 frontend 4 — Group interval 리셋. 마지막 알림 이후 시간이 repeat interval보다 김. 4개 발화 알림 알리는 알림 1개 전송
04:10:50 backend 4 — Group interval 리셋. 마지막 알림 이후 시간이 repeat interval보다 길지 않음
04:15:50 backend 4 — Group interval 리셋. 마지막 알림 이후 시간이 repeat interval보다 김. 4개 발화 알림 알리는 알림 1개 전송

더 알아보기 (Learn more)