Skip to content

Commit 8810f54

Browse files
committed
Fix metric for request duration
1 parent a499e1c commit 8810f54

File tree

1 file changed

+2
-18
lines changed

1 file changed

+2
-18
lines changed

api/pkg/middlewares/otel_context_middleware.go

Lines changed: 2 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -3,15 +3,13 @@ package middlewares
33
import (
44
"context"
55
"fmt"
6-
"strings"
76
"time"
87

98
"go.opentelemetry.io/otel/sdk/resource"
109
semconv "go.opentelemetry.io/otel/semconv/v1.20.0"
1110

1211
"github.com/NdoleStudio/httpsms/pkg/telemetry"
1312
"github.com/gofiber/fiber/v2"
14-
"github.com/google/uuid"
1513
"github.com/palantir/stacktrace"
1614
"go.opentelemetry.io/otel"
1715
"go.opentelemetry.io/otel/attribute"
@@ -33,7 +31,7 @@ func OtelTraceContext(tracer telemetry.Tracer, logger telemetry.Logger, resource
3331
return func(c *fiber.Ctx) error {
3432
start := time.Now()
3533
otelTracer := otel.Tracer(namespace)
36-
ctx, span := otelTracer.Start(context.Background(), fmt.Sprintf("%s %s", c.Method(), fixURL(c.OriginalURL())), trace.WithSpanKind(trace.SpanKindServer))
34+
ctx, span := otelTracer.Start(context.Background(), fmt.Sprintf("%s %s", c.Method(), c.Route().Path), trace.WithSpanKind(trace.SpanKindServer))
3735
defer span.End()
3836
spanContext := span.SpanContext()
3937

@@ -53,7 +51,7 @@ func OtelTraceContext(tracer telemetry.Tracer, logger telemetry.Logger, resource
5351
defer func() {
5452
attributes := append([]attribute.KeyValue{
5553
semconv.HTTPMethod(c.Method()),
56-
semconv.HTTPURL(fixURL(c.OriginalURL())),
54+
semconv.HTTPRouteKey.String(c.Route().Path),
5755
}, resources.Attributes()...)
5856
httpServerDuration.Record(ctx, time.Since(start).Milliseconds(), metric.WithAttributes(attributes...))
5957
}()
@@ -71,17 +69,3 @@ func OtelTraceContext(tracer telemetry.Tracer, logger telemetry.Logger, resource
7169
return response
7270
}
7371
}
74-
75-
func fixURL(url string) string {
76-
url = strings.Split(url, "?")[0]
77-
parts := strings.Split(url, "/")
78-
var result []string
79-
for _, part := range parts {
80-
if _, err := uuid.Parse(part); err == nil {
81-
result = append(result, ":id")
82-
} else {
83-
result = append(result, part)
84-
}
85-
}
86-
return strings.Join(result, "/")
87-
}

0 commit comments

Comments
 (0)