— Prometheus + Alertmanager + Slack으로 실시간 장애 대응 시스템 구축


1. 왜 Slack 알림이 필요한가?

백엔드 시스템은 문제가 생기는 순간이 가장 중요합니다.

  • 정산 배치 실패
  • 환불 실패율 급증
  • DB 커넥션 풀 고갈
  • JVM 메모리 사용률 90% 초과

이런 이벤트를 사람이 직접 모니터링 화면을 보고 발견하는 구조는 운영이 아닙니다.

운영은 “이상 징후가 발생했을 때 자동으로 알려주는 구조”입니다.

Slack 알림은 그 첫 단계입니다.


2. 시스템 구성 구조

이번 프로젝트에서는 다음 구조로 구성했습니다.

Spring Boot (Micrometer)

Prometheus (메트릭 수집)

Alertmanager (알람 판단)

Slack (실시간 알림)
 

핵심 포인트

  • 애플리케이션은 /actuator/prometheus를 통해 메트릭을 노출
  • Prometheus가 주기적으로 scrape
  • Alert rule이 조건을 만족하면 firing
  • Alertmanager가 Slack Webhook으로 전송

3. Slack Webhook 연동 방식

Slack은 “Incoming Webhook” 기능을 제공합니다.

  1. Slack App 생성
  2. Incoming Webhook 활성화
  3. 채널 선택
  4. Webhook URL 발급
  5. .env에 설정
 
 
SLACK_WEBHOOK_URL=https://hooks.slack.com/services/XXX/YYY/ZZZ
SLACK_CHANNEL=#alerts
 

Alertmanager 설정:

 
 
global:
slack_api_url: '${SLACK_WEBHOOK_URL}'
 

이 구조로 알림을 자동화했습니다.


4. 실제 알림 사례

예시 1: 환불 실패율 10% 초과

 
 
- alert: HighRefundFailureRate
expr: (
rate(refund_failed_total[5m])
/
rate(refund_requests_total[5m])
) > 0.1
 

Slack 메시지:

 
 
🚨 환불 실패율 높음
최근 5분간 환불 실패율이 12%를 초과했습니다.
Environment: production
Runbook: 링크
 

이렇게 되면:

  • 즉시 인지
  • 로그 확인
  • PG 연동 확인
  • DB 상태 점검

으로 이어집니다.


5. Slack 알림의 실질적인 유용성

1️⃣ MTTR(Mean Time To Recovery) 단축

Slack 알림이 없으면:

  • 대시보드 수동 확인
  • 고객 문의 후 인지

Slack 알림이 있으면:

  • 1~2분 내 인지
  • 장애 확산 방지

2️⃣ 운영 가시성 확보

정산/환불은 “돈”과 직결됩니다.

  • 배치 실패
  • 중복 환불
  • idempotency 오류

이걸 실시간으로 모르면 손실로 이어질 수 있습니다.


3️⃣ 팀 협업 강화

Slack은 단순 알림이 아닙니다.

  • 알림 스레드에서 원인 분석
  • 담당자 멘션
  • runbook 링크 클릭 후 대응

즉, 알림 → 대응 → 기록 → 개선 흐름이 만들어집니다.


6. runbook과의 결합

알림 메시지에 runbook 링크를 포함하면 운영 성숙도가 올라갑니다.

 

Slack 알림에 링크 포함:

 
 
🔗 Runbook: 클릭
 

→ 클릭하면 대응 매뉴얼 확인

이건 단순 알림이 아니라 운영 체계입니다.


7. 운영 단계에서의 전략적 활용

🔴 Critical

  • 즉시 대응
  • repeat_interval 5분
  • @channel

🟡 Warning

  • 반복 간격 길게
  • 추세 확인
  • 성능 튜닝 대상

Alert severity에 따라 Slack 전략을 다르게 가져갈 수 있습니다.


8. 구현하면서 느낀 점

Slack 연동은 어렵지 않습니다.
하지만 중요한 건 무엇을 알릴 것인가입니다.

잘못된 알림은:

  • 피로도 증가
  • 무시되는 알람
  • 운영 신뢰도 하락

좋은 알림은:

  • 핵심 지표만
  • 실제 조치 가능한 수준
  • 명확한 메시지 + Runbook

9. 결론

Slack 알림 연동은 단순 편의 기능이 아닙니다.

“시스템을 코드로 운영하는 것”의 시작입니다.

  • 모니터링
  • 알람
  • 대응 문서
  • 자동화

이 흐름이 갖춰질 때 비로소 운영 가능한 시스템이 됩니다.


🔚 마무리

백엔드 개발자는 이제 단순 API 구현자가 아닙니다.

  • 장애를 감지하고
  • 지표를 해석하고
  • 대응 체계를 설계하는 사람입니다.

Slack 알림은 그 첫 단계입니다.

LIST

+ Recent posts