aboutsummaryrefslogtreecommitdiff
path: root/middleware
diff options
context:
space:
mode:
authorGravatar Miek Gieben <miek@miek.nl> 2016-04-06 14:13:29 +0100
committerGravatar Miek Gieben <miek@miek.nl> 2016-04-06 14:13:29 +0100
commit7e05aa8069b35166832b9a09c98e4de15b2b35f3 (patch)
treec9de95494da8ef2cce90f43070d6bef070384bcd /middleware
parent9f5e081a097d92c6ddd4592251222da1760fbd34 (diff)
downloadcoredns-7e05aa8069b35166832b9a09c98e4de15b2b35f3.tar.gz
coredns-7e05aa8069b35166832b9a09c98e4de15b2b35f3.tar.zst
coredns-7e05aa8069b35166832b9a09c98e4de15b2b35f3.zip
Enable monitoring for non middleware
If monitoring is enabled for one zone, also enable it for when the server reports REFUSED. Normally the metrics are only enabled if you enter the middleware, with this you'll see REFUSED queries. Each of these are reported agains the root zone otherwise
Diffstat (limited to 'middleware')
-rw-r--r--middleware/prometheus/handler.go17
1 files changed, 12 insertions, 5 deletions
diff --git a/middleware/prometheus/handler.go b/middleware/prometheus/handler.go
index 866cda6a7..b3ef79554 100644
--- a/middleware/prometheus/handler.go
+++ b/middleware/prometheus/handler.go
@@ -22,14 +22,21 @@ func (m Metrics) ServeDNS(ctx context.Context, w dns.ResponseWriter, r *dns.Msg)
rw := middleware.NewResponseRecorder(w)
status, err := m.Next.ServeDNS(ctx, rw, r)
- m.Report(zone, qtype, rw)
+ Report(zone, qtype, rw.Rcode(), rw.Size(), rw.Start())
return status, err
}
-func (m Metrics) Report(zone, qtype string, rw *middleware.ResponseRecorder) {
+// Report is a plain reporting function that the server can use for REFUSED and other
+// queries that are turned down because they don't match any middleware.
+func Report(zone, qtype, rcode string, size int, start time.Time) {
+ if requestCount == nil {
+ // no metrics are enabled
+ return
+ }
+
requestCount.WithLabelValues(zone, qtype).Inc()
- requestDuration.WithLabelValues(zone, qtype).Observe(float64(time.Since(rw.Start()) / time.Second))
- responseSize.WithLabelValues(zone, qtype).Observe(float64(rw.Size()))
- responseRcode.WithLabelValues(zone, rw.Rcode(), qtype).Inc()
+ requestDuration.WithLabelValues(zone, qtype).Observe(float64(time.Since(start) / time.Second))
+ responseSize.WithLabelValues(zone, qtype).Observe(float64(size))
+ responseRcode.WithLabelValues(zone, rcode, qtype).Inc()
}