技術共有

Spring Cloud Sleuth で Zipkin を使用した分散トレース

2024-07-12

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

マイクロサービス アーキテクチャでは、サービス間の呼び出しリンクが非常に複雑になる可能性があるため、問題の特定とパフォーマンスの最適化が困難になります。この問題を解決するには、分散トレース システムを使用して、マイクロサービス アーキテクチャ全体のリクエスト リンクを監視および診断します。 Zipkin と Spring Cloud Sleuth は、こ​​の目標の達成に役立つ 2 つの非常に人気のあるツールです。

ジップキンとスプリング・クラウド・スルースとは何ですか?

  • ジプキンこれは、マイクロサービス アーキテクチャでタイミング データを収集し、システム パフォーマンスを分析および監視できるようにする分散追跡システムです。
  • 春の雲探偵は、Spring Boot アプリケーションに自動分散トレース機能を提供する Spring Cloud プロジェクトであり、Zipkin と統合できます。

なぜ分散トレースが必要なのでしょうか?

マイクロサービス アーキテクチャでは、ユーザーのリクエストが複数のサービスによって処理される場合があります。分散トレース システムがないと、問題が発生したときに、どのサービスに問題があるのか​​、どのサービス呼び出しリンクに問題があるのか​​を判断することが困難になります。分散トレーシング システムは次のことに役立ちます。

  • パフォーマンスのボトルネックを迅速に特定します。
  • サービス間の呼び出し関係を監視します。
  • システムのパフォーマンスを分析して最適化します。

Zipkin と Spring Cloud Sleuth を統合する

以下では、簡単な例を使用して、Zipkin と Spring Cloud Sleuth を Spring Boot アプリケーションに統合する方法を示します。

1. Spring Boot プロジェクトを作成する

まず、Spring Boot プロジェクトを作成する必要があります。 Spring Initializr を使用すると、プロジェクトをすばやく作成し、次の依存関係を追加できます。

  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のWebインターフェイスが表示されます。ここでは、各リクエストにかかった時間、通話リンクなどを含むすべての追跡情報を表示できます。

要約する

Zipkin と Spring Cloud Sleuth を統合することで、マイクロサービス アーキテクチャで分散トレースを簡単に実装できます。これは、問題を迅速に特定して解決するだけでなく、システムのパフォーマンスを最適化するのにも役立ちます。このブログが、これら 2 つの強力なツールの理解と使用に役立つことを願っています。

参考文献