[AI] 모니터링 및 알림 체계 - 100-hours-a-week/5-yeosa-wiki GitHub Wiki

모니터링 및 알림 체계

구성 요소 설명
Prometheus FastAPI, Redis, GPU 서버의 exporter로부터 메트릭 수집
Grafana 성능 대시보드
Alertmanager 알림 조건 기반 Discord 전송
Discord 장애 발생 시 실시간 경보 수신 채널

모니터링 대상 구성요소

컴포넌트 설명
FastAPI 서버 (MIG) API 처리 및 사진 처리
Redis 메시지 큐 및 캐시
Stable Diffusion GPU 서버 스타일 변환 인퍼런스
공통 Exporter node_exporter, redis_exporter

주요 모니터링 지표 항목

1. FastAPI 서버

지표 설명 수집 방법
HTTP 요청 수 (requests_total) 초당 요청 수 FastAPI 미들웨어 + custom exporter
요청 지연 시간 (request_duration_seconds) 평균 응답 시간 (P95, P99 포함) FastAPI @app.middleware + Histogram
에러율 (5xx_errors_total) 서버 내부 에러 비율 상태코드 기반 custom metric
처리 완료율 (success_ratio) 정상 처리 비율 총 요청 대비 성공 비율 계산

2. 시스템 자원 사용량 (node_exporter)

지표 설명
CPU 사용률 (node_cpu_seconds_total) 워커/임베딩 과부하 감지
메모리 사용률 (node_memory_MemAvailable_bytes) 과다 사용 시 경고
디스크 I/O / 사용량 /dev/sda1 기준 사용률 모니터링
네트워크 트래픽 API 응답량 분석용 (node_network_receive_bytes_total 등)

3. Redis (redis_exporter)

지표 설명
큐 길이 (redis_stream_length, llen) 병목 감지 (태깅/분류 요청 쌓임 여부)
처리 실패율 (failed_jobs) 테스크 실패 발생 여부
연결 수 / 메모리 사용 과도한 연결 혹은 메모리 경고 감지

*실패율은 Redis에서 기록하지 않기 때문에 애플리케이션 레벨에서 실패 감지해서 metric 증가시켜야 한다.

4. GPU 서버 (node_exporter + 커스텀)

지표 설명
GPU 사용률 (nvidia_smi_utilization_gpu) Stable Diffusion 과부하 여부
GPU 메모리 사용량 VRAM 부족 여부 감지
API 요청 수 / 처리 시간 스타일 변환 API 응답 시간 추적용

📊 Grafana 대시보드 구성안

대시보드 #1: 전체 시스템 헬스 모니터링

  • FastAPI CPU/메모리/응답 시간
  • Redis 큐 상태 및 에러율
  • GPU 서버 응답 시간 + GPU utilization
  • MIG 인스턴스 수

대시보드 #2: 서비스 성능 및 사용자 요청 분석

  • 초당 요청 수 (RPS)
  • 응답 시간 (P95, 평균)
  • 요청별 상태코드 분포 (200, 400, 500)
  • 워커별 병렬 처리 성공률

대시보드 #3: 장애/이상 탐지

  • 5xx 오류 급증 알림
  • Redis 대기 큐 100건 이상 → Discord 경고
  • GPU 메모리 사용률 > 80% 시 경고
  • FastAPI 평균 응답 시간 > 1.5초

알림 시스템 연동 (Alertmanager + Discord)

조건 경고 메시지
FastAPI 응답 시간 > 2초 (3분 이상 지속) FastAPI 응답 지연 발생
Redis 큐 길이 > 100건 Redis backlog 발생
GPU 사용률 > 80% (지속 1분) GPU 사용률 과부하
시스템 메모리 < 300MB 서버 메모리 부족 경고

수집 및 시각화 흐름 요약

[Node Exporter / Redis Exporter / FastAPI Exporter]
      ↓
[Prometheus] ← 15초 간격 pull 수집
      ↓
[Grafana] ← 실시간 시각화 (대시보드로 표현)
      ↓
[Alertmanager] ← 조건 충족 시
      ↓
[Discord] ← 실시간 경고 전달