MCPcopy
hub / github.com/grafana/dskit / initJaegerTracerProvider

Method initJaegerTracerProvider

tracing/otel_jaeger.go:229–318  ·  view source on GitHub ↗

initJaegerTracerProvider initializes a new Jaeger Tracer Provider.

(serviceName string, logger log.Logger, option ...OTelOption)

Source from the content-addressed store, hash-verified

227
228// initJaegerTracerProvider initializes a new Jaeger Tracer Provider.
229func (cfg otelJaegerConfig) initJaegerTracerProvider(serviceName string, logger log.Logger, option ...OTelOption) (io.Closer, error) {
230 var otelCfg config
231 for _, opt := range option {
232 opt.apply(&otelCfg)
233 }
234
235 // Read environment variables to configure Jaeger
236 var ep jaegerotel.EndpointOption
237 // Create the jaeger exporter: address can be either agent address (host:port) or collector Endpoint.
238 if cfg.agentHostPort != "" {
239 ep = jaegerotel.WithAgentEndpoint(
240 jaegerotel.WithAgentHost(cfg.agentHost),
241 jaegerotel.WithAgentPort(cfg.agentPort))
242 } else {
243 ep = jaegerotel.WithCollectorEndpoint(
244 jaegerotel.WithEndpoint(cfg.jaegerEndpoint))
245 }
246 exp, err := jaegerotel.New(ep)
247
248 if err != nil {
249 return nil, err
250 }
251
252 // Configure sampling strategy
253 sampler := tracesdk.AlwaysSample()
254 if cfg.samplerType == "const" {
255 if cfg.samplerParam == 0 {
256 sampler = tracesdk.NeverSample()
257 }
258 } else if cfg.samplerType == "probabilistic" {
259 sampler = tracesdk.TraceIDRatioBased(cfg.samplerParam)
260 } else if cfg.samplerType == "remote" {
261 sampler = jaegerremote.New(serviceName, jaegerremote.WithSamplingServerURL(cfg.samplingServerURL),
262 jaegerremote.WithInitialSampler(tracesdk.TraceIDRatioBased(cfg.samplerParam)))
263 } else if cfg.samplerType != "" {
264 return nil, errors.Errorf("unknown sampler type %q", cfg.samplerType)
265 }
266 customAttrs := cfg.jaegerTags
267 customAttrs = append(customAttrs,
268 attribute.String("samplerType", cfg.samplerType),
269 attribute.Float64("samplerParam", cfg.samplerParam),
270 attribute.String("samplingServerURL", cfg.samplingServerURL),
271 )
272 customAttrs = append(customAttrs, otelCfg.resourceAttributes...)
273 if !cfg.samplerNotParentBased {
274 sampler = tracesdk.ParentBased(sampler)
275 } else {
276 customAttrs = append(customAttrs, attribute.Bool("samplerNotParentBased", true))
277 }
278
279 res, err := NewResource(serviceName, customAttrs)
280 if err != nil {
281 return nil, err
282 }
283
284 var batcherOptions []tracesdk.BatchSpanProcessorOption
285 if cfg.reporterMaxQueueSize > 0 {
286 batcherOptions = append(batcherOptions, tracesdk.WithMaxQueueSize(cfg.reporterMaxQueueSize))

Callers 1

newOTelFromJaegerEnvFunction · 0.80

Calls 10

NewResourceFunction · 0.85
OTelPropagatorsFromEnvFunction · 0.85
otelErrorHandlerFuncFuncType · 0.85
ioCloserFuncType · 0.85
ErrorfMethod · 0.80
applyMethod · 0.65
StringMethod · 0.65
LogMethod · 0.45
ErrorMethod · 0.45
ShutdownMethod · 0.45

Tested by

no test coverage detected