inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

Spring Cloud로 개발하는 마이크로서비스 애플리케이션(MSA)

Spring Cloud Sleuth + Zipkin을 이용한 Microservice의 분산 추적 ②

boot3 설정

1233

이북자

작성한 질문수 24

7

spring boot3 에서 slueth를 사용할 수 없다고 합니다.

 

삽질 끝에 비슷하게 구현이 되긴 했는데 조금 다른 점 때문에 강사님이 의도하신바가 맞는지 정확히는 모르겠네요.

혹~시 필요하신분이 계시다면 참고해주세요!

추가의존성

        <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>

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);
    }
}

 

몇 가지 글을 참고하여 세팅한거라 몇몇 의존성이나 설정은 없어도 될수도 있지만 거의 필요한거 같습니다.

그 외에 오류나 추적하는거는 동일하게 동작하는거 같습니다!

 

혹시 누군가 도움이 되시길!

 

 

 

 

spring-boot jpa 아키텍처 spring-cloud kafka msa rabbitmq

답변 2

0

아이티엔제이ITNJ

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

0

인프런 AI 인턴

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

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

kafka 업데이트 강의 듣고 시포요

0

85

1

강의 교안

0

73

1

마이크로서비스간 통신 시, 인증 처리

0

79

1

api gateway 에서 인증 처리

0

65

1

섹션 19 질문드립니다

0

53

1

강의 자료 업데이트

0

82

1

부하분산 강의 섹션

0

57

1

강의자료는 어디에서?

0

71

1

강의 자료는 어디서 다운 받을 수 있나요?

0

110

1

전체 사용자 조회시 오류

0

58

1

혹시 pk 외 별도의 id 를 부여한 이유가 있을까요 ??

0

110

2

학습 방향

0

95

2

카프카 커넥터 사용 목적 문의

0

85

2

kafka 강의

0

108

2

서비스 디스커버리 종류

0

87

2

강의 자료에 대해서 궁금해요

0

116

2

GlobalFilter, LoggingFilter가 동작하지 않습니다.

0

90

2

Kafka Source Connect 버전 에러

0

85

2

소스커넥터는 사용안한 거 맞죠?

0

81

2

강의자료 업데이트 문의

0

95

2

강의에서 BCryptPasswordEncoder 에 역할(5-2)

0

56

1

강의 업데이트 계획이 궁금합니다.

0

112

2

MSA 애플리케이션에 Spring Web과 Spring Data JPA를 사용하는 것이 바람직한지 궁금합니다. (MSA 설계와 관련된 질문입니다)

0

161

2

어떤 것이 업데이트 된 건가요?

0

164

2