From 6dea0e361e5ede38590124191c3319e288c2c328 Mon Sep 17 00:00:00 2001 From: Matheus Nogueira Date: Sat, 21 Oct 2023 10:13:06 -0300 Subject: [PATCH] fix: http metric middleware improvements (#3284) * fix: set route as "/" when it's empty * fix: use attributeSet to add attributes to metric --- server/http/middleware/metrics.go | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/server/http/middleware/metrics.go b/server/http/middleware/metrics.go index 8407e8e5e4..78a5dacebd 100644 --- a/server/http/middleware/metrics.go +++ b/server/http/middleware/metrics.go @@ -23,6 +23,9 @@ func (m *httpMetricMiddleware) ServeHTTP(w http.ResponseWriter, r *http.Request) route := mux.CurrentRoute(r) pathTemplate, _ := route.GetPathTemplate() + if pathTemplate == "" { + pathTemplate = "/" + } metricAttributes := []attribute.KeyValue{ attribute.String(semconv.AttributeHTTPRoute, pathTemplate), @@ -34,7 +37,9 @@ func (m *httpMetricMiddleware) ServeHTTP(w http.ResponseWriter, r *http.Request) metricAttributes = append(metricAttributes, attribute.String("tracetest.tenant_id", tenantID)) } - m.requestDurationHistogram.Record(r.Context(), duration.Milliseconds(), metric.WithAttributes(metricAttributes...)) + m.requestDurationHistogram.Record(r.Context(), duration.Milliseconds(), metric.WithAttributeSet( + attribute.NewSet(metricAttributes...), + )) } var _ http.Handler = &httpMetricMiddleware{}