개발로그

[MSA] Zipkin & Micrometer

비오베베 2024. 7. 25. 14:43

Trace Id, Span Id

 

하나의 요청에서 여러 마이크로 서비스의 참조가 필요할 때 전체적으로 동일한 trace Id를 사용하고, 서비스마다 다른 sapn Id를 사용합니다. 이를 통해 문제가 있는 trace Id 요청을 트레이싱해서 문제가 있는 서비스를 찾을 수 있습니다.

 

Micrometer

SpringBoot 2에서는 spring cloud sleuth를 통해 spring boot에서 zipkin으로 span id, trace id 전송해 분산 추적을 진행했는데 

 

이와 같이 순환참조가 일어나는 구조와 Spring과 SpringBoot에서는 트레이싱 기능일 지원하지 않는 구조로 인해

SpringBoot 3에서는 Sleuth의 트레이싱 기능이 Micrometer로 이관되었습니다.

 

https://techblog.lycorp.co.jp/ko/how-to-migrate-to-spring-boot-3

 

실전! Spring Boot 3 마이그레이션

들어가며 안녕하세요. LINE Plus에서 태국 LINE BK 채널 서버 개발 및 운영 업무를 맡고 있는 이석재입니다. LINE BK에서는 지난 9월에 LINE BK 보험 중개 서...

techblog.lycorp.co.jp

 

zipkin

micrometer로 생성한 trace Id, span Id 정보를 저장하고 마이크로 서비스별, trace Id 별 검색을 통해 서비스 흐름을 시각화합니다.

 

zipkin 실행

docker run -d -p 9411:9411--restart=always openzipkin/zipkin

 

의존성 추가

actuator 의존성을 추가해야 tracing, zipkin 관련 정보에 접근할 수 있습니다.

// actuator 의존성 추가해야 tracing, zipkin 관련 활용 가능
implementation group: 'org.springframework.boot', name: 'spring-boot-starter-actuator'

implementation group: 'io.micrometer', name: 'micrometer-observation'

implementation group: 'io.micrometer', name: 'micrometer-tracing-bridge-brave'

implementation group: 'io.zipkin.brave', name: 'brave-instrumentation-spring-web'

implementation group: 'io.zipkin.reporter2', name: 'zipkin-reporter-brave'

implementation group: 'io.github.openfeign', name: 'feign-micrometer'

 

application.yml 설정

spring:
  application:
    name: user-service
  zipkin:
    base-url: http://localhost:9411
    enabled: true
    
management:
  tracing:
    sampling:
      probability: 1.0
    propagation:
      consume: B3
      produce: B3_MULTI
  zipkin:
    tracing:
      endpoint: "http://localhost:9411/api/v2/spans"

 

서비스 연쇄되는 API 호출

user service에서 사용자의 주문 목록을 조회하기 위해 order service까지 호출하는 사용자 정보 API 호출을 해보겠습니다.