middleware/proxy: add request duration monitoring (#362)
Add a separate request duration metrics specially for proxying requests upstream. Fixes #259
This commit is contained in:
parent
ba26f47d5c
commit
54964653d1
5 changed files with 52 additions and 2 deletions
32
middleware/proxy/metrics.go
Normal file
32
middleware/proxy/metrics.go
Normal file
|
@ -0,0 +1,32 @@
|
|||
package proxy
|
||||
|
||||
import (
|
||||
"sync"
|
||||
|
||||
"github.com/miekg/coredns/middleware"
|
||||
|
||||
"github.com/prometheus/client_golang/prometheus"
|
||||
)
|
||||
|
||||
// Metrics the proxy middleware exports.
|
||||
var (
|
||||
RequestDuration = prometheus.NewHistogramVec(prometheus.HistogramOpts{
|
||||
Namespace: middleware.Namespace,
|
||||
Subsystem: subsystem,
|
||||
Name: "request_duration_milliseconds",
|
||||
Buckets: append(prometheus.DefBuckets, []float64{50, 100, 200, 500, 1000, 2000, 3000, 4000, 5000, 10000}...),
|
||||
Help: "Histogram of the time (in milliseconds) each request took.",
|
||||
}, []string{"zone"})
|
||||
)
|
||||
|
||||
// OnStartup sets up the metrics on startup.
|
||||
func OnStartup() error {
|
||||
metricsOnce.Do(func() {
|
||||
prometheus.MustRegister(RequestDuration)
|
||||
})
|
||||
return nil
|
||||
}
|
||||
|
||||
var metricsOnce sync.Once
|
||||
|
||||
const subsystem = "proxy"
|
Loading…
Add table
Add a link
Reference in a new issue