log/forward plugins: Extend dns query logging (#2240)

Automatically submitted.
This commit is contained in:
Dzmitry Razhanski
2018-10-29 21:50:31 +03:00
committed by corbot[bot]
parent e6d02a3fd2
commit 8045aa279b
7 changed files with 55 additions and 5 deletions

View File

@@ -91,6 +91,10 @@ On each endpoint, the timeouts of the communication are set by default and autom
* dialTimeout by default is 30 sec, and can decrease automatically down to 100ms
* readTimeout by default is 2 sec, and can decrease automatically down to 200ms
## Metadata
* forward/resolving_proxy : provide the IP address and port of the upstream resolver used to resolve the current DNS query.
## Metrics
If monitoring is enabled (via the *prometheus* directive) then the following metric are exported:

View File

@@ -12,6 +12,7 @@ import (
"github.com/coredns/coredns/plugin"
"github.com/coredns/coredns/plugin/debug"
"github.com/coredns/coredns/plugin/metadata"
clog "github.com/coredns/coredns/plugin/pkg/log"
"github.com/coredns/coredns/request"
@@ -59,6 +60,15 @@ func (f *Forward) Len() int { return len(f.proxies) }
// Name implements plugin.Handler.
func (f *Forward) Name() string { return "forward" }
//declareMetadata adds to the context a metadata parameter which will return the passed value.
func (f *Forward) declareMetadata(ctx context.Context, name string, value string) bool {
label := f.Name()+"/"+name
if metadata.IsLabel(label) {
return metadata.SetValueFunc(ctx, label, func() string { return value })
}
return false
}
// ServeDNS implements plugin.Handler.
func (f *Forward) ServeDNS(ctx context.Context, w dns.ResponseWriter, r *dns.Msg) (int, error) {
@@ -148,10 +158,12 @@ func (f *Forward) ServeDNS(ctx context.Context, w dns.ResponseWriter, r *dns.Msg
formerr := state.ErrorMessage(dns.RcodeFormatError)
w.WriteMsg(formerr)
f.declareMetadata(ctx, "resolving_proxy", proxy.addr)
return 0, nil
}
w.WriteMsg(ret)
f.declareMetadata(ctx, "resolving_proxy", proxy.addr)
return 0, nil
}