fix(fiber): set telemetry on context

This commit is contained in:
DevMiner 2024-07-27 19:40:22 +02:00
parent 62f70ab0c9
commit 0338be0407
2 changed files with 9 additions and 5 deletions

View file

@ -105,6 +105,10 @@ func (t *Telemetry) FiberMiddleware(config ...FiberMiddlewareConfig) fiber.Handl
} }
return func(c *fiber.Ctx) error { return func(c *fiber.Ctx) error {
ctx := c.UserContext()
ctx = SetOnContext(t, ctx)
c.SetUserContext(ctx)
// Skip ignored routes (/ping for example) // Skip ignored routes (/ping for example)
if slices.Contains(cfg.IgnoredRoutes, c.Path()) { if slices.Contains(cfg.IgnoredRoutes, c.Path()) {
return c.Next() return c.Next()
@ -113,7 +117,7 @@ func (t *Telemetry) FiberMiddleware(config ...FiberMiddlewareConfig) fiber.Handl
start := time.Now() start := time.Now()
requestMetricsAttrs := httpServerTraceAttributesFromRequest(c) requestMetricsAttrs := httpServerTraceAttributesFromRequest(c)
mActiveRequests.Add(c.Context(), 1, metric.WithAttributes(requestMetricsAttrs...)) mActiveRequests.Add(ctx, 1, metric.WithAttributes(requestMetricsAttrs...))
responseMetricAttrs := make([]attribute.KeyValue, len(requestMetricsAttrs)) responseMetricAttrs := make([]attribute.KeyValue, len(requestMetricsAttrs))
copy(responseMetricAttrs, requestMetricsAttrs) copy(responseMetricAttrs, requestMetricsAttrs)
@ -123,7 +127,7 @@ func (t *Telemetry) FiberMiddleware(config ...FiberMiddlewareConfig) fiber.Handl
return err return err
} }
ctx := t.propagator.Extract(c.UserContext(), propagation.HeaderCarrier(stdRequest.Header)) ctx = t.propagator.Extract(ctx, propagation.HeaderCarrier(stdRequest.Header))
hub := sentry.CurrentHub().Clone() hub := sentry.CurrentHub().Clone()
if client := hub.Client(); client != nil { if client := hub.Client(); client != nil {

View file

@ -22,7 +22,7 @@ import (
"go.opentelemetry.io/otel/trace/noop" "go.opentelemetry.io/otel/trace/noop"
) )
type otlpContextKey struct{} type telemetryContextKey struct{}
type Opts struct { type Opts struct {
Environment string Environment string
@ -70,10 +70,10 @@ func (o *Telemetry) Shutdown(ctx context.Context) {
} }
func SetOnContext(o *Telemetry, ctx context.Context) context.Context { func SetOnContext(o *Telemetry, ctx context.Context) context.Context {
return context.WithValue(ctx, otlpContextKey{}, o) return context.WithValue(ctx, telemetryContextKey{}, o)
} }
func FromContext(ctx context.Context) *Telemetry { func FromContext(ctx context.Context) *Telemetry {
return ctx.Value(otlpContextKey{}).(*Telemetry) return ctx.Value(telemetryContextKey{}).(*Telemetry)
} }
func newSpanExporter(ctx context.Context, opts Opts) (sdktrace.SpanExporter, error) { func newSpanExporter(ctx context.Context, opts Opts) (sdktrace.SpanExporter, error) {