aboutsummaryrefslogtreecommitdiff
path: root/middleware/proxy/metrics.go
diff options
context:
space:
mode:
authorGravatar Miek Gieben <miek@miek.nl> 2016-10-28 12:54:49 +0100
committerGravatar GitHub <noreply@github.com> 2016-10-28 12:54:49 +0100
commit54964653d10aa8b2e34ac21e007c701ceb456f7d (patch)
tree580ba3ee6491fcdfc1a1b70b2cf62dd8bd3a2726 /middleware/proxy/metrics.go
parentba26f47d5c65295342402d2c9996eb74884935e0 (diff)
downloadcoredns-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.go32
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"