【问题标题】:Child span in Go GRPC opentracingGo GRPC opentracing 中的子跨度
【发布时间】:2020-06-24 17:00:24
【问题描述】:

我正在使用 Jaeger 在我们的微服务中添加开放跟踪。我有两台 GRPC 服务器和一台 REST 服务器。

GRPC 服务器和所有 rest-grpc 请求的默认 opentracing 都在一个父跨度下进行跟踪。使用 Java GRPC,我可以添加自定义子跨度,并且它以完美的层次结构出现在 Jaeger UI 中。但是当我尝试在 Go Lang 中添加相同的自定义子项时,它不会添加到调用 GRPC 服务的父级 Rest Service 跨度中。下面是golang代码

"github.com/opentracing/opentracing-go"

cfg := jaegerConfig.Configuration{
    ServiceName: t.Name,
}

tracer, closer, err := cfg.NewTracer(
    jaegerConfig.Logger(jLogger),
    jaegerConfig.Metrics(jMetricsFactory),
)

gRPCServer := grpc.NewServer(
        grpc.UnaryInterceptor(
            otgrpc.OpenTracingServerInterceptor(tracer)),
        grpc.StreamInterceptor(
            otgrpc.OpenTracingStreamServerInterceptor(tracer)))

var span = tracer.StartSpan("Test Span")
span.SetTag("one", "value")
span.Finish()

我不想进行整个 http 标头提取,因为 GRPC 库已经处理好了。即使使用 java GRPC,我也不进行任何提取。我在 opentracing 中使用的范围管理器不适用于 go lang opentracing。

提前致谢!!!

干杯。

【问题讨论】:

    标签: go grpc jaeger opentracing distributed-tracing


    【解决方案1】:

    您可以在 gRPC 处理程序中尝试使用 StartSpanFromContext

        // import "github.com/opentracing/opentracing-go"
        
        span, _ := opentracing.StartSpanFromContext(ctx, "some_child_span")
        defer span.Finish()
    
        span.SetTag("foo", "bar")
    

    正如otgrpc.OpenTracingServerInterceptor 的文档所说:

    [...] 服务器 Span 将嵌入到 context.Context 中 要访问的特定于应用程序的 gRPC 处理程序。

    如果我们看一下函数实现:

    // import "github.com/opentracing/opentracing-go"
    
    func OpenTracingServerInterceptor(tracer opentracing.Tracer, optFuncs ...Option) grpc.UnaryServerInterceptor {
            // ... a lot omitted
            ctx = opentracing.ContextWithSpan(ctx, serverSpan)
            // ...
            resp, err = handler(ctx, req) // your gRPC handler
            // ...   
    }
    



    编辑:鉴于上述情况,您可能可以省略此代码:

    var span = tracer.StartSpan("Test Span")
    span.SetTag("one", "value")
    span.Finish()
    

    【讨论】:

    • 感谢您的回答。我是 GO lang 的新手。在您回答后,我再次正确尝试,是的,它的工作原理。再次感谢。
    猜你喜欢
    • 2022-01-15
    • 2019-12-07
    • 1970-01-01
    • 2018-09-18
    • 1970-01-01
    • 2023-03-30
    • 1970-01-01
    • 1970-01-01
    • 2018-08-30
    相关资源
    最近更新 更多