개발/Spring

[Spring Cloud] Zipkin(집킨) 분산 추적 해보기

joon95 2022. 10. 26. 23:43
반응형

Zipkin(집킨)은 스프링클라우드에서 제공하는 분산추적 서비스이다.

 

Zipkin(집킨)서버와 sleuth(슬루스)가 있으며

집킨서버는 데이터를 보관 및 웹대시보드를 제공하며,

슬루스는 로그 데이터들을 잘 처리하여 집킨에 보내는 역할이다.

 

집킨서버의 데이터 저장소는

- 인메모리

- mysql

- 카산드라

- elasticSearch

로 설정할 수 있으며 별다른 설정이 없을 경우 인메모리(WAS)에 저장하게 된다.

 

Zipkin 구동

간단히 도커를 통해 기동하며 port는 default 9411 을 사용한다.

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

Zipkin index page

 

Pom.xml

zipkin 사용을 위한 라이브러리 추가

위에서 설명했듯이 슬루스란 친구를 통해 데이터를 zipkin서버에 보낸다.

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

 

properties

집킨 서버와 슬루스의 트랜잭션 전송 비율을 정의한다.

(probability: 1.0은 100%를 의미함)

spring.zipkin.base-url=http://localhost:9411
spring.sleuth.sampler.probability=1.0

 

테스트

설정 후 springboot 를 실행하면  Log가 달라진 것을 확인할 수 있다.

Zipkin 대시보드를 보면 트레이스들이 잡힌다.

zipkin trace list

트레이스를 하나 클릭해보면 상세하게 소요시간 스텝이 보이게된다.

zipkin trace detail view

추가로 spring.application.name 을 지정하면

spring.application.name=my-app-joon95

 

로그부분과 대시보드의 serviceName이 변경된다.

 

마치며

MSA 아키텍처에서는 서비스A에서 B,C,D.. 많은 네트워크 구간들을 통해 서비스를 제공하게되는데, 이때 발생되는 loss를 이러한 Zipkin(집킨)을 통해 파악할 수 있다. 여기서 적용되어있는 redis를 통한 캐시 정책 이 외에도 kafka를 통한 메시지큐서비스로 SAGA패턴을 구성해 볼 예정이다.

스프링클라우드가 얼마나 많은 고민들을 하여 라이브러리를 제공하게 되었는지 그 노력은 정말 대단하다.

 

반응형