Gio*_*nos 5 go opentracing jaeger distributed-tracing open-telemetry
我是 Jaeger 的新手,我想使用它来记录我的微服务的跟踪。
\n我从 \xce\xbcservices 创建跟踪,提供traceId它们作为消息发布并在另一个服务中使用它们,以便将跟踪导出到 Jaeger。\n虽然我还没有找到一种方法来提供跨度 ID 并从生产方。
我是否应该在消费者中保存某种状态,例如(每个跟踪的父范围),以便我可以拥有正确的层次结构?你会怎么做呢?
\n我当前的设置的顺序是由首先完成的设置设置的,而不是由首先开始的设置设置的,这是所期望的。API 应该是第一个。你知道我该如何解决这个问题吗?
\n任何想法或反馈都将受到高度赞赏。
\n要为给定跟踪 ID 创建新的跨度,您需要使用适合您语言的 Jaeger 客户端库并遵循 OpenTracing API 规范。根据StackOverflow 上的回答,您可以从 service1 的 Span 获取 Span ID 并将其传播到其他服务。例如,在 Spring Boot 中:
// service1
JaegerSpan span = tracer.buildSpan ("service1")
String spanId = span.context ().toTraceId ()
// service2
JaegerSpanContext context = new JaegerSpanContext (traceId, spanId, 0L, (byte) 0);
JaegerSpan span = tracer.buildSpan ("service2").asChildOf (context).start ();
Run Code Online (Sandbox Code Playgroud)
您还可以使用 OpenTelemetry API 创建跨度并使用特定转换将它们导出到 Jaeger。您需要使用 Big Endian 字节顺序将 ID 的字节转换为无符号整数。
如果您是新手 - 我可以建议您从网络上的一些教程开始