在 .NET 中使用 Opentelemetry.Baggage API 传播 Baggages

kha*_*zen 5 asp.net event-propagation distributed-tracing open-telemetry

假设我有 3 个微服务,并且我想使用 OpenTelemetry/Jaeger UI 跟踪请求。如何添加通过跨度传播的行李?假设我有一个名为 WeatherForecast 的 API,它向另一个名为 Matrix 的服务执行 get 请求,我创建了一个如下所示的行李:

    var res = HttpClient.GetStringAsync("http://localhost:5002/Matrix").Result;
    Baggage.Current.SetBaggage("weatherforecastid", "abced123");`
Run Code Online (Sandbox Code Playgroud)

如何让当前行李通过 Matrix 服务(调用其他服务)传播?我尝试使用 Baggage.Current.SetBaggage 认为它会引用 Wea​​therForecast 中的行李,但看起来它只创建了一个新行李,并且没有传播以前的行李。

Pau*_*sma 0

根据文档,默认情况下启用此功能:

Baggage API 允许用户向指标、跟踪和日志添加上下文。Baggage 可以使用 Propagators 从 proc 传播出去。OpenTelemetry SDK 附带了 BaggagePropagator 并默认启用它。

因此,如果您的所有服务都正确配置了 OpenTelemetry,则应通过 HTTP 调用在服务之间保留 Baggage。