Spring Cloud Sleuth 3.1.9

Spring Cloud Sleuth の最後のマイナーバージョンは 3.1 です。最新のコミットについては、3.1.x [GitHub] (英語) ブランチ を確認できます。このプロジェクトのコアは Micrometer トレース (英語) プロジェクトに移動され、インストルメンテーションは Micrometer (英語) とそれぞれのすべてのプロジェクトに移動されます (すべてのインストルメンテーションが 1 つのリポジトリで行われることはなくなりました)。

概要

Spring Cloud Sleuth は、分散トレースのための Spring Boot 自動構成を提供します。

機能

Sleuth は、開始するために必要なすべてを構成します。これには、トレースデータ(スパン)が報告される場所、保持するトレースの数(サンプリング)、リモートフィールド(バゲッジ)が送信されるかどうか、およびトレースされるライブラリが含まれます。

具体的には、Spring Cloud スルース…

  • トレース ID とスパン ID を Slf4J MDC に追加します。これにより、ログアグリゲーターの特定のトレースまたはスパンからすべてのログを抽出できます。

  • Spring アプリケーション(サーブレットフィルター、REST テンプレート、スケジュールされたアクション、メッセージチャネル、Feign クライアント)からの一般的な入力ポイントと出力ポイントを計測します。

  • spring-cloud-sleuth-zipkin が利用可能な場合、アプリは HTTP 経由で Zipkin (英語) -compatible トレースを生成し、報告します。デフォルトでは、それらはローカルホスト (ポート 9411) 上の Zipkin コレクターサービスに送信されます。spring.zipkin.baseUrl を使用してサービスの場所を構成します。

Spring Boot 構成

Sleuth をクラスパスに追加します。

Maven

<dependencyManagement>
    <dependencies>
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-dependencies</artifactId>
            <version>${release.train.version}</version>
            <type>pom</type>
            <scope>import</scope>
        </dependency>
    </dependencies>
</dependencyManagement>
<dependencies>
    <dependency>
        <groupId>org.springframework.cloud</groupId>
        <artifactId>spring-cloud-starter-sleuth</artifactId>
    </dependency>
</dependencies>

Gradle

buildscript {
    dependencies {
        classpath "io.spring.gradle:dependency-management-plugin:0.5.2.RELEASE"
    }
}

apply plugin: "io.spring.dependency-management"

dependencyManagement {
     imports {
          mavenBom "org.springframework.cloud:spring-cloud-dependencies:${releaseTrainVersion}"
     }
}
dependencies {
    compile 'org.springframework.cloud:spring-cloud-starter-sleuth'
}

Spring Cloud Sleuth がクラスパス上にある限り、Spring Boot アプリケーションはトレースデータを生成します。

@SpringBootApplication
@RestController
public class Application {

  private static Logger log = LoggerFactory.getLogger(DemoController.class);

  @RequestMapping("/")
  public String home() {
    log.info("Handling home");
    return "Hello World";
  }

  public static void main(String[] args) {
    SpringApplication.run(Application.class, args);
  }

}

このアプリを実行してから、ホームページにアクセスしてください。traceId と spanId がログに表示されます。このアプリが別のアプリを呼び出す場合(例: RestTemplate を使用)、ヘッダーでトレースデータを送信し、受信者が別の Sleuth アプリである場合、そこでトレースが続行されるのを確認します。

  • ハンドラーでリクエストを明示的に記録する代わりに、logging.level.org.springframework.web.servlet.DispatcherServlet=DEBUG を設定できます

  • Sleuth のデフォルトは、レート制限されたサンプラーです。つまり、1 秒あたり最大 1000 件のトランザクションをサンプリングします。

  • (たとえば) spring.application.name=bar を設定して、サービス名とトレース ID およびスパン ID を表示します。

Spring Initializr

プロジェクトのクイックスタート

サポートの取得

Tanzu Spring は、1 つのシンプルなサブスクリプションで OpenJDK ™、Spring、Apache Tomcat ® のサポートとバイナリを提供します。

さらに学習したい方に (英語)

今後のイベント

Spring コミュニティで今後開催されるすべてのイベントをチェックしてください。

すべて表示 (英語)