본문 바로가기
Back-end/Spring Cloud (MSA)

Spring Cloud (MSA) 분산추적 , Zipkin

by javapp 자바앱 2022. 12. 30.
728x90

 

 

분산 추적 Distributed Tracing

- 각각의 요청에 Unique Id 할당

- 시간 데이터를 모아 시간 지연 문제 해결

 

아키텍쳐

 

집킨 사용

Open Zipkin 은 MSA 에서 성능 문제를 확인할 수 있는 매우 편리한 도구

- 트랜잭션의 소요 시간을 그래픽으로 확인 가능

- 호출에 관련된 각 마이크로서비스별로 소요된 시간 분석 가능

 

이미지 생성, 컨테이너 생성

openzipkin/zipkin Tags | Docker Hub

docker run -p 9411:9411 openzipkin/zipkin:2.23

 

 

 

의존성 추가

currency-conversion-service, currency-exchange-service, api-gateway 서버

<dependency>
    <groupId>org.springframework.cloud</groupId>
    <artifactId>spring-cloud-starter-sleuth</artifactId>
</dependency>
<!-- https://mvnrepository.com/artifact/org.springframework.cloud/spring-cloud-sleuth-zipkin -->
<dependency>
    <groupId>org.springframework.cloud</groupId>
    <artifactId>spring-cloud-sleuth-zipkin</artifactId>
</dependency>
<dependency>
    <groupId>org.springframework.amqp</groupId>
    <artifactId>spring-rabbit</artifactId>
</dependency>

 

 

application.properties

currency-conversion-service, currency-exchange-service, api-gateway

#zipkin
# 0.1 : (10%) 1초에 1000건이 들어왔다고하면 여기에서 100건을 zipkin에게 전달
spring.sleuth.sampler.probability=1.0

 

 

 zipkin을 통해 요청에 대한 지연시간등의 정보를 볼 수 있음.

 

 

CurrencyExchangeController

    private Logger logger = LoggerFactory.getLogger(CurrencyExchangeController.class);


    @GetMapping("/currency-exchange/from/{from}/to/{to}")
    public CurrencyExchange retrieveExchangeValue(
            @PathVariable String from,
            @PathVariable String to
    )
    {

        logger.info("retrieveExchangeValue called with {} to {}", from , to);

로거를 통해 Trace ID 확인 가능

2022-12-11 22:51:35.935  INFO [currency-exchange,efa2a030a5d3cc0b,efa2a030a5d3cc0b] 6876 --- [nio-8000-exec-2] c.j.m.c.c.CurrencyExchangeController     : retrieveExchangeValue called with USD to INR

 

 

 

 

참고:

Distributed tracing (microservices.io)

Spring Cloud Sleuth, Open Zipkin 을 이용한 분산 추적 (4/4) - 로그 시각화를 위한 Open Zipkin 사용 · ASSU BLOG. (assu10.github.io)

 

 

 

 

댓글