Spring Cloud Sleuth will not work with Spring Boot 3.x onward. Please check Spring Cloud Sleuth 3.1 Migration Guide.

Spring Cloud Sleuth ํ”„๋กœ์ ํŠธ๋Š” ๋”์ด์ƒ Spring Boot 3.x ์™€์˜ ํ˜ธํ™˜์„ฑ์„ ์ง€์›ํ•˜์ง€ ์•Š๋Š”๋‹ค. ๋ถ„์‚ฐ ์ถ”์  ๋ฐ์ดํ„ฐ ๋ชจ๋ธ์„ ์ ์šฉํ•˜๊ธฐ ์œ„ํ•œ ์ž๋™ ๊ตฌ์„ฑ์ด Spring Cloud Sleuth ์—์„œ Spring Boot๋กœ ์ด๋™๋˜์–ด์žˆ๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค. Spring Boot 3.x ์—์„œ๋Š” ๋”์ด์ƒ Spring Cloud Sleuth๋Š” ํ•„์š”ํ•˜์ง€ ์•Š์œผ๋ฉฐ Micrometer Tracing์— ๋Œ€ํ•œ ์„ค์ •์„ ์ˆ˜ํ–‰ํ•˜๋ฉด ๋œ๋‹ค.

build.gradle
plugins { id 'org.springframework.boot' version '3.1.3' id 'io.spring.dependency-management' version '1.1.3' } dependencies { implementation 'org.springframework.boot:spring-boot-starter-actuator' implementation 'io.micrometer:micrometer-tracing-bridge-brave' implementation 'io.zipkin.reporter2:zipkin-reporter-brave' developmentOnly 'org.springframework.boot:spring-boot-docker-compose' // Optional }

AutoConfigure Micrometer Tracing

์Šคํ”„๋ง ๋ถ€ํŠธ ์ž๋™ ๊ตฌ์„ฑ์— ํฌํ•จ๋˜์–ด ์žˆ๋Š” BraveAutoConfiguration๊ณผ ZipkinAutoConfiguration๊ฐ€ ์ž๋™์œผ๋กœ ์ ์šฉ๋˜๋ฏ€๋กœ ์•„๋ž˜์™€ ๊ฐ™์ด TracingProperties ์†์„ฑ์„ ์›ํ•˜๋Š”๋Œ€๋กœ ์ ์šฉํ•˜๋ฉด ๋œ๋‹ค. ๋ณธ ๊ธ€์—์„œ๋Š” Zipkin๊ณผ์˜ ์—ฐ๋™์„ ์œ„ํ•ด์„œ ๊ธฐ๋ณธ์ ์œผ๋กœ ์‚ฌ์šฉ๋˜๋Š” B3 ๋ฐฉ์‹์„ ์ง€์ •ํ•˜์˜€๋‹ค.

application.yml
management.tracing: propagation.type: b3 sampling.probability: 1.0 logging.pattern.level: "%5p [${spring.application.name:},%X{traceId:-},%X{spanId:-}]"

Automatic Context Propagation for WebFlux

Spring Cloud Gateway์™€ ๊ฐ™์ด WebFlux ๊ธฐ๋ฐ˜์œผ๋กœ ๋™์ž‘ํ•˜๋Š” ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์—์„œ๋Š” Project Reactor 3์˜ Context Propagation์— ๋Œ€ํ•œ ์ž๋™ ๊ตฌ์„ฑ์„ ์œ„ํ•ด์„œ ์•„๋ž˜์™€ ๊ฐ™์ด Hooks.enableAutomaticContextPropagation์„ ๋ฉ”์ธ ํ•จ์ˆ˜์—์„œ ํ˜ธ์ถœํ•ด์•ผํ•œ๋‹ค. ๋” ์ž์„ธํ•œ ๋‚ด์šฉ์€ Context Propagation with Project Reactor 3 - Unified Bridging between Reactive and Imperative๋ฅผ ์ฐธ๊ณ ํ•˜๋ฉด ๋œ๋‹ค.

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import reactor.core.publisher.Hooks;

@SpringBootApplication
public class Application {
    public static void main(String[] args) {
        SpringApplication.run(Application.class, args);
        Hooks.enableAutomaticContextPropagation();
    }
}