diff options
author | 2016-10-28 12:54:49 +0100 | |
---|---|---|
committer | 2016-10-28 12:54:49 +0100 | |
commit | 54964653d10aa8b2e34ac21e007c701ceb456f7d (patch) | |
tree | 580ba3ee6491fcdfc1a1b70b2cf62dd8bd3a2726 /middleware/proxy/metrics.go | |
parent | ba26f47d5c65295342402d2c9996eb74884935e0 (diff) | |
download | coredns-54964653d10aa8b2e34ac21e007c701ceb456f7d.tar.gz coredns-54964653d10aa8b2e34ac21e007c701ceb456f7d.tar.zst coredns-54964653d10aa8b2e34ac21e007c701ceb456f7d.zip |
middleware/proxy: add request duration monitoring (#362)
Add a separate request duration metrics specially for proxying requests
upstream.
Fixes #259
Diffstat (limited to 'middleware/proxy/metrics.go')
-rw-r--r-- | middleware/proxy/metrics.go | 32 |
1 files changed, 32 insertions, 0 deletions
diff --git a/middleware/proxy/metrics.go b/middleware/proxy/metrics.go new file mode 100644 index 000000000..f3112dd76 --- /dev/null +++ b/middleware/proxy/metrics.go @@ -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" |