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

This reverts commit 8045aa279b.
This commit is contained in:
Miek Gieben 2018-10-31 21:03:46 +00:00 committed by GitHub
parent e332c8d8cb
commit 1ef0a02b46
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
7 changed files with 5 additions and 55 deletions

View file

@ -91,10 +91,6 @@ 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,7 +12,6 @@ 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"
@ -60,15 +59,6 @@ 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) {
@ -158,12 +148,10 @@ 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
}

View file

@ -72,10 +72,6 @@ The following place holders are supported:
* `{>do}`: is the EDNS0 DO (DNSSEC OK) bit set in the query
* `{>id}`: query ID
* `{>opcode}`: query OPCODE
* `{local}`: server's IP address, for IPv6 addresses these are enclosed in brackets: `[::1]`
* `{A}`: number of the A type answers in the response
* `{AAAA}`: number of the AAAA type answers in the response
* `{forward/resolving_proxy}`: if the query was forwarded to a resolver, the IP address and port of that replied resolver, else empty. The metadata plugin needs to be enabled to use this placeholder
The default Common Log Format is:

View file

@ -57,7 +57,7 @@ func (l Logger) ServeDNS(ctx context.Context, w dns.ResponseWriter, r *dns.Msg)
// If we don't set up a class in config, the default "all" will be added
// and we shouldn't have an empty rule.Class.
if rule.Class[response.All] || rule.Class[class] {
rep := replacer.New(ctx, r, rrw, CommonLogEmptyValue)
rep := replacer.New(r, rrw, CommonLogEmptyValue)
rule.Log.Println(rep.Replace(rule.Format))
}

View file

@ -1,13 +1,11 @@
package replacer
import (
"context"
"strconv"
"strings"
"time"
"github.com/coredns/coredns/plugin/pkg/dnstest"
"github.com/coredns/coredns/plugin/metadata"
"github.com/coredns/coredns/request"
"github.com/miekg/dns"
@ -33,7 +31,7 @@ type replacer struct {
// values into the replacer. rr may be nil if it is not
// available. emptyValue should be the string that is used
// in place of empty string (can still be empty string).
func New(ctx context.Context, r *dns.Msg, rr *dnstest.Recorder, emptyValue string) Replacer {
func New(r *dns.Msg, rr *dnstest.Recorder, emptyValue string) Replacer {
req := request.Request{W: rr, Req: r}
rep := replacer{
replacements: map[string]string{
@ -47,8 +45,6 @@ func New(ctx context.Context, r *dns.Msg, rr *dnstest.Recorder, emptyValue strin
"{size}": strconv.Itoa(req.Len()),
"{remote}": addrToRFC3986(req.IP()),
"{port}": req.Port(),
"{local}": addrToRFC3986(req.LocalIP()),
"{forward/resolving_proxy}": getMetadata(ctx, "forward/resolving_proxy"),
},
emptyValue: emptyValue,
}
@ -62,8 +58,6 @@ func New(ctx context.Context, r *dns.Msg, rr *dnstest.Recorder, emptyValue strin
rep.replacements["{duration}"] = strconv.FormatFloat(time.Since(rr.Start).Seconds(), 'f', -1, 64) + "s"
if rr.Msg != nil {
rep.replacements[headerReplacer+"rflags}"] = flagsToString(rr.Msg.MsgHdr)
rep.replacements["{A}"] = answersCount(rr.Msg, dns.TypeA)
rep.replacements["{AAAA}"] = answersCount(rr.Msg, dns.TypeAAAA)
}
}
@ -169,30 +163,6 @@ func addrToRFC3986(addr string) string {
return addr
}
//getMetadata will return value from Metadata or empty string
func getMetadata(ctx context.Context, label string) string {
if ctx != nil {
valueFunc := metadata.ValueFunc(ctx, label)
if valueFunc != nil {
return valueFunc()
}
}
return ""
}
//answersCount will calculate a number of answers which have the type passed
func answersCount(m *dns.Msg, rtype uint16) string {
count := 0
if m != nil {
for i := 0; i < len(m.Answer); i++ {
if m.Answer[i].Header().Rrtype == rtype {
count++
}
}
}
return strconv.Itoa(count)
}
const (
timeFormat = "02/Jan/2006:15:04:05 -0700"
headerReplacer = "{>"

View file

@ -17,7 +17,7 @@ func TestNewReplacer(t *testing.T) {
r.SetQuestion("example.org.", dns.TypeHINFO)
r.MsgHdr.AuthenticatedData = true
replaceValues := New(nil, r, w, "")
replaceValues := New(r, w, "")
switch v := replaceValues.(type) {
case replacer:
@ -47,7 +47,7 @@ func TestSet(t *testing.T) {
r.SetQuestion("example.org.", dns.TypeHINFO)
r.MsgHdr.AuthenticatedData = true
repl := New(nil, r, w, "")
repl := New(r, w, "")
repl.Set("name", "coredns.io.")
repl.Set("type", "A")

View file

@ -22,7 +22,7 @@ const (
NotMatch = "not_match"
)
func newReplacer(r *dns.Msg) replacer.Replacer { return replacer.New(nil, r, nil, "") }
func newReplacer(r *dns.Msg) replacer.Replacer { return replacer.New(r, nil, "") }
// condition is a rewrite condition.
type condition func(string, string) bool