[AI] 모니터링 대상 지표 목록과 수집 시각화 방법 - 100-hours-a-week/5-yeosa-wiki GitHub Wiki
모니터링 대상 구성요소
컴포넌트 |
설명 |
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건 이상 → Slack 경고
- 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] ← 실시간 경고 전달