> ## Documentation Index
> Fetch the complete documentation index at: https://docs.nora.my/llms.txt
> Use this file to discover all available pages before exploring further.

# 알림 룰

> 무엇이 알림을 걸까. 임계값, 패턴, 이벤트

**알림 룰**이 이벤트나 조건을 알림 채널에 잇습니다. 무엇이 걸릴지 정하고, 필터를 더하고, 갈 곳을 고릅니다.

## 룰 구성

* **Trigger** 이벤트나 조건.
* **Filter** 특정 Flow·테넌트·비용 임계값 등으로 좁힘.
* **Channel** 알림이 갈 곳([채널](/ko/settings/notifications/channels) 참고).
* **Template** 메시지 본문을 손봄.
* **Rate limit** 시간당 알림 상한(홍수 막기).

## Trigger 종류

### 이벤트 트리거

낱개 이벤트에 걸립니다.

* **Flow publish** 새 버전을 배포함.
* **Flow rollback** 롤백이 일어남(보통 우선순위 높음).
* **자동 롤백** 자동 롤백이 걸림(거의 응급).
* **승인 요청** 새 승인이 대기함.
* **승인 결정** 승인이 승인되거나 거부됨.
* **시크릿 로테이션** 커넥터나 provider 키를 돌림.
* **멤버 역할 변경** 접근이 바뀜.
* **개선 배포** 개선이 출시됨.

### 임계값 트리거

지표가 한동안 임계값을 계속 넘을 때 걸립니다.

* **신호률** 시간당 신호가 임계값 이상.
* **에러율** 시간당 트레이스 에러가 임계값 이상.
* **판정률** NOT\_SUPPORT 율이 임계값 초과.
* **실행당 비용** 평균 비용이 임계값 초과.
* **일일 비용** 총 일일 비용이 예산 초과.
* **지연 p95** p95 지연이 임계값 이상.
* **리트리벌 히트율** 0 히트 리트리벌 비율.

임계값 트리거는 계속 넘을 것을 요구합니다(예: "15분간 X 이상"). 한 번 튄 걸 오탐으로 안 잡습니다.

### 패턴 트리거

Nora가 잡는 특정 패턴에 걸립니다.

* **회귀** 고친 클러스터가 다시 나타남.
* **새 클러스터** 신호 5개 이상으로 새 클러스터가 생김.
* **클러스터 계속 성장** 기존 클러스터가 하루에 신호 10개 이상 얻음.

### 침묵 트리거

일어나야 할 게 안 일어날 때 걸립니다.

* **놓친 스케줄** 스케줄 Trigger가 안 걸림.
* **트레이스 없음** Flow가 N 시간 실행을 못 받음(상류가 깨졌나?).
* **피드백 침묵** 실행이 도는 Flow에 N 일간 피드백이 없음(QA 리뷰 중인가?).

## 룰 더하기

**Settings → Notifications → Alerts → New** 입니다.

1. Trigger 종류를 고릅니다.
2. Trigger 세부를 정합니다.
3. 필터를 더합니다(Flow, 테넌트, 비용 버킷 등).
4. 채널을 고릅니다.
5. 요율 제한을 정합니다(기본은 룰당 5분에 1건).
6. 저장합니다.

룰은 기본으로 켜집니다. 지우지 않고 끌 수 있습니다.

## 필터

룰마다 필터를 받습니다.

* **Flow** 특정 Flow slug 또는 "아무 Flow".
* **Version** 특정 배포 버전.
* **Tenant** 특정 테넌트(멀티테넌트 워크로드).
* **환경** Prod / Staging / Dev(워크스페이스 태그로).
* **Feature** 트레이스의 커스텀 기능 플래그.

필터는 AND로 묶입니다.

## 템플릿

기본 템플릿이 무난합니다. 원하면 손봅니다.

* 특정 형식으로(티켓팅 시스템이 기대하는 입력에 맞춰).
* 맥락을 더해(트레이스 링크, 감사 항목 링크).
* 지역화 언어로.

템플릿 변수에는 액터, 타겟, 액션별 필드, 워크스페이스 URL이 들어갑니다.

## 요율 제한

룰마다 요율 제한이 있습니다. 기본은 룰당 5분에 1건입니다.

* 출렁이는 임계값이 Slack을 도배하는 걸 막습니다.
* 클러스터 이벤트를 "지난 5분 5건" 요약 하나로 묶습니다.

정말 응급인 트리거(자동 롤백, 크리티컬 에러율)만 요율 제한을 끄세요.

## 묵음

어느 룰이든 잠시 묵음할 수 있습니다.

* **1시간 묵음** 계획된 배포나 조사 중.
* **무기한 묵음** 룰이 과하게 걸려 리뷰가 필요할 때. 묵음을 풀거나 룰을 지운 뒤 알림이 다시 옵니다.

## 룰 의존성

복잡한 흐름은 룰을 엮습니다.

* **룰 A가 걸리면 룰 B를 30분 묵음** 알림 폭풍을 막습니다.
* **룰 A가 걸리고 15분 미확인이면 룰 C로 에스컬레이션** Slack이 무시되면 온콜을 페이징합니다.

**Rule → Dependencies**에서 정합니다.

## 테스트

룰마다 **Test** 버튼이 있습니다. 전체 파이프라인(필터 + 템플릿 + 채널)으로 가짜 이벤트를 걸어, 실제 트리거를 기다리지 않고 배선을 확인합니다.

## 흔한 알림 패턴

### 기본 운영

```
Rule: 자동 롤백
Trigger: auto_rollback_fired
Channel: PagerDuty (nora-oncall)
Rate limit: 없음
```

```
Rule: 배포 알림
Trigger: flow_publish
Filter: 아무 Flow
Channel: Slack (#nora-deploys)
Rate limit: 1/5분
```

```
Rule: 승인 요청
Trigger: approval_requested
Filter: 아무 Flow
Channel: Slack (#nora-approvals)
Template: Approve / Reject 버튼이 있는 Slack 카드
Rate limit: 없음
```

### 품질 임계값

```
Rule: NOT_SUPPORT 스파이크
Trigger: verdict_rate > 5%
Window: 30분
Filter: Flow = support-agent
Channel: Slack (#support-oncall)
Rate limit: 1/시간
```

```
Rule: 실행당 비용 높음
Trigger: cost_per_run avg > $0.20
Window: 1시간
Filter: 아무 Flow
Channel: 이메일 (finance@)
Rate limit: 1/일
```

### 회귀

```
Rule: 회귀
Trigger: regression_detected
Filter: 아무 Flow
Channel: Slack (#nora-alerts) + PagerDuty
Rate limit: 없음
```

회귀는 우선순위가 높습니다. 두 채널에, 요율 제한 없이 둘 만합니다.

## 감사

모든 알림 룰 변경(생성, 편집, 묵음, 삭제)이 감사됩니다.

## 관련

* [채널](/ko/settings/notifications/channels) 알림이 갈 곳.
* [회귀](/ko/reliable/signals/regressions) 예전에 고친 이슈의 패턴 트리거.
* [비용·지연](/ko/reliable/traces/cost) 임계값 트리거 뒤의 지표.
* [승인·배포](/ko/reliable/optimization/approve) 승인 워크플로우.
