为了账号安全,请及时绑定邮箱和手机立即绑定

在一个 docker 容器中打开 go 代码,在另一个容器中打开 jaegertracing

在一个 docker 容器中打开 go 代码,在另一个容器中打开 jaegertracing

Go
拉莫斯之舞 2023-06-19 13:54:37
我有一个 go 项目,它使用以下命令在一个 docker 容器中发送 OpenTracing 跨度,并在它自己的容器中运行 jaegertracing:docker run -p 6831:6831/udp -p 16686:16686 jaegertracing/all-in-one:latest当我运行以下 go 测试代码时,我可以在 jaegerui 中看到它们: import (    "testing"    //"fmt"    "io"    opentracing "github.com/opentracing/opentracing-go"    jaeger "github.com/uber/jaeger-client-go"    config "github.com/uber/jaeger-client-go/config"    log2 "github.com/sirupsen/logrus"   // olog"github.com/opentracing/opentracing-go/log"    jaegerlog "github.com/uber/jaeger-client-go/log"    "github.com/uber/jaeger-lib/metrics")func TestSum(t *testing.T) {     log2.Info("start opentracing")   // helloTo := "sonam"    tracer, closer := initJaeger("opentracing_test")    defer closer.Close()    helloStr := "Sonam"    //tracer := opentracing.GlobalTracer()    span := tracer.StartSpan("TestSum")    println(helloStr)    span.Finish()}// initJaeger returns an instance of Jaeger Tracer that samples 100% of traces and logs all spans to stdout.func initJaeger(service string) (opentracing.Tracer, io.Closer) {    cfg := config.Configuration{        ServiceName: service,        Sampler:     &config.SamplerConfig{            Type:  jaeger.SamplerTypeConst,            Param: 1,        },        Reporter:    &config.ReporterConfig{            LogSpans: true,        },    }    //add    jLogger := jaegerlog.StdLogger    jMetricsFactory := metrics.NullFactory    // Initialize tracer with a logger and a metrics factory    tracer, closer, _ := cfg.NewTracer(        config.Logger(jLogger),        config.Metrics(jMetricsFactory),    )    // Set the singleton opentracing.Tracer with the Jaeger tracer.    opentracing.SetGlobalTracer(tracer)    return tracer, closer}但当代码在单独的 docker 容器中执行时不会。我需要在我的 go app docker 容器中传递什么?
查看完整描述

1 回答

?
呼如林

TA贡献1798条经验 获得超3个赞

我的问题是配置。使用上述配置未读取环境变量。我必须使用以下内容来读取开放跟踪中的环境变量:


cfg, err := jconfig.FromEnv()

    if err != nil {

        log.Error("cannot parse Jaeger env vars")

    }


    cfg.ServiceName = service

    cfg.Sampler.Type = jaeger.SamplerTypeConst

    cfg.Sampler.Param = 1

    cfg.Reporter.LogSpans = true


查看完整回答
反对 回复 2023-06-19
  • 1 回答
  • 0 关注
  • 92 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信