第19章 Eclipse MicroProfile
19.1. Eclipse MicroProfile OpenTracing を使用したリクエストのトレース
Eclipse Microprofile OpenTracing は、テクノロジープレビューとしてのみ提供されます。テクノロジープレビューの機能は、Red Hat の本番環境のサービスレベルアグリーメント (SLA) ではサポートされず、機能的に完全ではないことがあるため、Red Hat は本番環境での使用は推奨しません。テクノロジープレビューの機能は、最新の技術をいち早く提供して、開発段階で機能のテストやフィードバックの収集を可能にするために提供されます。
テクノロジープレビュー機能のサポート範囲は、Red Hat カスタマーポータルの「テクノロジプレビュー機能のサポート範囲」を参照してください。
Eclipse Microprofile OpenTracing 機能は microprofile-opentracing-smallrye
サブシステムによって提供されます。このサブシステムには Jaeger Java Client がデフォルトのトレーサーとして同梱され、JAX-RS や CDI など Java EE アプリケーションで一般的に使用されるコンポーネントのインスツルメンテーションライブラリーのセットを提供します。このサブシステムに関する詳細は、『設定ガイド』の「MicroProfile OpenTracing SmallRye サブシステムでのリクエストのトレース」を参照してください。
これ以降のセクションでは、CDI bean およびその他の JAX-RS エンドポイントのトレースをカスタマイズする方法や、カスタムトレーサーの実装方法について説明します。
19.1.1. CDI bean のトレースの有効または無効化
Eclipse MicroProfile OpenTracing 仕様で定義されているように、クラスまたはメソッドレベルで org.eclipse.microprofile.opentracing.Traced
アノテーションが存在すると CDI bean はトレースされます。アノテーションの値を false
に設定するとトレースを無効にできます。同様に、そのアノテーションの operationName
パラメーターを指定すると、カスタムの操作名を設定できます。セマンティックは MicroProfile OpenTracing 仕様 によって定義されます。
以下の例は、CDI 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() { } }
19.1.2. JAX-RS エンドポイントのトレースの有効または無効化
JAX-RS エンドポイントは、サーバー設定に microprofile-opentracing-smallrye
サブシステムが存在する場合はデフォルトでトレースされます。
JAX-RS エンドポイントのトレースを無効にするには、「CDI bean のトレースの有効または無効化
」に記載されているとおりに、クラスまたはメソッドレベルで JAX-RS エンドポイントに @Traced(false) アノテーションを追加します。
19.1.3. カスタムトレーサーの実装
デフォルトの Jaeger Java 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(); } }