aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGravatar Ondřej Benkovský <ondrej.benkovsky@jamf.com> 2022-06-23 12:40:13 +0200
committerGravatar GitHub <noreply@github.com> 2022-06-23 03:40:13 -0700
commit501e50312e27c2aca18d50a8cb3c189b0bfcbab1 (patch)
tree392011cfb094b3c49f93a9dd5204f763288971d8
parentc9eedcb7d11a5c4c90aa4c538cbb07f3bffaaee5 (diff)
downloadcoredns-501e50312e27c2aca18d50a8cb3c189b0bfcbab1.tar.gz
coredns-501e50312e27c2aca18d50a8cb3c189b0bfcbab1.tar.zst
coredns-501e50312e27c2aca18d50a8cb3c189b0bfcbab1.zip
plugin/trace: make zipkin and datadog reporters log errors using CoreDNS logger (#5452)
-rw-r--r--plugin/trace/logger.go20
-rw-r--r--plugin/trace/trace.go11
2 files changed, 28 insertions, 3 deletions
diff --git a/plugin/trace/logger.go b/plugin/trace/logger.go
new file mode 100644
index 000000000..649938715
--- /dev/null
+++ b/plugin/trace/logger.go
@@ -0,0 +1,20 @@
+package trace
+
+import (
+ clog "github.com/coredns/coredns/plugin/pkg/log"
+)
+
+// loggerAdapter is a simple adapter around plugin logger made to implement io.Writer and ddtrace.Logger interface
+// in order to log errors from span reporters as warnings
+type loggerAdapter struct {
+ clog.P
+}
+
+func (l *loggerAdapter) Write(p []byte) (n int, err error) {
+ l.P.Warning(string(p))
+ return len(p), nil
+}
+
+func (l *loggerAdapter) Log(msg string) {
+ l.P.Warning(msg)
+}
diff --git a/plugin/trace/trace.go b/plugin/trace/trace.go
index 6bfd94dae..5c69b9249 100644
--- a/plugin/trace/trace.go
+++ b/plugin/trace/trace.go
@@ -4,6 +4,7 @@ package trace
import (
"context"
"fmt"
+ stdlog "log"
"net/http"
"sync"
"sync/atomic"
@@ -12,7 +13,7 @@ import (
"github.com/coredns/coredns/plugin"
"github.com/coredns/coredns/plugin/metadata"
"github.com/coredns/coredns/plugin/pkg/dnstest"
- "github.com/coredns/coredns/plugin/pkg/log"
+ clog "github.com/coredns/coredns/plugin/pkg/log"
"github.com/coredns/coredns/plugin/pkg/rcode"
_ "github.com/coredns/coredns/plugin/pkg/trace" // Plugin the trace package.
"github.com/coredns/coredns/request"
@@ -35,6 +36,8 @@ const (
metaTraceIdKey = "trace/traceid"
)
+var log = clog.NewWithPlugin("trace")
+
type traceTags struct {
Name string
Type string
@@ -90,10 +93,11 @@ func (t *trace) OnStartup() error {
case "datadog":
tracer := opentracer.New(
tracer.WithAgentAddr(t.Endpoint),
- tracer.WithDebugMode(log.D.Value()),
+ tracer.WithDebugMode(clog.D.Value()),
tracer.WithGlobalTag(ext.SpanTypeDNS, true),
tracer.WithServiceName(t.serviceName),
tracer.WithAnalyticsRate(t.datadogAnalyticsRate),
+ tracer.WithLogger(&loggerAdapter{log}),
)
t.tracer = tracer
t.tagSet = tagByProvider["datadog"]
@@ -105,7 +109,8 @@ func (t *trace) OnStartup() error {
}
func (t *trace) setupZipkin() error {
- reporter := zipkinhttp.NewReporter(t.Endpoint)
+ logOpt := zipkinhttp.Logger(stdlog.New(&loggerAdapter{log}, "", 0))
+ reporter := zipkinhttp.NewReporter(t.Endpoint, logOpt)
recorder, err := zipkin.NewEndpoint(t.serviceName, t.serviceEndpoint)
if err != nil {
log.Warningf("build Zipkin endpoint found err: %v", err)