plugin/metrics: Add a metric to monitor which plugin(s) is(are) enabled (#2700)

* Add a GaugeVec for enabled plugins monitoring.

Signed-off-by: Jiacheng Xu <xjcmaxwellcjx@gmail.com>

* Add server label and zone label for enable_plugin matric.

* Add a test for PluginEnabled metric

* Add description for enabledPlugin metric.

* Change the description for the enabledPlugin metric.

* Reset the enabledPlugin metric when restart the server.

* Add the bug session for enabledPlugin metric.

* Remove the resolveTCPAddr
This commit is contained in:
Jiacheng Xu
2019-03-23 10:43:15 +01:00
committed by Miek Gieben
parent a3dd8cdf8d
commit 0e137b23f1
5 changed files with 63 additions and 0 deletions

View File

@@ -7,6 +7,7 @@ import (
"github.com/coredns/coredns/core/dnsserver"
"github.com/coredns/coredns/coremain"
"github.com/coredns/coredns/plugin"
"github.com/coredns/coredns/plugin/metrics/vars"
clog "github.com/coredns/coredns/plugin/pkg/log"
"github.com/coredns/coredns/plugin/pkg/uniq"
@@ -50,6 +51,23 @@ func setup(c *caddy.Controller) error {
return nil
})
c.OnRestart(func() error {
vars.PluginEnabled.Reset()
return nil
})
c.OnStartup(func() error {
conf := dnsserver.GetConfig(c)
plugins := conf.Handlers()
for _, h := range conf.ListenHosts {
addrstr := conf.Transport + "://" + net.JoinHostPort(h, conf.Port)
for _, p := range plugins {
vars.PluginEnabled.WithLabelValues(addrstr, conf.Zone, p.Name()).Set(1)
}
}
return nil
})
c.OnRestart(m.OnRestart)
c.OnFinalShutdown(m.OnFinalShutdown)