@@ -3,6 +3,9 @@ package middlewares
33import (
44 "context"
55 "fmt"
6+ "strings"
7+
8+ "github.com/google/uuid"
69
710 "github.com/NdoleStudio/httpsms/pkg/telemetry"
811 "github.com/gofiber/fiber/v2"
@@ -20,7 +23,7 @@ const (
2023func OtelTraceContext (tracer telemetry.Tracer , logger telemetry.Logger , header string , namespace string ) fiber.Handler {
2124 return func (c * fiber.Ctx ) error {
2225 otelTracer := otel .Tracer (namespace )
23- ctx , span := otelTracer .Start (context .Background (), fmt .Sprintf ("%s %s" , c .Method (), c .OriginalURL ()), trace .WithSpanKind (trace .SpanKindServer ))
26+ ctx , span := otelTracer .Start (context .Background (), fmt .Sprintf ("%s %s" , c .Method (), fixURL ( c .OriginalURL () )), trace .WithSpanKind (trace .SpanKindServer ))
2427 defer span .End ()
2528 spanContext := span .SpanContext ()
2629
@@ -50,3 +53,17 @@ func OtelTraceContext(tracer telemetry.Tracer, logger telemetry.Logger, header s
5053 return response
5154 }
5255}
56+
57+ func fixURL (url string ) string {
58+ url = strings .Split (url , "?" )[0 ]
59+ parts := strings .Split (url , "/" )
60+ var result []string
61+ for _ , part := range parts {
62+ if _ , err := uuid .Parse (part ); err == nil {
63+ result = append (result , ":id" )
64+ } else {
65+ result = append (result , part )
66+ }
67+ }
68+ return strings .Join (result , "/" )
69+ }
0 commit comments