From 51c32c5e1552c7542f1333d7b7de8ed88b465cff Mon Sep 17 00:00:00 2001 From: Ralf Haferkamp Date: Mon, 1 Sep 2025 17:08:39 +0200 Subject: [PATCH] fix(tracing): Don't start separate span for request-id attr Just add the request id as an attribute to the span created by the 'otelhttp' middleware. --- services/proxy/pkg/command/server.go | 4 ++-- services/proxy/pkg/middleware/tracing.go | 22 ++-------------------- 2 files changed, 4 insertions(+), 22 deletions(-) diff --git a/services/proxy/pkg/command/server.go b/services/proxy/pkg/command/server.go index f15d5e90c..6a86288c5 100644 --- a/services/proxy/pkg/command/server.go +++ b/services/proxy/pkg/command/server.go @@ -343,6 +343,8 @@ func loadMiddlewares(logger log.Logger, cfg *config.Config, } return alice.New( + chimiddleware.RealIP, + chimiddleware.RequestID, // first make sure we log all requests and redirect to https if necessary otelhttp.NewMiddleware("proxy", otelhttp.WithTracerProvider(traceProvider), @@ -353,8 +355,6 @@ func loadMiddlewares(logger log.Logger, cfg *config.Config, middleware.Tracer(traceProvider), pkgmiddleware.TraceContext, middleware.Instrumenter(metrics), - chimiddleware.RealIP, - chimiddleware.RequestID, middleware.AccessLog(logger), middleware.ContextLogger(logger), middleware.HTTPSRedirect, diff --git a/services/proxy/pkg/middleware/tracing.go b/services/proxy/pkg/middleware/tracing.go index e680da90b..afcabb6b8 100644 --- a/services/proxy/pkg/middleware/tracing.go +++ b/services/proxy/pkg/middleware/tracing.go @@ -1,13 +1,10 @@ package middleware import ( - "fmt" "net/http" chimiddleware "github.com/go-chi/chi/v5/middleware" - pkgtrace "github.com/opencloud-eu/opencloud/pkg/tracing" "go.opentelemetry.io/otel/attribute" - "go.opentelemetry.io/otel/propagation" "go.opentelemetry.io/otel/trace" ) @@ -27,27 +24,12 @@ type tracer struct { } func (m tracer) ServeHTTP(w http.ResponseWriter, r *http.Request) { - var ( - ctx = r.Context() - span trace.Span - ) - - ctx = pkgtrace.Propagator.Extract(ctx, propagation.HeaderCarrier(r.Header)) - - tracer := m.traceProvider.Tracer("proxy") - spanOpts := []trace.SpanStartOption{ - trace.WithSpanKind(trace.SpanKindServer), - } - ctx, span = tracer.Start(ctx, fmt.Sprintf("%s %v", r.Method, r.URL.Path), spanOpts...) - defer span.End() - + span := trace.SpanFromContext(r.Context()) span.SetAttributes( attribute.KeyValue{ Key: "x-request-id", Value: attribute.StringValue(chimiddleware.GetReqID(r.Context())), }) - pkgtrace.Propagator.Inject(ctx, propagation.HeaderCarrier(r.Header)) - - m.next.ServeHTTP(w, r.WithContext(ctx)) + m.next.ServeHTTP(w, r) }