MCPcopy Create free account
hub / github.com/docker/secrets-engine / InitializeOTel

Function InitializeOTel

x/telemetry/otel.go:39–67  ·  view source on GitHub ↗

InitializeOTel sets up OTEL with meter/metrics and tracer providers

(ctx context.Context, endpoint string)

Source from the content-addressed store, hash-verified

37
38// InitializeOTel sets up OTEL with meter/metrics and tracer providers
39func InitializeOTel(ctx context.Context, endpoint string) (ShutdownFunc, error) {
40 logger, err := logging.FromContext(ctx)
41 if err != nil {
42 return nil, err
43 }
44 otel.SetErrorHandler(&errorhandler{logger: logger})
45 otel.SetTextMapPropagator(propagation.NewCompositeTextMapPropagator(
46 propagation.TraceContext{},
47 propagation.Baggage{},
48 ))
49
50 res := newResource(ctx)
51
52 var secure bool
53 endpoint, secure = sanitizeEndpoint(endpoint)
54 tracerProvider := createTraceProvider(ctx, res, endpoint, secure)
55 metricsProvider := createMetricProvider(ctx, res, endpoint, secure)
56 cleanup := func(ctx context.Context) {
57 if err := tracerProvider.Shutdown(ctx); err != nil {
58 logger.Warnf("Tracer provider did not shut down cleanly: %s", err)
59 }
60 if err := metricsProvider.Shutdown(ctx); err != nil {
61 logger.Warnf("Metrics provider did not shut down cleanly: %s", err)
62 }
63 }
64 otel.SetTracerProvider(tracerProvider)
65 otel.SetMeterProvider(metricsProvider)
66 return cleanup, nil
67}
68
69func createMetricProvider(ctx context.Context, res *resource.Resource, endpoint string, secure bool) *sdkmetric.MeterProvider {
70 expOpts := []otlpmetricgrpc.Option{

Callers

nothing calls this directly

Calls 6

newResourceFunction · 0.85
sanitizeEndpointFunction · 0.85
createTraceProviderFunction · 0.85
createMetricProviderFunction · 0.85
ShutdownMethod · 0.65
WarnfMethod · 0.65

Tested by

no test coverage detected