From 005596529543143e0f7efa12c4ed6a83c51c1dbe Mon Sep 17 00:00:00 2001 From: Marco Jantke Date: Thu, 15 Jun 2017 16:06:02 +0200 Subject: [PATCH] add status code to request duration metric --- middlewares/metrics.go | 9 ++++++--- middlewares/prometheus.go | 4 ++-- middlewares/prometheus_test.go | 1 + 3 files changed, 9 insertions(+), 5 deletions(-) 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()