STK-OBS-10 Discord webhook 알림 연동 (양 스택)

작업 내용

임계치 위반 시 Discord webhook으로 알림을 보낸다(R-10). PoC 비교 축에 “알림 경험”을 넣기 위해 Grafana·SigNoz 양쪽에 동일 규칙을 구성한다.

  • Grafana: contact point(Discord) + alert rule(예: HTTP 에러율·consumer lag·Redis 메모리).
  • SigNoz: alert channel(webhook→Discord) + 동일 의미의 alert rule.
  • webhook URL은 ~/.zshrcDISCORD_WEBHOOK_URL 환경변수로만 주입(민감 정보 주입 방식 선택). 설정 파일 하드코딩 금지.

롤백: alert rule·contact point 제거. 환경변수는 코드와 분리돼 영향 없음.

다이어그램

처리 흐름

sequenceDiagram
    participant Stack as Grafana/SigNoz
    participant Rule as alert rule
    participant Discord
    Stack->>Rule: 메트릭 임계치 평가
    Rule->>Discord: 위반 시 webhook 발송
    Rule->>Discord: 해소 시 resolved 발송

구성 의존

flowchart LR
    ENV["DISCORD_WEBHOOK_URL(zshrc)"]
    GCP["Grafana contact point"]
    SCH["SigNoz alert channel"]
    ENV --> GCP
    ENV --> SCH
    GCP --> DISCORD["Discord"]
    SCH --> DISCORD

테스트 케이스

  • 임계치 위반 시 Grafana·SigNoz 각각 Discord로 알림이 도착한다.
  • 위반 해소 시 resolved 알림이 발송된다.
  • webhook URL이 환경변수로 주입되고 설정 파일에 평문 노출되지 않는다.
  • 환경변수 미설정 시 alert 구성이 명확한 에러/경고를 남긴다(조용한 실패 방지).
  • 중복 알림 억제(그룹핑/디바운스)가 동작한다.