Dotnet:OpenTelemetry,连接两个范围

问题描述 投票:0回答:1

我在启用了 OpenTelemetry 跟踪的 .Net 上运行了三个服务。通信从第一个服务开始到第二个服务,通过

HttpClient
。第二个服务处理 http 请求并将工作项添加到其自己的排队后台服务中。此工作项向第三个服务发出 http 请求。

轨迹导出到

Jaeger
.

我在第二个和第三个服务上检查了 traceparent 标头,它们是不同的。

我认为这是因为第二个服务在不同范围的后台发出 http 请求。 (为每个工作项创建的新范围) 我怎样才能连接这样的活动以一次看到整个通信?

我尝试在工作项 lambda 中创建新活动并设置父活动 ID,但没有帮助。

asp.net-core trace open-telemetry asp.net-core-hosted-services
1个回答
0
投票

你在哪里设置父活动ID?你用过

Activity.SetParentId
方法吗?根据这份文件

此方法仅适用于从 活动构造函数。通过调用

CreateActivity
创建的活动 或者
StartActivity
已经设置了父 ID,并调用它 方法无效。

此方法只能在启动

Activity
对象之前使用。 如果在
Activity
对象之后调用此方法,则该方法无效 开始了

不确定你的代码是如何构建的,但我参考了这个GitHub Issue中的例子并且它有效,你可以检查它。 这是代码。

© www.soinside.com 2019 - 2024. All rights reserved.