第20章 Eclipse MicroProfile

20.1. Eclipse MicroProfile OpenTracing を使用したリクエストのトレース

重要

Eclipse Microprofile OpenTracing は、テクノロジープレビューとしてのみ提供されます。テクノロジープレビューの機能は、Red Hat の本番環境のサービスレベルアグリーメント (SLA) ではサポートされず、機能的に完全ではないことがあるため、Red Hat は本番環境での使用は推奨しません。テクノロジープレビューの機能は、最新の製品機能をいち早く提供して、開発段階で機能のテストを行いフィードバックを提供していただくことを目的としています。

テクノロジープレビュー機能のサポート範囲は、Red Hat カスタマーポータルの テクノロジープレビュー機能のサポート範囲 を参照してください。

Eclipse Microprofile OpenTracing 機能は microprofile-opentracing-smallrye サブシステムによって提供されます。このサブシステムには Jaeger Client がデフォルトのトレーサーとして同梱され、Jakarta RESTful Web Services や Contexts and Dependency Injection など Jakarta EE アプリケーションで一般的に使用されるコンポーネントのインスツルメンテーションライブラリーのセットを提供します。このサブシステムに関する詳細は、設定ガイドMicroProfile OpenTracing SmallRye サブシステムでのリクエストのトレースを参照してください。

これ以降のセクションでは、Jakarta Context and Dependency Injection beans およびその他の Jakarta RESTful Web Services エンドポイント のトレースをカスタマイズする方法や、カスタムトレーサー の実装方法について説明します。

20.1.1. jakarta コンテキストおよび依存関係インジェクション Bean のトレースの有効化または無効化

Eclipse MicroProfile OpenTracing 仕様で定義されているように、クラスまたはメソッドレベルで org.eclipse.microprofile.opentracing.Traced アノテーションが存在すると Jakarta Contexts and Dependency Injection beans はトレースされます。アノテーションの値を false に設定するとトレースを無効にできます。同様に、そのアノテーションの operationName パラメーターを指定すると、カスタムの操作名を設定できます。セマンティックは MicroProfile OpenTracing 仕様 によって定義されます。

以下の例は、Jakarta Contexts および Dependency Injection Bean のトレースを設定する方法を示しています。トレースはメソッドレベルで指定できることに注意してください。

import org.eclipse.microprofile.opentracing.Traced;

@Traced
public class TracedBean {
    public void doSomething() {
    }

    @Traced(true)
    public void doSomethingTraced() {
    }

    @Traced(false)
    public void doSomethingNotTraced() {
    }
}

以下の例は、このトレースポイントの OpenTracing Span の操作名を指定する方法を表しています。

import org.eclipse.microprofile.opentracing.Traced;

@Traced(operationName = "my-custom-class-operation-name")
public class CustomOperationNameBean {

    @Traced(operationName = "my-custom-method-operation-name")
    public void doSomething() {
    }

    @Traced
    public void doSomethingElse() {
    }
}

20.1.2. Jakarta RESTful Web サービスエンドポイントのトレースの有効または無効化

Jakarta RESTful Web Services エンドポイントは、サーバー設定に microprofile-opentracing-smallrye サブシステムが存在する場合はデフォルトでトレースされます。

Jakarta RESTful Web Services エンドポイントのトレースを無効にするには、Jakarta Context and Dependency Injection Beans のトレースの有効化または無効化 で説明されているように、クラスまたはメソッドレベルで Jakarta RESTful Web Services エンドポイントに @Traced(false) を追加します。

20.1.3. カスタムトレーサーの実装

デフォルトの Jaeger Client よりも複雑なトレーサーが必要な場合は、希望の状態の Tracer を返す TracerResolver を実装して独自のトレーサーを提供することができます。この場合、デフォルトのトレーサーは使用されません

以下の例は、Tracer クラスのカスタム実装を返す TracerResolver の新しい実装を作成する方法を表しています。

import io.opentracing.Tracer;
import io.opentracing.contrib.tracerresolver.TracerResolver;
import org.myproject.opentracing.CustomTracer;

public static class MyTracerResolver extends TracerResolver {
    @Override
    protected Tracer resolve() {
        return new CustomTracer();
    }
}