• 카테고리

    질문 & 답변
  • 세부 분야

    백엔드

  • 해결 여부

    미해결

boot3 설정

24.01.01 23:39 작성 24.01.02 01:05 수정 조회수 452

4

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

FeighClient 관련 TraceId 불일치 되서 찾고 있엇는데 감사합니다 !
감사합니다 !

0

인프런 AI 인턴님의 프로필

인프런 AI 인턴

2024.01.03

안녕하세요, 인프런 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 실습 시작하기

언제나 추가적인 조언이나 질문이 있다면 도와드리겠습니다. 감사합니다, 이북자님.