mirror of
https://github.com/containous/traefik.git
synced 2025-01-13 13:17:51 +03:00
add status code to request duration metric
This commit is contained in:
parent
34e60a8404
commit
0055965295
@ -42,9 +42,12 @@ func (m *MetricsWrapper) ServeHTTP(rw http.ResponseWriter, r *http.Request, next
|
|||||||
start := time.Now()
|
start := time.Now()
|
||||||
prw := &responseRecorder{rw, http.StatusOK}
|
prw := &responseRecorder{rw, http.StatusOK}
|
||||||
next(prw, r)
|
next(prw, r)
|
||||||
labels := []string{"code", strconv.Itoa(prw.statusCode), "method", r.Method}
|
|
||||||
m.Impl.getReqsCounter().With(labels...).Add(1)
|
reqLabels := []string{"code", strconv.Itoa(prw.statusCode), "method", r.Method}
|
||||||
m.Impl.getReqDurationHistogram().Observe(float64(time.Since(start).Seconds()))
|
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
|
// MetricsRetryListener is an implementation of the RetryListener interface to
|
||||||
|
@ -17,7 +17,7 @@ const (
|
|||||||
|
|
||||||
// Prometheus is an Implementation for Metrics that exposes the following Prometheus metrics:
|
// Prometheus is an Implementation for Metrics that exposes the following Prometheus metrics:
|
||||||
// - number of requests partitioned by status code and method
|
// - number of requests partitioned by status code and method
|
||||||
// - request durations
|
// - request durations partitioned by status code
|
||||||
// - amount of retries happened
|
// - amount of retries happened
|
||||||
type Prometheus struct {
|
type Prometheus struct {
|
||||||
reqsCounter metrics.Counter
|
reqsCounter metrics.Counter
|
||||||
@ -73,7 +73,7 @@ func NewPrometheus(name string, config *types.Prometheus) (*Prometheus, []stdpro
|
|||||||
ConstLabels: stdprometheus.Labels{"service": name},
|
ConstLabels: stdprometheus.Labels{"service": name},
|
||||||
Buckets: buckets,
|
Buckets: buckets,
|
||||||
},
|
},
|
||||||
[]string{},
|
[]string{"code"},
|
||||||
)
|
)
|
||||||
hv, err = registerHistogramVec(hv)
|
hv, err = registerHistogramVec(hv)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
|
@ -75,6 +75,7 @@ func TestPrometheus(t *testing.T) {
|
|||||||
name: reqDurationName,
|
name: reqDurationName,
|
||||||
labels: map[string]string{
|
labels: map[string]string{
|
||||||
"service": "test",
|
"service": "test",
|
||||||
|
"code": "200",
|
||||||
},
|
},
|
||||||
assert: func(family *dto.MetricFamily) {
|
assert: func(family *dto.MetricFamily) {
|
||||||
sc := family.Metric[0].Histogram.GetSampleCount()
|
sc := family.Metric[0].Histogram.GetSampleCount()
|
||||||
|
Loading…
Reference in New Issue
Block a user