| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 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 | 29 | 30 | 31 |
Tags
- 안드로이드 스튜디오
- Spring
- CSRF
- 컨텍스트 맵
- 헥사고날 아키텍처
- 공통 언어
- Hexagonal Architecture
- 백준
- 헥사고날
- 클린 아키텍처
- subdomain
- 이벤트 기반
- spring boot
- Ubiquitous Language
- clean architecture
- DTO Projection
- Domain Driven
- Rabbit MQ
- Spring Cloud
- EC2
- rabbitmq
- android studio
- Domain-Driven
- Thymeleaf
- BOJ
- JPA
- nopasswd
- Context map
- hexagonal
- event
Archives
- Today
- Total
취미겸생업
[Spring boot] Spring Cloud 분산 추적 (Micrometer, Zipkin) 본문
SMALL
Spring Cloud Micrometer 및 Zipkin
분산추적 개념
MSA와 같은 분산 시스템에서 서비스 간의 요청 흐름을 추적하고 모니터링
각 서비스의 호출 관계와 성능을 시각화하여 각 서비스의 호출 흐름을 명확히 파악하고, 성능 병목이나 오류를 빠르게 진단
주요 개념

분산 추적 단위 - 트레이스(Trace) : 하나의 요청이 시작부터 끝까지 각 서비스를 거치는 전체 흐름
- 하나의 트레이스는 여러 개의 스팬으로 구성
- 분산 시스템에서 클라이언트의 요청이 여러 서비스로 전달될 때, 각 서비스 호출이 트레이스의 일부로 기록
- 트레이스 ID는 각 스팬에 공통으로 부여되며, 이를 통해 전체 요청 흐름을 추적 가능
- 스팬(Span) : 가장 작은 단위로, 특정 서비스 내에서의 개별 작업 또는 요청
- 시작 시간과 종료 시간을 기록하여 작업의 지속 시간을 나타냄
- 고유한 스팬 ID를 가지며, 이는 트레이스 ID와 함께 특정 작업을 식별하는 데 사용
- 부모-자식 관계를 가질 수 있으며, 이를 통해 호출 계층 구조를 표현
- 메타데이터(태그, 로그, 이벤트 등)를 추가하여 상세한 정보를 기록
- 컨텍스트(Context) : 요청이 서비스 간에 전달될 때 함께 전파되어, 각 서비스가 요청의 전체 흐름에 대한 정보를 가질 수 있게 함
- 트레이스 ID, 스팬 ID, 부모 스팬 ID 등의 정보를 포함하여 각 서비스가 요청의 출처와 경로를 추적할 수 있도록 함
- 서비스 호출 간에 컨텍스트를 유지함으로써, 분산 시스템 전체에서 일관된 추적이 가능
- 트레이스(Trace) : 하나의 요청이 시작부터 끝까지 각 서비스를 거치는 전체 흐름
Spring 기반 애플리케이션에서 메트릭을 수집하고 모니터링하기 위한 라이브러리
각 서비스의 성능 지표를 수집하고, Prometheus, Grafana 등과 연동하여 시각화
분산 추적을 위한 기능을 제공하여 서비스 간의 호출 흐름을 추적
Zipkin이란

- 트레이스 데이터를 수집하고 시각화하는 분산 추적 시스템
- 각 서비스의 트레이스와 스팬 데이터를 저장하고, 이를 통해 호출 흐름을 시각화
- 특정 트레이스나 스팬을 검색하고 필터링하여 문제를 진단 가능
Zipkin 서버 설정
Docker를 통해 실행
docker run -d -p 9411:9411 openzipkin/zipkinzipkin 대시보드 사용
- http://localhost:9411 URL을 통해 대시보드에 접속
Micrometer란
- 기존 분산 추적에 사용되던 Sleuth를 대체하는 라이브러리 (Spring boot 3.x 이후)
- Spring 기반 애플리케이션에서 메트릭을 수집하고 모니터링하기 위한 라이브러리
- 각 서비스의 성능 지표를 수집하고, Prometheus, Grafana 등과 연동하여 시각화
- 분산 추적을 위한 기능도 제공하여 서비스 간의 호출 흐름을 추적 가능
Micromter 클라이언트 설정
Micrometer를 통해 Zipkin에 트레이스 정보를 전달해 시각화 된 Metric을 확인할 수 있다
build.gradle
dependencies { # 메트릭 및 트레이싱 수집을 위한 기초 인프라 implementation 'org.springframework.boot:spring-boot-starter-actuator' # 핵심 엔진: 고유한 Trace ID / Span ID 발급 및 관리 implementation 'io.micrometer:micrometer-tracing-bridge-brave' # 서비스 간 통신: OpenFeign 호출 시 HTTP 헤더에 Trace ID 자동 주입 implementation 'io.github.openfeign:feign-micrometer' # 리포터: 수집 완료된 추적 데이터를 외부 Zipkin 서버로 전송 implementation 'io.zipkin.reporter2:zipkin-reporter-brave' }application.yml
spring: application: name: product-service server: port: 19092 eureka: client: service-url: defaultZone: http://localhost:19090/eureka/ management: zipkin: tracing: endpoint: "http://localhost:9411/api/v2/spans" # Zipkin 서버 호스트 주소 tracing: sampling: probability: 1.0 # 데이터 샘플링(추적) 비율, 기본 값은 0.1
LIST
'IT > Spring Boot' 카테고리의 다른 글
| [Spring boot] RabbitMQ (0) | 2026.07.27 |
|---|---|
| [Spring boot] Spring Cloud Gateway (API 게이트웨이) (0) | 2026.07.03 |
| [Spring boot] Spring Cloud Config (0) | 2026.07.03 |
| [Spring boot] Resilience4j 서킷 브레이커 (0) | 2026.07.01 |
| [Spring boot] Spring Cloud 로드밸런싱 (0) | 2026.06.30 |
