37.2. 設定

AWS XRay トレーサーの設定プロパティーは次のとおりです。

オプションデフォルト説明

addExcludePatterns

 

パターンに一致する Camel メッセージのトレースを無効にする除外パターンを設定します。コンテンツは Set<String> で、キーは routeId に一致するパターンです。このパターンは Intercept のルールを使用します。

setTracingStrategy

NoopTracingStrategy

BeanDefinitionProcessDefinition などの呼び出されたプロセッサー定義を追跡するために、カスタム Camel InterceptStrategy を提供できるようにします。TraceAnnotatedTracingStrategy は、 クラスレベルで @XRayTrace アノテーションを含む .bean (…) または .process (…) を介して呼び出されたすべてのクラスを追跡します。

現在、Camel アプリケーションの分散トレースを提供するように AWS XRay トレーサーを設定できる方法は 1 つだけです。

37.2.1. Explicit

AWS XRay Tracer に関連付けられた特定の依存関係とともに、camel-aws-xray コンポーネントを POM に含めます。

AWS XRay サポートを明示的に設定するには、XRayTracer をインスタンス化し、camel コンテキストを初期化します。オプションで Tracer を指定することも、代わりに Registry または ServiceLoader を使用して暗黙的に検出することもできます。

XRayTracer xrayTracer = new XRayTracer();
// By default it uses a NoopTracingStrategy, but you can override it with a specific InterceptStrategy implementation.
xrayTracer.setTracingStrategy(...);
// And then initialize the context
xrayTracer.init(camelContext);

XML で XRayTracer を使用するには、AWS XRay トレーサー Bean を定義するだけです。Camel はそれを自動的に検出して使用します。

  <bean id="tracingStrategy" class="..."/>
  <bean id="aws-xray-tracer" class="org.apache.camel.component.aws.xray.XRayTracer" />
    <property name="tracer" ref="tracingStrategy"/>
  </bean>

デフォルトの NoopTracingStrategy の場合、エクスチェンジの作成と削除のみが追跡されますが、特定の Bean または EIP パターンの呼び出しは追跡されません。

37.2.2. 包括的なルート実行の追跡

複数のルート間でのエクスチェンジの実行を追跡するために、エクスチェンジの作成時に一意のトレース ID が生成され、対応する値がまだ使用できない場合はヘッダーに格納されます。このトレース ID は、処理された交換の一貫したビューを維持するために、新しいエクスチェンジにコピーされます。

AWS XRay トレースはスレッドローカルベースで機能するため、現在のサブ/セグメントを新しいスレッドにコピーし、AWS XRay のドキュメント で説明されているように設定する必要があります。したがって、Camel AWS XRay コンポーネントは、渡された AWS XRay Entity を新しいスレッドに設定するためにコンポーネントが使用する追加のヘッダーフィールドを提供し、実行されたどのルートとも無関係に見える新しいセグメントを公開するのではなく、ルートへの追跡データを保持します。

コンポーネントは、エクスチェンジのヘッダーにある次の定数を使用します。

ヘッダー説明

Camel-AWS-XRay-Trace-ID

呼び出されたルートの包括的なビューを提供する AWS XRay TraceID オブジェクトへの参照が含まれています

Camel-AWS-XRay-Trace-Entity

新しいスレッドにコピーされる実際の AWS XRay Segment または Subsegment への参照が含まれています。このヘッダーは、新しいスレッドが生成され、実行されたタスクが新しい無関係なセグメントを作成する代わりに、実行されたルートの一部として公開される場合に設定する必要があります。

AWS XRay Entity (つまり、SegmentSubsegment) はシリアル化できないため、他の JVM プロセスに渡すべきではないことに注意してください。