Sping Framework

Spring Cloud Sleuth [1] - 용어

kkoon9 2022. 4. 4. 19:35

spring docs를 보고 정리한 글입니다.

 

Spring Cloud Sleuth

Spring Cloud Sleuth automatically instruments all your Spring applications, so you should not have to do anything to activate it. The instrumentation is added by using a variety of technologies according to the stack that is available. For example, for a s

docs.spring.io

Span

범위라는 뜻으로, 작업의 기본 단위를 나타낸다.

예를 들어, RPC를 보내는것은 RPC에 response을 보내는것처럼 새로운 span이다.

💡
요즈음, MSA 구조가 유행하면서 Polyglot 형태인 구조를 만들다보니 RPC의 필요성이 증가해지고 있다.
RPC에 대한 내용은 다른 포스팅에서 다뤄보자.

 

span은 다음 두 ID로 식별된다.

  • span의 고유 64비트 ID
  • span이 속한 트레이스의 다른 64비트 ID

또한 span은 다음과 같은 데이터를 가진다.

  • description
  • timestamp 이벤트
  • key value annotation(tags)
  • 일어나게 된 원인이 된 span의 ID
  • 프로세스 ID(통상적으로는 IP 주소)

span은 시작 및 정지가 가능하며, 타이밍 정보를 추적(track)한다.

스팬을 만들면 향후 어느 시점에서는 스팬을 꼭 정지해야 한다.

root span은 추적(trace)을 시작하는 초기 span이라고 하는데, span 해당 span의 ID 값은 trace ID와 같다.

Trace

추적이라는 뜻으로, Tree와 같은 구조를 형성하는 span Set를 이룬다.

분산 빅 데이터 저장소를 실행하는 경우 PUT 요청에 의해 trace가 형성될 수 있다.

Annotation

이벤트의 존재를 시간 내에 기록하는 데 사용된다.

Brave라는 instrumentation를 사용하면 Zipkin이 클라이언트와 서버의 사용자, 요청 시작 위치 및 종료 위치를 파악하기 위해 특별한 이벤트를 설정할 필요가 없다.

다만, 학습 목적으로, 이러한 이벤트를 표시하고, 어떠한 액션이 행해졌는지를 강조한다.

다음은 annotation의 종류를 나열한 것이다.

cs(Client Sent)

  • client가 request를 보냈을 때 사용된다.
  • span의 시작을 나타낸다.

sr(Server Recevied)

  • 서버 측에서 request를 받고 처리를 시작할 때 사용된다.
  • sr 타임스탬프에서 cs 타임스탬프를 빼면 어느정도 네트워크 지연이 있었는지 알 수 있다.

ss(Server Sent)

  • request 처리 완료 시(응답이 클라이언트에 반환되었을 때)에 사용된다.
  • ss 타임스탬프에서 sr 타임스탬프를 빼면 서버 측에서 요청을 처리하는 데 필요한 시간이 나타난다.

cr(Client Recevied)

  • span의 끝을 나타낸다.
  • 클라이언트가 서버측으로부터 응답을 정상적으로 수신했을 때 사용된다.
  • cr 타임스탬프에서 cs 타임스탬프를 빼면 클라이언트가 서버로부터 응답을 수신하는 데 필요한 시간이 모두 표시된다.

다음 그림은 시스템에서 Span 및 Trace와 Zipkin annotation을 보여준다.

위 사진에 있는 메모의 각 색상은 span을 나타낸다.

위 그림에서는 A부터 G까지 7개의 span이 있다.