我有一個 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 關注
- 126 瀏覽
添加回答
舉報
0/150
提交
取消