작성
·
898
·
수정됨
6
spring boot3 에서 slueth를 사용할 수 없다고 합니다.
삽질 끝에 비슷하게 구현이 되긴 했는데 조금 다른 점 때문에 강사님이 의도하신바가 맞는지 정확히는 모르겠네요.
첫 요청의 traceID와 spanID가 다른 점
혹~시 필요하신분이 계시다면 참고해주세요!
추가의존성
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-actuator</artifactId>
</dependency>
<dependency>
<groupId>io.micrometer</groupId>
<artifactId>micrometer-tracing-bridge-brave</artifactId>
</dependency>
<dependency>
<groupId>io.zipkin.reporter2</groupId>
<artifactId>zipkin-reporter-brave</artifactId>
</dependency>
<dependency>
<groupId>io.micrometer</groupId>
<artifactId>micrometer-registry-prometheus</artifactId>
</dependency>
<dependency>
<groupId>io.github.openfeign</groupId>
<artifactId>feign-micrometer</artifactId>
</dependency>
기존 스타터 sleuth, zipkin 의존성 제거
yml 변경점
server:
port: 0
spring:
application:
name: order-service
# spring boot 3.0 이전 zipkin, sleuth 설정
# zipkin:
# base-url: http://127.0.0.1:9411
# enabled: true
# sleuth:
# sampler:
# probability: 1.0
jpa:
hibernate:
ddl-auto: update
h2:
console:
enabled: true
settings:
web-allow-others: true
path: /h2-console
datasource:
driverClassName: org.h2.Driver
url: jdbc:h2:mem:testdb
## 추가
cloud:
openfeign:
micrometer:
enabled: true
eureka:
instance:
instance-id: ${spring.cloud.client.hostname}:${spring.application.instance_id:${random.value}}
client:
register-with-eureka: true
fetch-registry: true
service-url:
defaultZone: http://localhost:8761/eureka
management:
endpoint:
health:
show-details: always
endpoints:
web:
exposure:
include: refresh, health, beans, busrefresh, info, metrics, prometheus
## 추가
tracing:
sampling:
probability: 1.0
propagation:
type: b3
zipkin:
tracing:
endpoint: http://localhost:9411/api/v2/spans
logging:
level:
com.example.orderservice: DEBUG
## 추가
pattern:
level: "%5p [%X{traceId:-},%X{spanId:-}]"
추가 주석 부분만 추가
Config Bean 추가
@Configuration
public class MoniterConfig {
@Bean
public Capability capability(final MeterRegistry registry) {
return new MicrometerCapability(registry);
}
}
이 Config 를 추가하지 않으시면, 요청 마다 TraceID가 달라집니다.
액츄에이터도 필수
몇 가지 글을 참고하여 세팅한거라 몇몇 의존성이나 설정은 없어도 될수도 있지만 거의 필요한거 같습니다.
그 외에 오류나 추적하는거는 동일하게 동작하는거 같습니다!
혹시 누군가 도움이 되시길!
답변 2
0
0
안녕하세요, 인프런 AI 인턴입니다.
Spring Boot 3에서 Sleuth를 기본적으로 사용하는 방법에 대해서 질문주셨군요. 혹시 Sleuth 대신에 Zipkin과 함께 OpenZipkin Brave를 이용한 추적을 구현하신 것 같습니다.
Spring Boot 3에서는 Micrometer Tracing을 사용하여 추적 기능을 활용할 수 있습니다. 이를 위해 다음과 같은 의존성이 필요합니다.
org.springframework.boot:spring-boot-starter-actuator
io.micrometer:micrometer-tracing-bridge-brave
io.zipkin.reporter2:zipkin-reporter-brave
이러한 의존성은 Spring Boot의 Actuator 기능과 함께 사용되며, 추가로 management.tracing.sampling.probability
설정을 1.0
로 설정하여 모든 요청을 추적하도록 할 수 있습니다. 요청마다 TraceID가 다른 문제는 MoniterConfig
클래스에 Capability
빈을 추가함으로써 해결하신 것으로 보입니다.
추가로, logging.pattern.level
을 설정함으로써 로그에 현재 추적 및 스팬 ID를 포함할 수 있습니다.
올려주신 설정 방법은 다른 분들이 Spring Boot 3에서 추적 기능을 활용하는 데 많은 도움이 될 것 같습니다. 강사님이 의도한 바와 정확히 일치하는지는 강사님의 원래 강의 내용과 비교해볼 필요가 있으나, 기본적인 트레이싱 구성을 제공하는 것으로 보입니다.
더 자세한 정보는 공식 Spring Boot 레퍼런스 문서에서 확인할 수 있습니다:
Spring Boot Reference Documentation - Tracing 실습 시작하기
언제나 추가적인 조언이나 질문이 있다면 도와드리겠습니다. 감사합니다, 이북자님.