모니터링 및 통합 관측 시스템 구축 - 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 필터 쿼리 추가하여 관제 효율화