开放式跟踪:将多个TraceId链接到一个跟踪中

时间:2019-02-21 22:39:01

标签: java opentracing

是否可以将具有不同跟踪ID的多个跟踪连接到单个跟踪中?就我而言,我有类似以下的内容,我想将它们合并为一条跟踪。

|--- UI Trace ---------------------------------|
    |- UI Span -|
                 |-- Backend Trace -----------|
                   |- Backend Span --| |--| 

是的,我可以重构,以使我的Backend Trace位于UI Trace内。但是我正在使用一些现有代码,其中后端服务已经具有通过HTTP标头传递的每个请求的ID。我想重新使用现有的后端ID,而不是向所有现有请求添加新的跟踪ID标头。

1 个答案:

答案 0 :(得分:1)

通常,以您描述的方式进行的“连接跟踪”将成为跟踪分析器(Jaeger,LightStep等)的一部分,我认为其中没有一个允许这种查询。 TraceID只是分析仪将完全不同的跨度关联到单个逻辑迹线的一种方式。

一些解决此问题的方法如下-

  1. 在前端上生成适当格式的跟踪ID,并将其用作OpenTracing SpanContext跟踪ID,假设您的后端也将对其进行传播(如果有的话)。
  2. 创建一个代理,该代理可以临时存储UI中的跨度,等待后端跟踪ID可用,然后用后端生成的跟踪ID重写SpanContext。您不必不必传递未完成或格式错误的跨度-您只需将所需的数据片段通过网络发送到您的后端,然后为UI创建新的跨度。