기술나눔

Spring Cloud Sleuth와 함께 Zipkin을 사용한 분산 추적

2024-07-12

한어Русский языкEnglishFrançaisIndonesianSanskrit日本語DeutschPortuguêsΕλληνικάespañolItalianoSuomalainenLatina

마이크로서비스 아키텍처에서는 서비스 간의 호출 링크가 매우 복잡할 수 있으므로 문제 위치를 파악하고 성능을 최적화하기가 어렵습니다. 이 문제를 해결하기 위해 분산 추적 시스템을 사용하여 마이크로서비스 아키텍처 전체의 요청 링크를 모니터링하고 진단할 수 있습니다. Zipkin과 Spring Cloud Sleuth는 이 목표를 달성하는 데 도움이 되는 두 가지 매우 인기 있는 도구입니다.

Zipkin과 Spring Cloud Sleuth란 무엇인가요?

  • 지킨이는 시스템 성능을 분석하고 모니터링할 수 있도록 마이크로서비스 아키텍처에서 타이밍 데이터를 수집하는 데 도움이 되는 분산 추적 시스템입니다.
  • 스프링 클라우드 슬루스Spring Boot 애플리케이션에 자동화된 분산 추적 기능을 제공하고 Zipkin과 통합될 수 있는 Spring Cloud 프로젝트입니다.

분산 추적이 필요한 이유는 무엇입니까?

마이크로서비스 아키텍처에서는 사용자 요청이 여러 서비스에 의해 처리될 수 있습니다. 분산 추적 시스템이 없으면 문제가 발생했을 때 어떤 서비스에 문제가 있는지, 어떤 서비스 호출 링크에 문제가 있는지 파악하기 어렵습니다. 분산 추적 시스템은 다음과 같은 도움을 줄 수 있습니다.

  • 성능 병목 현상을 신속하게 찾아냅니다.
  • 서비스 간의 호출 관계를 모니터링합니다.
  • 시스템 성능을 분석하고 최적화합니다.

Zipkin과 Spring Cloud Sleuth 통합

아래에서는 간단한 예를 사용하여 Spring Boot 애플리케이션에 Zipkin과 Spring Cloud Sleuth를 통합하는 방법을 보여줍니다.

1. 스프링 부트 프로젝트 생성

먼저 Spring Boot 프로젝트를 생성해야 합니다. Spring 초기화를 사용하면 프로젝트를 신속하게 생성하고 다음 종속성을 추가할 수 있습니다.

  1. <dependencies>
  2. <dependency>
  3. <groupId>org.springframework.boot</groupId>
  4. <artifactId>spring-boot-starter-web</artifactId>
  5. </dependency>
  6. <dependency>
  7. <groupId>org.springframework.cloud</groupId>
  8. <artifactId>spring-cloud-starter-sleuth</artifactId>
  9. </dependency>
  10. <dependency>
  11. <groupId>org.springframework.cloud</groupId>
  12. <artifactId>spring-cloud-starter-zipkin</artifactId>
  13. </dependency>
  14. </dependencies>

2. 애플리케이션 구성

존재하다application.properties파일에 다음 구성을 추가합니다.

  1. spring.application.name=my-service
  2. server.port=8080
  3. spring.zipkin.base-url=http://localhost:9411
  4. spring.sleuth.sampler.probability=1.0
  • spring.zipkin.base-urlZipkin 서버의 주소를 지정합니다.
  • spring.sleuth.sampler.probability모든 추적 데이터를 기록하려면 1.0으로 설정합니다.

3. 샘플 코드 작성

서비스 호출을 시뮬레이션하기 위한 간단한 REST 컨트롤러를 만듭니다.

  1. import org.springframework.web.bind.annotation.GetMapping;
  2. import org.springframework.web.bind.annotation.RestController;
  3. import org.springframework.web.client.RestTemplate;
  4. @RestController
  5. public class MyController {
  6. private final RestTemplate restTemplate;
  7. public MyController(RestTemplate restTemplate) {
  8. this.restTemplate = restTemplate;
  9. }
  10. @GetMapping("/hello")
  11. public String hello() {
  12. String response = restTemplate.getForObject("http://localhost:8081/greeting", String.class);
  13. return "Hello, " + response;
  14. }
  15. }

이 예에서는/hello엔드포인트가 다른 서비스를 호출합니다./greeting끝점.

4. Zipkin 서버 시작

Docker를 통해 Zipkin 서버를 빠르게 시작할 수 있습니다.

docker run -d -p 9411:9411 openzipkin/zipkin

5. 애플리케이션 실행

Spring Boot 애플리케이션을 시작하고 다음을 방문하세요.http://localhost:8080/hello 끝점. 이 시점에서 Spring Cloud Sleuth는 요청에 대한 추적 정보를 자동으로 생성하고 이 정보를 Zipkin 서버로 보냅니다.

6. 추적정보 보기

브라우저를 열고 방문하세요.http://localhost:9411 , Zipkin의 웹 인터페이스가 표시됩니다. 여기에서 각 요청에 소요된 시간, 통화 링크 등을 포함한 모든 추적 정보를 볼 수 있습니다.

요약하다

Zipkin과 Spring Cloud Sleuth를 통합함으로써 마이크로서비스 아키텍처에서 분산 추적을 쉽게 구현할 수 있습니다. 이는 문제를 신속하게 찾아 해결하는 데 도움이 될 뿐만 아니라 시스템 성능을 최적화하는 데에도 도움이 됩니다. 이 블로그가 여러분이 이 두 가지 강력한 도구를 이해하고 사용하는 데 도움이 되기를 바랍니다.

참고자료