[INFRA-02] Grafana Alerting 규칙·contact point 프로비저닝

작업 내용 (설계 의도)

변경 사항

규칙 엔진(ADR-001)을 프로비저닝한다. ⑤ 옵저버빌리티 스택의 Grafana에 alert rule + webhook contact point를 선언형 파일로 추가한다. 근거 TDD: §형제 과제 접점(⑤)·§인터페이스 계약.

  • Grafana provisioning 디렉토리에 alerting 규칙(provisioning/alerting/*.yaml) 신규 — 핵심 트랜잭션 API(결제·예약·티케팅) P95 500ms 5분 초과 규칙(PRD 유저 시나리오 1). 라벨 source=latency, severity(지속시간에 따라 warn→critical), endpoint, env.
  • webhook contact point → POST /internal/alerts/grafana, 헤더 X-Alert-Token.
  • notification policy: contact point 연결. env 라벨 템플릿(⑤ 재사용).
  • ⑤ 소유 파일(observability compose·provisioning)에 추가만 — 기존 대시보드·datasource 미수정(Single Writer 경계).

롤백: contact point 비활성 또는 규칙 파일 revert.

의존

  • BE-08 (webhook 엔드포인트 계약 — 코드 배포와 병행 가능, 계약은 TDD 확정본)
  • (⑤) Grafana·Prometheus/Loki 데이터소스

다이어그램

처리 흐름

flowchart LR
    PROM["Prometheus P95"] --> RULE["Grafana alert rule"]
    RULE --> CP["webhook contact point"]
    CP --> EP["POST /internal/alerts/grafana"]

테스트 케이스

  • P95가 임계를 5분 초과하면 규칙이 firing 상태가 되고 webhook이 발신된다(부하 재현).
  • webhook 페이로드에 endpoint/source=latency/severity/env 라벨이 포함된다.
  • 임계 미만으로 회복되면 규칙이 resolved로 전이된다.
  • docker compose ... config·Grafana provisioning 로드가 오류 없이 통과한다.