次の方法で共有


ActivitySource.CreateActivity と ActivitySource.StartActivity の動作の変更

ActivitySource.CreateActivity API と ActivitySource.StartActivity API は、インスタンスを作成する必要があることを決定する登録済みリスナーがある場合にのみ、Activity を返します。 これは一般にサンプリングと呼ばれます。

System.Diagnostics.ActivitySamplingResult 列挙型は、可能なサンプリング決定を定義します。

親なしで Activity を作成する場合は、ActivitySamplingResultActivity を作成するかどうかを決定し、その後 Recorded プロパティと IsAllDataRequested プロパティの設定方法を決定します。

活動サンプリング結果 作成されたアクティビティ 活動が記録されました Activity.IsAllDataRequested
None いいえ
PropagationData はい 誤り False
AllData はい 誤り
AllDataAndRecorded はい 正しい

親を含む Activity を作成することもできます。 親は同じプロセス内にあるか、現在のプロセスに伝達されたリモート親である可能性があります。

以前の動作

以前は、Recordedとしてマークされた親を含む PropagationData として Activity を作成する場合、Recorded プロパティと IsAllDataRequested プロパティは次のように設定されていました。

活動サンプリング結果 作成されたアクティビティ 活動が記録されました Activity.IsAllDataRequested (すべてのデータが要求されているかを確認)
PropagationData はい 真実 False

新しい動作

.NET 10 以降では、親が Recordedとしてマークされた PropagationData として Activity を作成すると、RecordedIsAllDataRequested のプロパティは次のように設定されます。

活動サンプリング結果 作成されたアクティビティ 活動が記録されました Activity.IsAllDataRequested
PropagationData はい False False

導入されたバージョン

.NET 10 Preview 1

破壊的変更の種類

この変更は、動作変更です。

変更の理由

以前の動作は、OpenTelemetry の仕様に従っていませんでした。

ActivityListener.Sample 直接実装し、ActivitySamplingResult.PropagationDataを使用している場合は、欠陥のある動作に依存していないことを確認します。 前の動作を復元するには、CreateActivity または StartActivity 呼び出しの後に Activity.ActivityTraceFlagsRecorded に設定します。

OpenTelemetry .NET を使用し、サンプラーをカスタマイズした場合は、サンプラーの構成を確認します。 既定の OpenTelemetry .NET 構成では、影響を受けない親ベースのアルゴリズムが使用されます。

影響を受ける API