plugin/template: update metrics to include server (#1731)

Add server label to the metrics and update the README.
This commit is contained in:
Miek Gieben
2018-04-27 19:37:12 +01:00
committed by GitHub
parent 13b1f5469a
commit 2a28efa877
3 changed files with 20 additions and 19 deletions

View File

@@ -8,6 +8,7 @@ import (
gotmpl "text/template"
"github.com/coredns/coredns/plugin"
"github.com/coredns/coredns/plugin/metrics"
"github.com/coredns/coredns/plugin/pkg/fall"
"github.com/coredns/coredns/plugin/pkg/upstream"
"github.com/coredns/coredns/request"
@@ -66,7 +67,7 @@ func (h Handler) ServeDNS(ctx context.Context, w dns.ResponseWriter, r *dns.Msg)
continue
}
TemplateMatchesCount.WithLabelValues(data.Zone, data.Class, data.Type).Inc()
templateMatchesCount.WithLabelValues(metrics.WithServer(ctx), data.Zone, data.Class, data.Type).Inc()
if template.rcode == dns.RcodeServerFailure {
return template.rcode, nil
@@ -78,7 +79,7 @@ func (h Handler) ServeDNS(ctx context.Context, w dns.ResponseWriter, r *dns.Msg)
msg.Rcode = template.rcode
for _, answer := range template.answer {
rr, err := executeRRTemplate("answer", answer, data)
rr, err := executeRRTemplate(metrics.WithServer(ctx), "answer", answer, data)
if err != nil {
return dns.RcodeServerFailure, err
}
@@ -89,14 +90,14 @@ func (h Handler) ServeDNS(ctx context.Context, w dns.ResponseWriter, r *dns.Msg)
}
}
for _, additional := range template.additional {
rr, err := executeRRTemplate("additional", additional, data)
rr, err := executeRRTemplate(metrics.WithServer(ctx), "additional", additional, data)
if err != nil {
return dns.RcodeServerFailure, err
}
msg.Extra = append(msg.Extra, rr)
}
for _, authority := range template.authority {
rr, err := executeRRTemplate("authority", authority, data)
rr, err := executeRRTemplate(metrics.WithServer(ctx), "authority", authority, data)
if err != nil {
return dns.RcodeServerFailure, err
}
@@ -114,16 +115,16 @@ func (h Handler) ServeDNS(ctx context.Context, w dns.ResponseWriter, r *dns.Msg)
// Name implements the plugin.Handler interface.
func (h Handler) Name() string { return "template" }
func executeRRTemplate(section string, template *gotmpl.Template, data templateData) (dns.RR, error) {
func executeRRTemplate(server, section string, template *gotmpl.Template, data templateData) (dns.RR, error) {
buffer := &bytes.Buffer{}
err := template.Execute(buffer, data)
if err != nil {
TemplateFailureCount.WithLabelValues(data.Zone, data.Class, data.Type, section, template.Tree.Root.String()).Inc()
templateFailureCount.WithLabelValues(server, data.Zone, data.Class, data.Type, section, template.Tree.Root.String()).Inc()
return nil, err
}
rr, err := dns.NewRR(buffer.String())
if err != nil {
TemplateRRFailureCount.WithLabelValues(data.Zone, data.Class, data.Type, section, template.Tree.Root.String()).Inc()
templateRRFailureCount.WithLabelValues(server, data.Zone, data.Class, data.Type, section, template.Tree.Root.String()).Inc()
return rr, err
}
return rr, nil