【问题标题】:Continue Trace in downstream microservice在下游微服务中继续跟踪
【发布时间】:2018-06-04 16:01:13
【问题描述】:

我们正在尝试向微服务添加跟踪,以便可以在 google Stackdriver UI 中查看。我们正在使用部署到 Kubernetes 容器中的 Java Springboot 应用程序,每个微服务都通过 http 进行通信。我们已经看到有 Sleuth 和 Zipkin,如果我们将 RestTemplate 移动到 bean 中,它们就可以工作。但是,我们真的不想在每个容器中部署 zipkin pod 或创建新的 zipkin 收集器 pod。理想情况下,我们希望仅使用 google cloud tracking sdk 和 sleuth/zipkin 来完成这项工作。使用 sdk,我们可以使用 google cloud grpc 库将数据直接从应用程序发送到 Stackdriver 中。 我们现在遇到的问题是我们可以将跟踪 id 发送到下游微服务,但我们似乎无法找到一种方法来在相同的跟踪 id 上创建一个新的跨度,它总是会创建一个新的跨度。我似乎找不到任何有关如何执行此操作的文档。当然,我们正在做的是构建这个库的目的吗? 任何对此有帮助的指针都会很棒。

添加更多信息......

我无法提供实际代码,因为这是我的问题,我实际上找不到我想做的事情。
让我尝试用一​​些代码/伪代码来解释。 所以让我们假设这种情况,我有 3 个微服务,A、B 和 C。

Microservice A (top level where trace is created)
  TraceContext context = tracer.startSpan("myspan1");
  TraceId traceId = context.getHandle().getCurrentSpanContext().getTraceId();
    Call Microservice B over http passing traceId in the B3-X-TraceId header
  tracer.endSpan(context);

MicroService B  
  Read B3-X-TraceId from header
  So at this point I want to call Microservice C but I want to create a new span on the same trace
  I just do not see any mechanism to do this and this is where I'm stuck.
  This is what I want to do in pseudo code 
    TraceContext context = tracer.startSpan("myspan2");
    attach the trace id that came in the header to the context
      Call Microservice C over http passing traceId in the B3-X-TraceId header
    tracer.endSpan(context);

希望这对我正在尝试做的事情有意义。

【问题讨论】:

  • 能否提供无法创建子跨度的代码示例?

标签: java cloud microservices spring-cloud-sleuth google-cloud-stackdriver


【解决方案1】:

在创建跨度之前,我还设法通过仅使用云跟踪 API 来使其工作。

SpanContext spanContext = Trace.getSpanContextFactory().fromHeader(traceId);
Trace.getSpanContextHandler().attach(spanContext);

不确定这样做是否有负面影响。

【讨论】:

    【解决方案2】:

    您提供的代码与 Sleuth 无关,而是与 opentracing 相关。在 Sleuth 中,您可以调用 Tracer.createSpan("name"),这样您的当前跟踪的子跨度就会被创建。

    【讨论】:

    猜你喜欢
    • 2014-07-14
    • 1970-01-01
    • 1970-01-01
    • 2020-10-31
    • 1970-01-01
    • 1970-01-01
    • 2017-08-06
    • 2021-08-25
    • 2011-04-04
    相关资源
    最近更新 更多