모니터링 및 통합 관측 시스템 구축 - Genie-Uss/genieus GitHub Wiki
🧩 문제 상황 (Problem)
- MSA 구조상 서비스 수가 많아지면서 로그/메트릭/트레이스를 개별적으로 수집하는 방식으로는 한계
- 서비스 간 호출 흐름이나 성능 병목 구간을 빠르게 파악하기 어려움
- 장애 발생 시 알림이 누락되거나, 탐지 시간이 늦어 서비스 복구 지연
🎯 선택한 해결 방안 (Decision)
Prometheus + Grafana + Loki + Zipkin 조합으로 통합 모니터링 환경 구성
- 각 서비스에 Prometheus Exporter (
/actuator/prometheus
) 설정 Eureka 서비스 디스커버리
기반 Prometheus 설정 → 서비스 자동 스크래핑- Loki + Promtail을 통해 Docker 로그를 수집하고, 컨테이너명/서비스명을 기준으로 필터링 가능하게 설정
- Zipkin 연동을 위해 Micrometer Tracing + Brave 적용, Kafka/Feign/WebClient에 traceId 전파 구조 완성
- Grafana에 Slack Webhook 연동 → 알림 조건 설정 (ex: CPU > 80%, HTTP 5xx 발생률 증가)
✅ 적용 효과 (Outcome)
- 각 서비스에서 로그, 메트릭, 트레이스가 자동으로 수집되어 Grafana 대시보드에 통합 시각화
- traceId 기준으로 Zipkin-Loki 간 로그 ↔ 트레이스 연계 분석 가능
- Slack 알림을 통해 30초 이내 장애 인지, 빠른 대응 가능
- 각 서비스의
/actuator/prometheus
노출 설정 + Eureka 연동으로 서비스 추가 시 자동 스크래핑
🔭 향후 개선 방향 (Next Steps)
- 🔄 Grafana Alert → GitHub Actions 트리거 자동화 가능성 실험
- ☁️ Zipkin → OTEL + Tempo로 전환 검토 (보다 강력한 trace 분석)
- 💡 Loki 로그에
ERROR
,SLOW_QUERY
,TIMEOUT
필터 쿼리 추가하여 관제 효율화