使用远程父母的跟踪ID和SPAN-ID创建opentelemetry上下文
我拥有支持打开跟踪的微服务,并将跟踪ID和SPAN-ID注入标题。其他微服务支持开放遥测。如何在第二微服务中使用Trace-ID和Span-ID创建父跨度?
谢谢,
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
我拥有支持打开跟踪的微服务,并将跟踪ID和SPAN-ID注入标题。其他微服务支持开放遥测。如何在第二微服务中使用Trace-ID和Span-ID创建父跨度?
谢谢,
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
接受
或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
发布评论
评论(2)
您可以使用 w3c跟踪上下文实现这一目标的规格。我们需要发送 traceparent (ex:00-8652a752a752089f33e2659dff289dfff28dff28d6833aa ff-fimnf-ff-fimnf-ff-inf-inf-ff-inf-ff-inf-inf-ff-inf-inf-inf-name )从生产者通过HTTP头号(或者您可以使用消费者中的Trace-ID和Span-ID创建它)。然后,我们可以提取远程上下文并使用TraceParent创建跨度。
这是消费者控制器。 TextMapgetter用于将跟踪数据映射到上下文。 ExtractModel只是一个自定义类。
然后,当我们配置OpentElemetrysdk时,需要在上下文传播器中设置W3CtraceContextPropagator。
这是我的客户extractModel类,
您可以在。
You can use W3C Trace Context specifications to achieve this. We need to send traceparent(Ex: 00-8652a752089f33e2659dff28d683a18f-7359b90f4355cfd9-01) from producer via HTTP headres ( or you can create it using the trace-id and span-id in the consumer). Then we can extract the remote context and create the span with traceparent.
This is the consumer controller. TextMapGetter used to map that traceparent data to the Context. ExtractModel is just a custom class.
Then when we configuring the OpenTelemetrySdk need to set W3CTraceContextPropagator in Context Propagators.
Here is my customer ExtractModel class
You can find more details in the official documentation for manual instrumentation.
通常,如果标题中可用,则必须将SPAN-ID和TRACE-ID传播。您在微服务中得到的任何请求,请检查标题是否具有SPAN-ID和TRACE-ID。如果是,请提取它们并将其在您的服务中使用。
如果不存在,则创建一个新的并将其在您的服务中使用,并将其添加到从微服务中删除的请求。
Generally you have to propogate the span-id and trace-id if it is available in header. Any request you get in your microservice, check if the headers have span-id and trace-id in them. If yes,extract them and use them in your service.
If it is not present then you create a new one and use it in your service and also add it to requests that go out of your microservice.