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)
			}
		})
	})
~~~
This commit is contained in:
Miek Gieben
2017-12-27 14:14:53 +00:00
committed by GitHub
parent c655589fa3
commit 99047aee9b

View File

@@ -35,20 +35,23 @@ func New(addr string) *Metrics {
zoneMap: make(map[string]bool), zoneMap: make(map[string]bool),
} }
// Add the default collectors // Add the default collectors
met.Reg.MustRegister(prometheus.NewGoCollector()) met.MustRegister(prometheus.NewGoCollector())
met.Reg.MustRegister(prometheus.NewProcessCollector(os.Getpid(), "")) met.MustRegister(prometheus.NewProcessCollector(os.Getpid(), ""))
// Add all of our collectors // Add all of our collectors
met.Reg.MustRegister(vars.RequestCount) met.MustRegister(vars.RequestCount)
met.Reg.MustRegister(vars.RequestDuration) met.MustRegister(vars.RequestDuration)
met.Reg.MustRegister(vars.RequestSize) met.MustRegister(vars.RequestSize)
met.Reg.MustRegister(vars.RequestDo) met.MustRegister(vars.RequestDo)
met.Reg.MustRegister(vars.RequestType) met.MustRegister(vars.RequestType)
met.Reg.MustRegister(vars.ResponseSize) met.MustRegister(vars.ResponseSize)
met.Reg.MustRegister(vars.ResponseRcode) met.MustRegister(vars.ResponseRcode)
return met return met
} }
// MustRegister wraps m.Reg.MustRegister.
func (m *Metrics) MustRegister(c prometheus.Collector) { m.Reg.MustRegister(c) }
// AddZone adds zone z to m. // AddZone adds zone z to m.
func (m *Metrics) AddZone(z string) { func (m *Metrics) AddZone(z string) {
m.zoneMu.Lock() m.zoneMu.Lock()