ディストリビューティッド(分散)トレーシングの設定は、エージェントがサービス間でトレースコンテキストを伝播し、スパンイベントの収集を構成し、Infinite Tracingを有効にする方法を制御します。
ディストリビューティッド(分散)トレーシング
ディストリビューティッド(分散)トレーシングでは、リクエストが経由する分散システムのパスを見ることができます。Javaエージェントのバージョン7.4.0以降では、デフォルトでオンになっています。
設定ファイルでは、distributed_tracingセクションでこれを手動でオーバーライドできます。プレフィックス付きのシステムプロパティ(newrelic.config.distributed_tracing)または環境変数(NEW_RELIC_DISTRIBUTED_TRACING_ENABLED)を使用して、オーバーライドすることもできます。以下の例を参照してください。
ディストリビューティッド(分散)トレーシングの設定の詳細については、Javaアプリケーションのディストリビューティッド(分散)トレーシングを有効にするを参照してください。
これをfalseに設定し、ディストリビューティッド(分散)トレーシングを無効にします。たとえば、設定ファイルで、以下を使用します。
ディストリビューティッド(分散)トレーシングを無効にするその他のオプションは次のとおりです。
システムプロパティ:
-Dnewrelic.config.distributed_tracing.enabled=false
環境変数:
NEW_RELIC_DISTRIBUTED_TRACING_ENABLED=false
デフォルトで、エージェントのサポートされたバージョンは、newrelicヘッダーとディストリビューティッド(分散)トレーシング用のW3Cトレースコンテキストヘッダーの両方を使用します。newrelicディストリビューティッド(分散)トレーシングヘッダーを使用すると、W3Cトレースコンテキストヘッダーをサポートしない古いエージェントとの相互運用が可能になります。W3Cトレースコンテキストヘッダーをサポートするエージェントバージョンは、ディストリビューティッド(分散)トレーシング用のnewrelicヘッダーよりこのヘッダーを優先します。
newrelicヘッダーを使用しない場合、これをtrueに設定すると、エージェントがnewrelicヘッダーを除外し、ディストリビューティッド(分散)トレーシング用のW3Cトレースコンテキストヘッダーのみを使用するようになります。
たとえば、設定ファイルでnewrelicヘッダーを除外するには、次のものを使用します。
exclude_newrelic_header: true
システムプロパティを使用してnewrelicヘッダーを除外するには、次のものを使用します。
-Dnewrelic.config.distributed_tracing.exclude_newrelic_header=true
タイプ | 1(含む)から120(含む)までの間の整数 |
|---|
デフォルト | 120
|
|---|
root、remote_parent_sampled、およびremote_parent_not_sampledコンテキストで共有される、グローバルな適応型サンプリングのターゲットを設定します。このターゲットは、適応型サンプラーがキャプチャを試みる1分あたりのトレース数を制御します。コンテキストは、独自のコンテキスト固有のadaptive.sampling_targetを使用して、このグローバルなデフォルトをオーバーライドできます。
adaptive_sampling_target: 30
詳細については、サンプリングの設定:適応型サンプリングのターゲットをご覧ください。
タイプ | 文字列またはネストされたプロパティ |
|---|
デフォルト | adaptive
|
|---|
ルートコンテキスト(現在のサービスから発生するディストリビューティッド(分散)トレーシング)に使用されるサンプラーを設定します。設定可能な値は次のとおりです。
adaptive:New RelicのデフォルトのAdaptive Samplerを使用します。trace_id_ratio_based:トレースIDに基づいて、トレースの一定の割合をサンプリングします。always_on:すべてのルートトレースをサンプリングします。always_off:ルートトレースをサンプリングしません。
rootコンテキストに対してのみグローバルなadaptive_sampling_targetを上書きし、アダプティブサンプラーがキャプチャを試行する1分あたりのルートトレース数を設定します。
adaptive_sampling_target: 120
タイプ | フロート、0.0(含まない)から1.0(含む)までの間 |
|---|
デフォルト | なし |
|---|
必須 | はい |
|---|
トレースIDに基づいて、キャプチャするルートトレースの割合を指定します。「サンプリングの設定:トレースID比率ベースのサンプラー」をご覧ください。
重要
trace_id_ratio_basedサンプラーを使用する場合、ratioプロパティは必須です。比率が設定されていない場合、代わりにこのコンテキストではデフォルトのAdaptive Samplerが使用されます。
タイプ | 文字列またはネストされたプロパティ |
|---|
デフォルト | adaptive
|
|---|
リモートの親がサンプリングされたコンテキストに使用されるサンプラーを設定します。設定可能な値は次のとおりです。
adaptive:New RelicのデフォルトのAdaptive Samplerを使用します。trace_id_ratio_based:トレースIDに基づいて、トレースの一定の割合をサンプリングします。always_on:すべてのremote_parent_sampledトレースをサンプリングします。always_off:remote_parent_sampledトレースをサンプリングしません。
remote_parent_sampled: always_on
remote_parent_sampledコンテキストのみ、グローバルなadaptive_sampling_targetをオーバーライドします。
Adaptive Samplerは通常、アップストリームでサンプリングされたトレースをサンプリングするため(これらをサンプリングターゲットにはカウントしません)、この設定は通常、影響しません。一部のremote_parent_sampledトレースのみをサンプリングするには、trace_id_ratio_basedサンプラーを使用することをお勧めします。
タイプ | フロート、0.0(含まない)から1.0(含む)までの間 |
|---|
デフォルト | なし |
|---|
必須 | はい |
|---|
トレースIDに基づいて、キャプチャするアップストリームでサンプリングされたトレースの割合を指定します。「サンプリングの設定:トレースID比率ベースのサンプラー」をご覧ください。
重要
trace_id_ratio_basedサンプラーを使用する場合、ratioプロパティは必須です。比率が設定されていない場合、代わりにこのコンテキストではデフォルトのAdaptive Samplerが使用されます。
タイプ | 文字列またはネストされたプロパティ |
|---|
デフォルト | adaptive
|
|---|
リモート親がサンプリングされないコンテキスト(アップストリームサービスがこのトレースをサンプリングしないと決定した場合)に使用されるサンプラーを設定します。設定可能な値は次のとおりです。
adaptive:New RelicのデフォルトのAdaptive Samplerを使用します。trace_id_ratio_based:トレースIDに基づいて、トレースの一定の割合をサンプリングします。always_on:すべてのremote_parent_not_sampledトレースをサンプリングします。always_off:remote_parent_not_sampledトレースをサンプリングしません。
remote_parent_not_sampled: always_off
remote_parent_not_sampledコンテキストのみ、グローバルなadaptive_sampling_targetをオーバーライドします。
適応型サンプラーは通常、アップストリームサービスでサンプリングされなかったトレースをサンプリングしないため、この設定は一般的に効果がありません。一部のremote_parent_not_sampledトレースを確実にキャプチャするには、trace_id_ratio_basedサンプラーを選択してください。
タイプ | フロート、0.0(含まない)から1.0(含む)までの間 |
|---|
デフォルト | なし |
|---|
必須 | はい |
|---|
トレースIDに基づいて、キャプチャするトレースの割合を指定します。「サンプリングの設定:トレースID比率ベースのサンプラー」を参照してください。
重要
trace_id_ratio_basedサンプラーを使用する場合、ratioプロパティは必須です。比率が設定されていない場合、代わりにこのコンテキストではデフォルトのAdaptive Samplerが使用されます。
remote_parent_not_sampled:
注意
アップストリームの"サンプリングされていない"決定を上書きすると、一部のサービスのみが存在する断片化されたトレースが作成される可能性があります。アップストリームがサンプリングしなかった場合でも、ダウンストリームサービスのアクティビティを確認する特定の必要がある場合にのみ、このパターンを使用してください。
これらのサンプラーの仕組み、アダプティブサンプリングのターゲット、およびサンプリングコンテキストの詳細については、サンプリングの設定をご覧ください。実際の設定シナリオについては、サンプラー設定の例をご覧ください。
無限のトレース
Infinite Tracingをオンにするには、ディストリビューティッド(分散)トレーシングを有効にして、以下の追加設定を加えます。たとえば、言語エージェント:ディストリビューティッド(分散)トレーシングの設定を参照してください。
有効なInfinite Tracing トレース オブザーバーのホストエントリを取得する方法については、トレースオブザーバーを検索または作成するをご覧ください。
YAMLを介して設定することもできます:
host: YOUR_TRACE_OBSERVER_HOST
システムプロパティnewrelic.config.infinite_tracing.trace_observer.hostまたは環境変数NEW_RELIC_INFINITE_TRACING_TRACE_OBSERVER_HOSTを使用することもできます。
スパンイベント
スパンイベントはディストリビューティッド(分散)トレーシングに関してレポートされます。スパンイベントをレポートするには、ディストリビューティッド(分散)トレーシングを有効にする必要があります。
span_eventsセクションでスパンイベントを設定します。newrelic.config.span_eventsプリフィックス化システムプロパティを使用して、この設定を上書きできます。オプションには次のものが含まれます。
スパンイベントのレポートの有効化/無効化に使用します。
- エージェント収集サイクル中にキャプチャできるスパンイベントの数を決定します。Javaエージェント7.4.0以降で利用可能です。
- AIモニタリングのエージェントを構成する場合は、最大値
10000に設定します。 最大量のトレースのキャプチャを保証します
重要
スパンイベントの数を増やすと、エージェントのオーバーヘッドが増える可能性があります。
この設定は、スパンイベントのすべての属性をオンまたはオフにするのに使用できます。ルートレベルでattributes.enabledがfalseである場合は、このプロパティ (span_events.attributes.enabled) の設定にかかわらず、属性がスパンイベントに送られることはありません。
属性がスパンイベントに関して有効になっている場合は、このリストにあるすべての属性キーがspan_eventsでNew Relicに送信されます。詳しくはエージェント属性ルールを参照してください。
このリストにある属性キーのいずれも、スパンイベントでNew Relicに送信されることはありません。詳しくはエージェント属性ルールを参照してください。
クロスアプリケーショントレーサー
重要
クロスアプリケーショントレースは、エージェントバージョン7.4.0では非推奨となっており、将来のエージェントバージョンでは削除されます。
クロスアプリケーショントレーシングを使用する代わりに、ディストリビューティッド(分散)トレーシング機能を使用することをお勧めします。ディストリビューティッド(分散)トレーシングはクロスアプリケーショントレーシングの機能を向上させたものであり、大規模な分散システムに適しています。
クロスアプリケーショントレースオプションはcross_application_tracerセクションで設定します。newrelic.config.cross_application_tracerプリフィックス化システムプロパティを使用して、この設定を上書きできます。
クロスアプリケーショントレーシングは、Apache HttpClientライブラリを使用して、リクエストヘッダーとレスポンスヘッダーを外部呼び出しに追加します。これにより、他のNew Relicエージェントが監視するアプリケーションを呼び出す際のデータのパフォーマンスが向上します。