알림 정책

알림 정책 (Notification policies)

알림 정책은 알림을 어떻게 처리할지 설계하고 알림 노이즈를 최소화할 수 있는 유연한 방법을 제공해요. 라벨 매처(label matcher)를 사용해 알림 인스턴스를 알림 정책으로 라우팅하고, 알림 정책은 여러 알림 인스턴스를 단일 알림으로 그룹화해 연락 지점으로 전달해요. 알림 정책은 리스트가 아니라 트리 구조로 구성됩니다.

출처: 문서

본문

알림 정책은 알림 처리 방식을 설계하고 알림 노이즈를 최소화하는 유연한 방법을 제공합니다. 라벨 매처로 알림 인스턴스를 알림 정책으로 라우팅하고, 알림 정책은 여러 인스턴스를 단일 알림으로 그룹화해 연락 지점으로 전달합니다.

알림 정책은 리스트가 아니라 트리 구조로 구성됩니다.

  • 알림 정책 트리의 루트는 기본 알림 정책(Default notification policy).
  • 각 정책은 자식 정책을 가질 수 있음.
  • 각 정책은 같은 부모·계층 수준을 공유하는 형제 정책을 가질 수 있음.

각 정책은 처리할(또는 처리하지 않을) 알림을 지정하는 라벨 매처 집합(0개 이상)으로 구성됩니다. 일치하는 정책(matching policy)은 인스턴스의 라벨과 일치하는 라벨 매처를 가진 알림 정책을 말합니다.

라벨 매칭 방법

라벨과 라벨 매처를 사용해 알림 규칙을 알림 정책침묵에 연결합니다. 라벨 매처는 라벨(label), 값(value), **연산자(operator)**의 세 부분으로 구성됩니다.

  • Label 필드는 일치시킬 라벨의 이름으로, 라벨 이름과 정확히 일치해야 합니다.
  • Value 필드는 지정된 Label 이름에 해당하는 값과 매칭되며, 매칭 방식은 Operator 값에 따라 다릅니다.
  • Operator 필드는 라벨 값과 매칭하는 연산자입니다.
연산자 설명
= 값과 정확히 같은 라벨 선택
!= 값과 같지 않은 라벨 선택
=~ 값과 정규식으로 일치하는 라벨 선택
!~ 값과 정규식으로 일치하지 않는 라벨 선택

참고: 여러 라벨 매처를 사용하면 AND 논리 연산자로 결합됩니다. 즉 모든 매처가 일치해야 규칙이 정책에 연결됩니다.

기본적으로 Grafana는 모든 알림 라우팅에 단일 알림 정책 트리를 사용합니다. 다중 정책 기능(multiple policy feature)으로 여러 알림 정책을 설정해 라우팅 로직을 별도의 독립 관리 라우팅 트리로 나눌 수도 있습니다.

라벨 매칭 예시

알림에 { foo=bar, baz=qux, id=12 } 라벨 집합을 정의했다면:

  • foo=bar 매처는 일치
  • foo!=bar 매처는 불일치
  • id=~[0-9]+ 매처는 일치
  • baz!~[0-9]+ 매처는 일치
  • foo=barid=~[0-9]+ 두 매처는 일치

라벨 제외 (Exclude labels)

라벨 매처로 라벨을 제외할 수도 있습니다. Team 라벨을 제외하는 예시:

Label Operator Value
team = ""
team !~ .+
team =~ ^$

팁: 알림 정책 라우팅의 실용적 예시는 Getting Started with Alert Instances and Notification Routing 튜토리얼을 참고하세요.

라우팅 (Routing)

어떤 알림 정책이 인스턴스를 처리할지 결정하기 위해 시스템은 트리 맨 위(기본 알림 정책)에서 시작해 일치하는 정책을 찾습니다.

일치하는 정책을 찾으면 표시된 순서대로 자식 정책을 계속 평가합니다. 자식 정책이 알림과 일치하면 더 이상 일치하는 자식이 없을 때까지 재귀적으로 자식 정책을 평가하며, 이 경우 가장 깊은 일치 자식 정책만 인스턴스를 처리합니다.

기본적으로 일치하는 정책을 찾으면 형제 정책은 계속 찾지 않습니다. 형제 정책도 처리하게 하려면 해당 정책에서 Continue matching siblings를 활성화하세요.

참고: 기본 알림 정책은 모든 알림 인스턴스와 일치합니다. 자식 정책이 없거나 어떤 자식도 인스턴스 라벨과 일치하지 않으면 항상 처리합니다. 알림이 여러 라벨을 사용하면 특정 연락 지점으로 라우팅하기 위해 그 라벨들이 알림 정책에도 있어야 합니다.

라우팅 예시

  • Pod stuck in CrashLoopseverity 라벨이 없어 자식 정책과 일치하지 않지만, team=operations 라벨이 있어 첫 정책과 일치합니다. team=security 정책은 일치하지 않고 해당 정책에 Continue matching siblings가 설정되지 않았습니다.
  • **Disk Usage – 80%**는 teamseverity 라벨이 모두 있어 operations 팀의 자식 정책과 일치합니다. 부모·자식 정책 모두 일치하면 더 구체적인 severity 자식 정책을 따릅니다.
  • Unauthorized log entryteam 라벨이 있지만 첫 정책(team=operations)과 값이 달라 일치하지 않으므로 계속 검색해 team=security 정책과 일치합니다. 자식 정책이 없으므로 추가 severity=high 라벨은 무시됩니다.

이런 라우팅·트리 구조로 전담 팀을 위한 알림을 조직화하고, 추가 라벨을 적용해 팀 내 특정 사례를 좁혀 처리할 수 있습니다.

상속 (Inheritance)

자식 정책은 라우팅에 유용할 뿐 아니라 부모 정책의 속성을 상속합니다. 기본 알림 정책의 자식 정책에도 동일하게 적용됩니다.

기본적으로 자식 정책은 부모로부터 다음 알림 속성을 상속합니다.

  • 연락 지점 (Contact point)
  • 그룹화 옵션 (Grouping options)
  • 타이밍 옵션 (Timing options)

그런 다음 각 정책은 필요하면 이 속성들을 덮어쓸 수 있습니다. 라우팅 과정과 함께 알림 속성 상속은 관련 알림을 그룹화하고 자식 정책으로 특정 사례를 처리하는 효과적인 방법입니다.

상속 예시: 위 라우팅 예시의 트리에서 team=operations의 자식 정책들은 부모의 연락 지점을 상속합니다. 이렇게 하면 각 자식 정책마다 같은 연락 지점을 반복 지정하지 않아도 됩니다.

더 알아보기 (Learn more)