aboutsummaryrefslogtreecommitdiff
path: root/plugin/metrics/setup.go
diff options
context:
space:
mode:
authorGravatar Francois Tur <ftur@infoblox.com> 2018-11-01 15:56:00 -0400
committerGravatar Miek Gieben <miek@miek.nl> 2018-11-01 19:56:00 +0000
commit05204ef14253de13c18b8442c2b04dd03345d98b (patch)
tree1050182126f5c9288e59aeb8aa7275a47935bdea /plugin/metrics/setup.go
parentf5aa6cac67d65357dfa81f39f3ef33e57a376795 (diff)
downloadcoredns-05204ef14253de13c18b8442c2b04dd03345d98b.tar.gz
coredns-05204ef14253de13c18b8442c2b04dd03345d98b.tar.zst
coredns-05204ef14253de13c18b8442c2b04dd03345d98b.zip
Metrics registered on wrong prometheus registry (#2246)
* - UT on metrics verifying that all plugins of all blocs have their metrics collectors declared * - fix error msg * - redirect Registry of metric to the one that handle the listener - allow duplicate of metrics collector on the same Registry (case of same plugin in 2 blocs listening metrics on the same address) * - fix change of signature * - ensure cleaning metrics before starting the test (metrics collectors are global vars .. and re-used by several tests) * - I think I fixed this test. Ensure correct mn of hits and clean metrics before test. * - fix typo in error msg - proposed at review * - fix typo in comment * - remove ResetMetrics functions - change a way to test the numeric metrics : get the diff between begin and end of test * - oops. removing debug logs
Diffstat (limited to 'plugin/metrics/setup.go')
-rw-r--r--plugin/metrics/setup.go11
1 files changed, 7 insertions, 4 deletions
diff --git a/plugin/metrics/setup.go b/plugin/metrics/setup.go
index c00f44a83..ffc0466f3 100644
--- a/plugin/metrics/setup.go
+++ b/plugin/metrics/setup.go
@@ -31,6 +31,13 @@ func setup(c *caddy.Controller) error {
return plugin.Error("prometheus", err)
}
+ // register the metrics to its address (ensure only one active metrics per address)
+ obj := uniqAddr.Set(m.Addr, m.OnStartup, m)
+ //propagate the real active Registry to current metrics
+ if om, ok := obj.(*Metrics); ok {
+ m.Reg = om.Reg
+ }
+
dnsserver.GetConfig(c).AddPlugin(func(next plugin.Handler) plugin.Handler {
m.Next = next
return m
@@ -55,10 +62,6 @@ func setup(c *caddy.Controller) error {
func prometheusParse(c *caddy.Controller) (*Metrics, error) {
var met = New(defaultAddr)
- defer func() {
- uniqAddr.Set(met.Addr, met.OnStartup)
- }()
-
i := 0
for c.Next() {
if i > 0 {