SpringCloud

[11번가 Spring Cloud 기반 MSA로의 전환] 6. 모니터링

nineDeveloper 2021. 2. 8.
728x90

모니터링


youtu.be/J-VP0WFEQsY?t=2933

 

기존 모니터링 시스템으로는 5%가 부족해!


MSA 환경에서의 흔한 API 호출

API 호출에 지연/문제가 생긴 경우 어떤 서버가 문제의 원인을 제공했는가를 찾는 어려움

분산 Tracing의 필요


서버간 Trace 정보의 전달

서버간의 Trace 정보의 전달은 사용 Protocol의 헤더를 통해 전달 가능

  • ex) HTTP Header

서버 내의 Trace 정보의 전달

Thread Local 등을 사용하여 Trace 정보를 전달


요즘 Java 서버 내의 Trace 정보의 전달 문제

다양한 Library에 의한 Thread 변경으로 인한 Trace 정보의 전달이 어려움

  • Hystrix, RxJava, @Async ...

Spring Cloud Sleuth

Spring Cloud에서 제공하는 Distributed Tracing 솔루션

  • 대부분의 내외부 호출 구간에서 Trace 정보를 생성 및 전달
  • Log에 남기거나 수집 서버(Zipkin)에 전송하여 검색/시각화

Spring Cloud Sleuth는 어떻게 Trace 정보를 전달하는가?

  • 각 라이브러리, 솔루션별로 Trace 정보를 넘기기 위한 구현이 자동으로 구성되어 동작
  • Zuul, Servlet, RestTemplate, Hystrix, Feign, RxJava

Spring Cloud Sleuth - Logging

Spring Cloud Sleuth 사용시 Application 로그에 Trace ID(UUID)가 함께 출력

Trace ID - 하나의 Request에 대해 서버 전체에 걸쳐 동일한 UUID

로그 수집 / 검색 시스템이 있다면 동일 요청에 해당하는 전체 서버의 로그 분석 가능


Spring Cloud Sleuth with Zipkin


DB 호출 구간을 위한 간단한 확장

Spring Cloud Sleuth로는 DB 호출 구간은 표현 안됨

  • Spring AOP를 사용하여 Sleuth API로 Trace 정보를 직접 생성

Hystrix 모니터링 with Turbine


Hystrix 모니터링


Hystrix 모니터링 추가 구현

InfluxDB에 일주일치의 Hystrix Metrics 보관

Grafana를 통해 Dashboard 구성


Spring Boot Admin


회고

Open Source를 사용한다는 것

  • 당연히 Bug도 있고, 문서도 부실하지만...
  • Source Code가 주어졌기에 무엇이든 할 수 있다는 자신감
  • Bug Report, 수정과 문서의 보강은 사용자의 몫
  • 문제를 부딪히고 해결해가는 과정에서 개발팀 스스로 성장하고 있는 모습을 발견

Spring Cloud 덕분에 빠른 시간안에 최소의 인원으로 프로젝트를 진행할 수 있었다는 것

728x90

댓글

💲 추천 글