일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 |
- Angular2
- Linux
- design pattern
- 스프링 배치
- 엘라스틱서치
- Spring XD
- elasticsearch
- Spring Boot
- SBT
- scala
- Gradle
- DDD
- spark
- hdfs
- hibernate
- Java
- apache storm
- hadoop
- elastic search
- 도메인주도설계
- Hbase
- docker
- nginx
- Spring
- Storm
- 제주
- intellij
- Spring Batch
- 인텔리J
- Clean Code
- Today
- Total
욱'S 노트
마이크로미터 트레이싱 개요 (Micrometer Tracing Outline) 본문
마이크로미터 트레이싱은 유명 트레이서 라이브러리를 지원하기 위한 단순한 퍼사드이다. 처음엔 스프링 클라우드팀에서 Spring Clould Sleuth라는 프로젝트로 시작했다가, Micrometer Tracing Project로 분리 통합되었다.
용어
마이크로미터 트레이싱에서 용어는 Dapper의 용어를 차용한다.
Span : 작업단위. 예를 들어 RPC 요청과 응답은 같은 스팬 일수도 있고, 다른 스팬 일수도 있다. 스팬은 각각의 ID, 데이터, 타임 스탬프, 키-밸류 어노테이션(태그)를 가진다. RPC 요청과 응답은 데이터가 다르므로 다른 스팬으로 분리할 수도 있고, 스팬을 유지하면서 여러개의 이벤트로 기록하기도 한다.
Trace: 트리처럼 구조를 가진 스팬의 잡합이다. 예를 들어 분산 시스템에서 일련의 요청이 전파된다면 같은 트레이스로 정의된다.
Annotation/Event : 특정 이벤트를 표현하는데 사용되는 부가 정보이다. 예를 들어 http method 등을 표시할 때도 활용된다.
Tracer: 트레이스와 스팬의 라이프사이클을 관리하는 라이브러리이다. 스팬을 시작하고, 중지하고, 스팬을 외부 시스템에 리포팅하고 익스포팅할 때 사용된다.
Tracing context: 분산시스템에서 트레이싱이 동작하도록 네트워크나 스레드로 전달되는 컨텍스트 (트레이스 ID, 스팬 ID 등)
Log correlation(상관관계) : 어플리케이션에서 발생한 로그에 트레이싱 컨텍스트는 주입된다. 이러한 로그들이 단일 저장소로 수집되고, 트레이스 ID로 그룹핑된다. 이를 통해 단일 비즈니스 작업대한 스팬들이 시간순으로 조합되어 로그간의 상관관계를 표현할 수 있다.
Latency analysis tools : 전체 트레이스의 스팬을 추출하여, 각 스팬들의 레이턴시 및 전체 비즈니스 로직의 레이턴시를 파악할 수 있다.
트레이싱 흐름
아래와 같은 이미지로 생각해보자. 일단 트레이스 ID가 없는 최초 요청을 받으면 Trace Id를 생성한다. 여기서는 요청과 응답을 하나의 Span으로 정의했다.
각자 색깔의 노트는 스팬를 표현한다. 그림에서는 7개의 스팬이 있다. 아래 노트는 스팬 ID는 D, 트레이스 ID는 X 클라이언트 전송이라는 이벤트를 표현한다.
Trace Id = X
Span Id = D
Client Sent
스팬은 RPC만에 한정되어서 표현될 필요는 없다. 서비스2, 서비스3, 서비스4에서는 새로운 내부 경계에서도 스팬을 시작했다. 스팬간의 부모-자식 관계를 표현하면 아래와 같을 것이다.