ActivitySource.CreateActivity と ActivitySource.StartActivity の動作の変更
ActivitySource.CreateActivity API と ActivitySource.StartActivity API は、インスタンスを作成する必要があることを決定する登録済みリスナーがある場合にのみ、Activity を返します。 これは一般にサンプリングと呼ばれます。
System.Diagnostics.ActivitySamplingResult 列挙型は、可能なサンプリング決定を定義します。
親なしで Activity
を作成する場合は、ActivitySamplingResult
が Activity
を作成するかどうかを決定し、その後 Recorded
プロパティと IsAllDataRequested
プロパティの設定方法を決定します。
活動サンプリング結果 | 作成されたアクティビティ | 活動が記録されました | Activity.IsAllDataRequested |
---|---|---|---|
None | いいえ | ||
PropagationData | はい | 誤り | False |
AllData | はい | 誤り | 真 |
AllDataAndRecorded | はい | 正しい | 真 |
親を含む Activity
を作成することもできます。 親は同じプロセス内にあるか、現在のプロセスに伝達されたリモート親である可能性があります。
以前の動作
以前は、Recorded
としてマークされた親を含む PropagationData
として Activity
を作成する場合、Recorded
プロパティと IsAllDataRequested
プロパティは次のように設定されていました。
活動サンプリング結果 | 作成されたアクティビティ | 活動が記録されました | Activity.IsAllDataRequested (すべてのデータが要求されているかを確認) |
---|---|---|---|
PropagationData | はい | 真実 | False |
新しい動作
.NET 10 以降では、親が Recorded
としてマークされた PropagationData
として Activity
を作成すると、Recorded
と IsAllDataRequested
のプロパティは次のように設定されます。
活動サンプリング結果 | 作成されたアクティビティ | 活動が記録されました | Activity.IsAllDataRequested |
---|---|---|---|
PropagationData | はい | False | False |
導入されたバージョン
.NET 10 Preview 1
破壊的変更の種類
この変更は、動作変更です。
変更の理由
以前の動作は、OpenTelemetry の仕様に従っていませんでした。
推奨されるアクション
ActivityListener.Sample
直接実装し、ActivitySamplingResult.PropagationData
を使用している場合は、欠陥のある動作に依存していないことを確認します。 前の動作を復元するには、CreateActivity
または StartActivity
呼び出しの後に Activity.ActivityTraceFlags
を Recorded
に設定します。
OpenTelemetry .NET を使用し、サンプラーをカスタマイズした場合は、サンプラーの構成を確認します。 既定の OpenTelemetry .NET 構成では、影響を受けない親ベースのアルゴリズムが使用されます。
影響を受ける API
.NET