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.
This commit is contained in:
Ralf Haferkamp
2025-09-02 12:13:11 +02:00
parent 826269320a
commit 51c32c5e15
2 changed files with 4 additions and 22 deletions
+2 -2
View File
@@ -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,
+2 -20
View File
@@ -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)
}