diff options
author | 2017-12-27 14:14:53 +0000 | |
---|---|---|
committer | 2017-12-27 14:14:53 +0000 | |
commit | 99047aee9bea3a957e73ef774441ff881967de21 (patch) | |
tree | a5c0b2cb55c6aef81c6d97222b086fa38834046e | |
parent | c655589fa3b33a28306fd501d3001374af60f9cd (diff) | |
download | coredns-99047aee9bea3a957e73ef774441ff881967de21.tar.gz coredns-99047aee9bea3a957e73ef774441ff881967de21.tar.zst coredns-99047aee9bea3a957e73ef774441ff881967de21.zip |
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)
}
})
})
~~~
-rw-r--r-- | plugin/metrics/metrics.go | 21 |
1 files 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() |