FrameWork/Spring Cloud

Microservice 분산 추적

태윤2 2021. 9. 12. 08:30

Zipkin

  • https://zipkin.io/
  • Twitter에서 사용하는 분산 환경의 Timing 데이터 수집, 추적 시스템 (오픈 소스)
  • Google Drapper에서 발전하였으며, 분산환경에서의 시스템 병목 현상 파악
  • Collector, Query Service, Databasem WebUI로 구성
  • Span
    • 하나의 요청에 사용되는 작업의 단위
    • 64 bit unique ID
  • Trace
    • 트리 구조로 이뤄진 Span 셋
    • 하나의 요청에 대한 같은 Trace ID 발급

Spring Cloud Sleuth

  • 스프링 부트 애플리케이션을 Zipkin과 연동
  • 요청 값에 따른 Trace ID, Span ID 부여
  • Trace와 Span Ids를 로그에 추가 가능
    • servlet filter
    • rest template
    • scheduled actions
    • message channels
    • feign client

Spring Cloud Sleuth + Zipkin

  • 하나의 요청이 시작 될 때 Trace ID, Span ID 가 할당 되고, 이 ID는 요청이 끝날 때 까지 가지고 있음
  • 하나의 흐름에서 새로운 요청을 하게 된다면 Trace ID는 유지되고, Span ID는 새로 할당됨

  • Zipkin 설치 및 실행

 

Users MicroService,OrderService 수정

  • build.gradle 에 sleuth, zipkin 주입(둘다)

  • application.yml 설정(zipkin 관련)(둘다)

  • UserServiceImpl에 log 찍기

  • OrderController에 log 찍기

getOrder()
createOrder()
createOrder()

 

  • 강제로 오류 생성하기

 

 

Zipkin을 사용해 마이크로서비스 플로우를 확인 할 수 있다.