From b7814204a49f05ecb9f5920bb28038b0f09e4cd8 Mon Sep 17 00:00:00 2001 From: Bob Date: Tue, 10 Nov 2020 20:03:14 +0100 Subject: [PATCH] plugin/trace: Fix zipkin json_v2 (#4180) Automatically submitted. --- plugin/trace/README.md | 2 ++ plugin/trace/setup.go | 6 ++++-- plugin/trace/setup_test.go | 17 ++++++++++------- plugin/trace/trace.go | 1 + 4 files changed, 17 insertions(+), 9 deletions(-) diff --git a/plugin/trace/README.md b/plugin/trace/README.md index 6f8ecf692..78147f880 100644 --- a/plugin/trace/README.md +++ b/plugin/trace/README.md @@ -56,6 +56,8 @@ You can run Zipkin on a Docker host like this: docker run -d -p 9411:9411 openzipkin/zipkin ``` +:warning: The zipkin provider does not support the v1 API since coredns 1.7.1 + ## Examples Use an alternative Zipkin address: diff --git a/plugin/trace/setup.go b/plugin/trace/setup.go index 93d11766f..ad964bdc1 100644 --- a/plugin/trace/setup.go +++ b/plugin/trace/setup.go @@ -35,7 +35,9 @@ func traceParse(c *caddy.Controller) (*trace, error) { ) cfg := dnsserver.GetConfig(c) - tr.serviceEndpoint = cfg.ListenHosts[0] + ":" + cfg.Port + if cfg.ListenHosts[0] != "" { + tr.serviceEndpoint = cfg.ListenHosts[0] + ":" + cfg.Port + } for c.Next() { // trace var err error @@ -115,7 +117,7 @@ func normalizeEndpoint(epType, ep string) (string, string, error) { if epType == "zipkin" { if !strings.Contains(ep, "http") { - ep = "http://" + ep + "/api/v1/spans" + ep = "http://" + ep + "/api/v2/spans" } } diff --git a/plugin/trace/setup_test.go b/plugin/trace/setup_test.go index 1e3baaf4b..bbc5f987f 100644 --- a/plugin/trace/setup_test.go +++ b/plugin/trace/setup_test.go @@ -16,17 +16,17 @@ func TestTraceParse(t *testing.T) { clientServer bool }{ // oks - {`trace`, false, "http://localhost:9411/api/v1/spans", 1, `coredns`, false}, - {`trace localhost:1234`, false, "http://localhost:1234/api/v1/spans", 1, `coredns`, false}, + {`trace`, false, "http://localhost:9411/api/v2/spans", 1, `coredns`, false}, + {`trace localhost:1234`, false, "http://localhost:1234/api/v2/spans", 1, `coredns`, false}, {`trace http://localhost:1234/somewhere/else`, false, "http://localhost:1234/somewhere/else", 1, `coredns`, false}, - {`trace zipkin localhost:1234`, false, "http://localhost:1234/api/v1/spans", 1, `coredns`, false}, + {`trace zipkin localhost:1234`, false, "http://localhost:1234/api/v2/spans", 1, `coredns`, false}, {`trace datadog localhost`, false, "localhost", 1, `coredns`, false}, {`trace datadog http://localhost:8127`, false, "http://localhost:8127", 1, `coredns`, false}, {"trace datadog localhost {\n datadog_analytics_rate 0.1\n}", false, "localhost", 1, `coredns`, false}, - {"trace {\n every 100\n}", false, "http://localhost:9411/api/v1/spans", 100, `coredns`, false}, - {"trace {\n every 100\n service foobar\nclient_server\n}", false, "http://localhost:9411/api/v1/spans", 100, `foobar`, true}, - {"trace {\n every 2\n client_server true\n}", false, "http://localhost:9411/api/v1/spans", 2, `coredns`, true}, - {"trace {\n client_server false\n}", false, "http://localhost:9411/api/v1/spans", 1, `coredns`, false}, + {"trace {\n every 100\n}", false, "http://localhost:9411/api/v2/spans", 100, `coredns`, false}, + {"trace {\n every 100\n service foobar\nclient_server\n}", false, "http://localhost:9411/api/v2/spans", 100, `foobar`, true}, + {"trace {\n every 2\n client_server true\n}", false, "http://localhost:9411/api/v2/spans", 2, `coredns`, true}, + {"trace {\n client_server false\n}", false, "http://localhost:9411/api/v2/spans", 1, `coredns`, false}, // fails {`trace footype localhost:4321`, true, "", 1, "", false}, {"trace {\n every 2\n client_server junk\n}", true, "", 1, "", false}, @@ -47,6 +47,9 @@ func TestTraceParse(t *testing.T) { continue } + if "" != m.serviceEndpoint { + t.Errorf("Test %v: Expected serviceEndpoint to be '' but found: %s", i, m.serviceEndpoint) + } if test.endpoint != m.Endpoint { t.Errorf("Test %v: Expected endpoint %s but found: %s", i, test.endpoint, m.Endpoint) } diff --git a/plugin/trace/trace.go b/plugin/trace/trace.go index 4e1d1b4de..bbca68849 100644 --- a/plugin/trace/trace.go +++ b/plugin/trace/trace.go @@ -84,6 +84,7 @@ func (t *trace) setupZipkin() error { tracer, err := zipkin.NewTracer( reporter, zipkin.WithLocalEndpoint(recorder), + zipkin.WithSharedSpans(t.clientServer), ) if err != nil { return err