ZIpkin을 사용하여 Spring Boot 응용 프로그램 추적

5707 단어 SpringBootzipkin

개요


Zipkin을 만졌기 때문에 도입 방법을 적어두세요
객체 추적 응용 프로그램은 SpringBoot입니다.

가져오기 방법


최소 구성으로, 어쨌든 이동하는 곳을 목표로

Zipkin 서버 구축


Zipkin 서버를 시작합니다.
docker run -d -p 9411:9411 openzipkin/zipkin
방문http://localhost:9411/ 아래 화면을 표시하면 됩니다!

어플리케이션 구현


의존성spring-cloud-sleuth-zipkinspring-cloud-starter-sleuthguild.gradle
dependencies {
    compileOnly('org.projectlombok:lombok')
    annotationProcessor('org.projectlombok:lombok')

    implementation 'org.springframework.boot:spring-boot-starter-web'
    implementation 'org.springframework.cloud:spring-cloud-sleuth-zipkin'
    implementation 'org.springframework.cloud:spring-cloud-starter-sleuth'
}
HTTP 통신에서 RestTemplate를 사용합니다.
Jipkin과 합작하기 위해서는 RestTemplate를 Bean에 등록해야 합니다
@Configuration
public class ApplicationConfiguration {
    @Bean
    public RestTemplate myRestTemplate() {
        return new RestTemplateBuilder()
                .rootUri("http://localhost:8080")
                .build();
    }
}
응용 프로그램의 본체는 다음과 같다./proxy/hello에서 받은 요청은 /hello에서proxy만 있으면 되는 API입니다.
@RestController
@RequiredArgsConstructor
public class SampleController {
    private final RestTemplate restTemplate;

    @GetMapping("/proxy/hello")
    public String proxyToHello() {
        return restTemplate.getForObject("/hello", String.class);
    }

    @GetMapping("/hello")
    public String hello() {
        return "Hello zipkin.";
    }
}
마지막은property입니다.
application.yml
spring:
  zipkin:
    # zipkinサーバのURLを指定
    base-url: "http://localhost:9411/"
    # Zipkinを有効化(デフォルトでも有効)
    enabled: true
    sender:
      # 情報の送信方法を指定
      type: web
  application:
    # アプリケーション名を指定
    name: zipkin-sample
  sleuth:
    sampler:
      # 秒間の送信数
      rate: 10
bootRun에서 응용 프로그램을 시작한 후 종료

동작 확인


그러면 응용 프로그램에 요청을 보내보도록 하겠습니다.
$ curl localhost:8080/proxy/hello
Hello zipkin.
Jipkin의 UI에서 보면...

🎉🎉🎉🎉

후기


실제 운용할 때, Jipkin이 데이터를 영구화할 수 있다는 것을 의식해야 한다
어쨌든 어떤 느낌인지 만져봐도 돼요.
시간 나면 이런 것도 해보고 싶어요.
  • 느린 처리 시간만 보내기
  • 임의 처리 추적
  • 좋은 웹페이지 즐겨찾기