MCPcopy
hub / github.com/caddyserver/caddy / newOpenTelemetryWrapper

Function newOpenTelemetryWrapper

modules/caddyhttp/tracing/tracer.go:45–85  ·  view source on GitHub ↗

newOpenTelemetryWrapper is responsible for the openTelemetryWrapper initialization using provided configuration.

(
	ctx context.Context,
	spanName string,
	spanAttributes map[string]string,
)

Source from the content-addressed store, hash-verified

43
44// newOpenTelemetryWrapper is responsible for the openTelemetryWrapper initialization using provided configuration.
45func newOpenTelemetryWrapper(
46 ctx context.Context,
47 spanName string,
48 spanAttributes map[string]string,
49) (openTelemetryWrapper, error) {
50 if spanName == "" {
51 spanName = defaultSpanName
52 }
53
54 ot := openTelemetryWrapper{
55 spanName: spanName,
56 spanAttributes: spanAttributes,
57 }
58
59 version, _ := caddy.Version()
60 res, err := ot.newResource(caddyhttp.ServerHeader, version)
61 if err != nil {
62 return ot, fmt.Errorf("creating resource error: %w", err)
63 }
64
65 traceExporter, err := autoexport.NewSpanExporter(ctx)
66 if err != nil {
67 return ot, fmt.Errorf("creating trace exporter error: %w", err)
68 }
69
70 ot.propagators = autoprop.NewTextMapPropagator()
71
72 tracerProvider := globalTracerProvider.getTracerProvider(
73 sdktrace.WithBatcher(traceExporter),
74 sdktrace.WithResource(res),
75 )
76
77 ot.handler = otelhttp.NewHandler(http.HandlerFunc(ot.serveHTTP),
78 ot.spanName,
79 otelhttp.WithTracerProvider(tracerProvider),
80 otelhttp.WithPropagators(ot.propagators),
81 otelhttp.WithSpanNameFormatter(ot.spanNameFormatter),
82 )
83
84 return ot, nil
85}
86
87// serveHTTP injects a tracing context and call the next handler.
88func (ot *openTelemetryWrapper) serveHTTP(w http.ResponseWriter, r *http.Request) {

Callers 2

ProvisionMethod · 0.85

Calls 2

newResourceMethod · 0.95
getTracerProviderMethod · 0.80