diff --git a/middlewares/metrics.go b/middlewares/metrics.go index f09f74512..889c8af3e 100644 --- a/middlewares/metrics.go +++ b/middlewares/metrics.go @@ -42,9 +42,12 @@ func (m *MetricsWrapper) ServeHTTP(rw http.ResponseWriter, r *http.Request, next start := time.Now() prw := &responseRecorder{rw, http.StatusOK} next(prw, r) - labels := []string{"code", strconv.Itoa(prw.statusCode), "method", r.Method} - m.Impl.getReqsCounter().With(labels...).Add(1) - m.Impl.getReqDurationHistogram().Observe(float64(time.Since(start).Seconds())) + + reqLabels := []string{"code", strconv.Itoa(prw.statusCode), "method", r.Method} + m.Impl.getReqsCounter().With(reqLabels...).Add(1) + + reqDurationLabels := []string{"code", strconv.Itoa(prw.statusCode)} + m.Impl.getReqDurationHistogram().With(reqDurationLabels...).Observe(float64(time.Since(start).Seconds())) } // MetricsRetryListener is an implementation of the RetryListener interface to diff --git a/middlewares/prometheus.go b/middlewares/prometheus.go index f2192fbf8..5ead24953 100644 --- a/middlewares/prometheus.go +++ b/middlewares/prometheus.go @@ -17,7 +17,7 @@ const ( // Prometheus is an Implementation for Metrics that exposes the following Prometheus metrics: // - number of requests partitioned by status code and method -// - request durations +// - request durations partitioned by status code // - amount of retries happened type Prometheus struct { reqsCounter metrics.Counter @@ -73,7 +73,7 @@ func NewPrometheus(name string, config *types.Prometheus) (*Prometheus, []stdpro ConstLabels: stdprometheus.Labels{"service": name}, Buckets: buckets, }, - []string{}, + []string{"code"}, ) hv, err = registerHistogramVec(hv) if err != nil { diff --git a/middlewares/prometheus_test.go b/middlewares/prometheus_test.go index 4d2ef9223..38bfa8807 100644 --- a/middlewares/prometheus_test.go +++ b/middlewares/prometheus_test.go @@ -75,6 +75,7 @@ func TestPrometheus(t *testing.T) { name: reqDurationName, labels: map[string]string{ "service": "test", + "code": "200", }, assert: func(family *dto.MetricFamily) { sc := family.Metric[0].Histogram.GetSampleCount()