[Spring Boot & MSA] Sleuth and Zipkin - Distributed tracing

원알렉스·2020년 8월 2일
0

Spring Boot MSA

목록 보기
8/12
post-thumbnail

깃허브 소스코드
Udemy 강의

마이크로서비스 분산 환경 모니터링

  • 마이크로서비스 아키텍처의 분산 시스템에서는 하나의 요청에 서로 다른 시스템에서 애플리케이션이 실행되어야 하는 경우가 많습니다.
  • 분산 아키텍처에서 특정 이벤트 또는 작업에 대해서 오류가 발생했다고 가정하면,
  • 어떤 서비스에서 문제가 발생하였는지 아는 것이 중요하고, 해당 이벤트에 대한 로그 추적이 중요합니다.
  • 이벤트에 대한 직접적인 오류 분석을 위해서는 각 애플리케이션에서의 작업을 추적 ID로 연결해야 하고, 이 추적 ID를 중앙에서 수집하여 분석하는 시스템이 필요합니다.

Sleuth 란?

  • MSA 구조에서 클라이언트의 호출이 내부적으로 여러개의 서비스를 거쳐서 일어나므로 전체 트랜잭션에 대한 로그 트레이싱(Log Tracing)이 어렵습니다.
  • 이를 쉽게 하기 위해 트랜잭션의 전 구간을 추적하기 위한 하나의 연관 ID가 필요합니다.
  • 그래서 Sleuth를 통해서 이 연관 ID(Trace ID, Span ID)를 자동으로 생성해주고, 이를 Zipkin 서버로 전달해줍니다.

Spring Cloud Sleuth의 ID 체계

Span ID

  • 작업의 기본 단위
  • 각 서비스 호출시 새로운 Span ID 하나가 생성
  • Description, key-value annotation, process ID 등의 추가 정보를 가짐
  • Trace에서 제일 처음 만들어지는 Span을 Root Span이라고 부름(Trace ID와 동일)

Trace ID

  • 하나의 작업의 전체 트랜잭션 Flow
  • 동일한 Trace ID를 갖는 Span들을 묶어서 Tree 형태로 구성

Zipkin 이란?

Zipkin 시스템 구성도

  • Zipkin은 트위터에서 사용하는 분산 환경 추적 시스템 오픈소스입니다.
  • Zipkin은 아래 구성도와 같이 Collector, Query Service, Database, WebUI로 구성됩니다.

프로젝트 구성하기

pom.xml 의존성 설정

<dependency>
	<groupId>org.springframework.cloud</groupId>
	<artifactId>spring-cloud-sleuth-zipkin</artifactId>
</dependency>

프로퍼티 설정

  • Zipkin 서버 설정
spring:
  zipkin:
    base-url: http://localhost:9411
  • Zipkin 서버로 제공할 방법 설정(web: HTTP)
spring:
  zipkin:
    sender:
      type: web
  • Zipkin 서버로 정보를 얼만큼 제공할지 설정
    • 디폴트 = 로그에는 정보 포함, Zipkin 서버에는 정보 미포함
    • 0.1 = 10%, 1 = 100%
spring:
  sleuth:
    sampler:
      probability: 1

로그 예시

2020-08-02 16:04:19.165  INFO [users-ws,9d89923f671947ba,9d89923f671947ba,true] 7952 --- [o-auto-1-exec-4] c.a.p.a.u.P.service.UserServiceImpl      : Before calling albums Microservice
2020-08-02 16:04:19.245 DEBUG [users-ws,9d89923f671947ba,af17d4388f2e79be,true] 7952 --- [rix-albums-ws-3] c.a.p.a.u.P.feign.AlbumServiceClient     : [AlbumServiceClient#getAlbums] ---> GET http://albums-ws/users/f5b313e2-411f-4fc3-95e7-9aa5c43c286c/albums HTTP/1.1
...
2020-08-02 16:04:19.266  INFO [users-ws,9d89923f671947ba,9d89923f671947ba,true] 7952 --- [o-auto-1-exec-4] c.a.p.a.u.P.service.UserServiceImpl      : After calling albums Microservice
  • [{root microservice}, {trace ID}, {span ID}]

Zipkin Quickstart

curl -sSL https://zipkin.io/quickstart.sh | bash -s
java -jar zipkin.jar
http://localhost:9411
profile
Alex's Develog 🤔

0개의 댓글