MCPcopy
hub / github.com/grafana/tempo / InstallOpenTelemetryTracer

Function InstallOpenTelemetryTracer

pkg/tracing/tracing.go:23–71  ·  view source on GitHub ↗
(appName, target string, spanProfiling bool)

Source from the content-addressed store, hash-verified

21)
22
23func InstallOpenTelemetryTracer(appName, target string, spanProfiling bool) (func(), error) {
24 level.Info(log.Logger).Log("msg", "initialising OpenTelemetry tracer")
25
26 exp, err := autoexport.NewSpanExporter(context.Background())
27 if err != nil {
28 return nil, fmt.Errorf("failed to create OTEL exporter: %w", err)
29 }
30
31 resources, err := resource.New(context.Background(),
32 resource.WithAttributes(
33 semconv.ServiceNameKey.String(fmt.Sprintf("%s-%s", appName, target)),
34 semconv.ServiceVersionKey.String(fmt.Sprintf("%s-%s", version.Version, version.Revision)),
35 ),
36 resource.WithHost(),
37 resource.WithTelemetrySDK(),
38 )
39 if err != nil {
40 return nil, fmt.Errorf("failed to initialise trace resources: %w", err)
41 }
42
43 otel.SetErrorHandler(otelErrorHandlerFunc(func(err error) {
44 level.Error(log.Logger).Log("msg", "OpenTelemetry.ErrorHandler", "err", err)
45 }))
46
47 tpsdk := tracesdk.NewTracerProvider(
48 tracesdk.WithBatcher(exp),
49 tracesdk.WithResource(resources),
50 )
51
52 var tp trace.TracerProvider = tpsdk
53 if spanProfiling {
54 tp = otelpyroscope.NewTracerProvider(tp)
55 }
56 otel.SetTracerProvider(tp)
57
58 shutdown := func() {
59 ctx, cancel := context.WithTimeout(context.Background(), 5*time.Second)
60 defer cancel()
61 if err := tpsdk.Shutdown(ctx); err != nil {
62 level.Error(log.Logger).Log("msg", "OpenTelemetry trace provider failed to shutdown", "err", err)
63 os.Exit(1)
64 }
65 }
66
67 propagator := propagation.NewCompositeTextMapPropagator(propagation.Baggage{}, propagation.TraceContext{})
68 otel.SetTextMapPropagator(propagator)
69
70 return shutdown, nil
71}
72
73type otelErrorHandlerFunc func(error)
74

Callers 1

mainFunction · 0.92

Calls 5

otelErrorHandlerFuncFuncType · 0.85
LogMethod · 0.65
ErrorMethod · 0.65
ShutdownMethod · 0.65
StringMethod · 0.45

Tested by

no test coverage detected