From 99047aee9bea3a957e73ef774441ff881967de21 Mon Sep 17 00:00:00 2001 From: Miek Gieben Date: Wed, 27 Dec 2017 14:14:53 +0000 Subject: [PATCH] plugin/metrics: convience MustRegister function (#1332) This leave most of the code intact, but we need to stop vendoring prometheus, because, again, plugins what want to use it. Not vendoring prometheus makes my forward metrics show up again. Code looks bit convoluted, but works: ~~~ c.OnStartup(func() error { once.Do(func() { m := dnsserver.GetConfig(c).Handler("prometheus") if m == nil { return } if x, ok := m.(*metrics.Metrics); ok { x.MustRegister(RequestCount) x.MustRegister(RcodeCount) x.MustRegister(RequestDuration) x.MustRegister(HealthcheckFailureCount) x.MustRegister(SocketGauge) } }) }) ~~~ --- plugin/metrics/metrics.go | 21 ++++++++++++--------- 1 file changed, 12 insertions(+), 9 deletions(-) diff --git a/plugin/metrics/metrics.go b/plugin/metrics/metrics.go index a2ded2235..70f82a664 100644 --- a/plugin/metrics/metrics.go +++ b/plugin/metrics/metrics.go @@ -35,20 +35,23 @@ func New(addr string) *Metrics { zoneMap: make(map[string]bool), } // Add the default collectors - met.Reg.MustRegister(prometheus.NewGoCollector()) - met.Reg.MustRegister(prometheus.NewProcessCollector(os.Getpid(), "")) + met.MustRegister(prometheus.NewGoCollector()) + met.MustRegister(prometheus.NewProcessCollector(os.Getpid(), "")) // Add all of our collectors - met.Reg.MustRegister(vars.RequestCount) - met.Reg.MustRegister(vars.RequestDuration) - met.Reg.MustRegister(vars.RequestSize) - met.Reg.MustRegister(vars.RequestDo) - met.Reg.MustRegister(vars.RequestType) - met.Reg.MustRegister(vars.ResponseSize) - met.Reg.MustRegister(vars.ResponseRcode) + met.MustRegister(vars.RequestCount) + met.MustRegister(vars.RequestDuration) + met.MustRegister(vars.RequestSize) + met.MustRegister(vars.RequestDo) + met.MustRegister(vars.RequestType) + met.MustRegister(vars.ResponseSize) + met.MustRegister(vars.ResponseRcode) return met } +// MustRegister wraps m.Reg.MustRegister. +func (m *Metrics) MustRegister(c prometheus.Collector) { m.Reg.MustRegister(c) } + // AddZone adds zone z to m. func (m *Metrics) AddZone(z string) { m.zoneMu.Lock()