github.com/tickoalcantara12/micro/v3@v3.0.0-20221007104245-9d75b9bcbab9/util/opentelemetry/jaeger/jaeger.go (about) 1 package jaeger 2 3 import ( 4 "io" 5 6 "github.com/tickoalcantara12/micro/v3/service/logger" 7 "github.com/tickoalcantara12/micro/v3/util/opentelemetry" 8 "github.com/opentracing/opentracing-go" 9 "github.com/uber/jaeger-client-go/config" 10 ) 11 12 const ( 13 DefaultReporterAddress = "localhost:6831" 14 ) 15 16 // New returns a configured Jaeger tracer: 17 func New(opts ...opentelemetry.Option) (opentracing.Tracer, io.Closer, error) { 18 options := opentelemetry.DefaultOptions() 19 for _, o := range opts { 20 o(&options) 21 } 22 23 logger.Debug("Creating a new Jaeger tracer") 24 25 // Prepare a Jaeger config using our options: 26 jaegerConfig := config.Configuration{ 27 ServiceName: options.ServiceName, 28 Sampler: &config.SamplerConfig{ 29 Type: "const", // No adaptive sampling or external lookups 30 Param: options.SamplingRate, 31 }, 32 Reporter: &config.ReporterConfig{ 33 LocalAgentHostPort: options.TraceReporterAddress, 34 }, 35 } 36 37 // Prepare a new Jaeger tracer from this config: 38 tracer, closer, err := jaegerConfig.NewTracer() 39 if err != nil { 40 return nil, nil, err 41 } 42 43 return tracer, closer, nil 44 }