Files
QSfera/Server/services/proxy/pkg/middleware/tracing.go
Курнат Андрей 2315f25754 Initial QSfera import
2026-06-07 10:20:04 +03:00

36 lines
786 B
Go

package middleware
import (
"net/http"
chimiddleware "github.com/go-chi/chi/v5/middleware"
"go.opentelemetry.io/otel/attribute"
"go.opentelemetry.io/otel/trace"
)
// Tracer provides a middleware to start traces
func Tracer(tp trace.TracerProvider) func(next http.Handler) http.Handler {
return func(next http.Handler) http.Handler {
return &tracer{
next: next,
traceProvider: tp,
}
}
}
type tracer struct {
next http.Handler
traceProvider trace.TracerProvider
}
func (m tracer) ServeHTTP(w http.ResponseWriter, r *http.Request) {
span := trace.SpanFromContext(r.Context())
span.SetAttributes(
attribute.KeyValue{
Key: "x-request-id",
Value: attribute.StringValue(chimiddleware.GetReqID(r.Context())),
})
m.next.ServeHTTP(w, r)
}