我有一个 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
- 1 回答
- 0 关注
- 92 浏览
添加回答
举报
0/150
提交
取消