第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(); } }