Lightstep:子跨度不准确 UI

Lightstep: Inaccurate UI for child span

背景

我有一个 java 服务器正在对 go 服务器进行 RPC 调用。 java rpc 客户端和 go rpc 服务器使用 lightstep 进行检测。关于跟踪的一切看起来都很正常,除了 lightstep UI 中放置 go rpc 服务器跨度的位置。

java 跨度有 ts 1493929521325,就在请求发送到 go 服务器之前。 go rpc 服务器有两个时间戳:1493929521326 是它收到请求并开始跨度的时间,1493929521336 是它响应并完成跨度的时间。

问题

我希望 UI 的 go 跨度水平位于 java 跨度的右侧。相反,它在最右边。

我能想到的唯一可能原因是 java 代码使用的 v0.10.1 和 go 使用的 v0.9.1 之间不兼容。有这种可能吗?您对可能的原因有任何想法吗?

go 代码本质上是:

import (
    lightstep "github.com/lightstep/lightstep-tracer-go"
    opentracing "github.com/opentracing/opentracing-go"
)

tracer := lightstep.NewTracer(lightstep.Options{
    AccessToken: ls.AccessToken,
    Collector:   lightstep.Endpoint{ls.Host, ls.Port, true},
    Tags:        map[string]interface{}{lightstep.ComponentNameKey: component},
})

spanContext, err := tracer.Extract(opentracing.TextMap, opentracing.TextMapCarrier(req.GetLightstepData()))
span = tracer.StartSpan(
    endpoint,
    opentracing.ChildOf(spanContext))
}

// handle the request

span.Finish()

[免责声明:我在 LightStep]

工作

抱歉,您无法让 Java 和 Go 一起玩。我怀疑这是由于在 Java 中启用了时间校正但未在 Go 中使用引起的。

您可以使用 withClockSkewCorrection(boolean clockCorrection) 在 Java 中禁用时间校正 将选项传递给 LightStep 跟踪器时关闭 clockCorrection 的选项

这是更新后的 README and a link to the option code

如果您通过 LightStep 中的 [支持] 按钮与我们联系,我们应该能够为您解决问题。请给我们留言,以便我们确认已为您解决此问题。

我们将开始更仔细地监控 SO,以便更早地发现这些问题。

谢谢,祝追踪愉快!