From 2d5891938456c7804a49c64b5337b8bfce5c0461 Mon Sep 17 00:00:00 2001 From: Song Gao Date: Fri, 20 Sep 2024 16:35:14 +0800 Subject: [PATCH] fix: fix trace rest api propagation (#3214) Signed-off-by: Song Gao --- internal/server/rest.go | 10 ++++++++-- pkg/tracer/manager.go | 4 ++-- pkg/tracer/tracer.go | 2 +- 3 files changed, 11 insertions(+), 5 deletions(-) diff --git a/internal/server/rest.go b/internal/server/rest.go index e1212bf2cc..2b8910fc6d 100644 --- a/internal/server/rest.go +++ b/internal/server/rest.go @@ -31,6 +31,7 @@ import ( "github.com/gorilla/handlers" "github.com/gorilla/mux" "github.com/lf-edge/ekuiper/contract/v2/api" + "go.opentelemetry.io/otel/propagation" "golang.org/x/text/cases" "golang.org/x/text/language" @@ -138,9 +139,14 @@ func jsonByteResponse(buffer bytes.Buffer, w http.ResponseWriter, logger api.Log func traceMiddleware(next http.Handler) http.Handler { t := tracer.GetTracer() return http.HandlerFunc(func(w http.ResponseWriter, req *http.Request) { - _, span := t.Start(context.Background(), req.URL.Path) + propagator := propagation.TraceContext{} + originCtx := context.Background() + ctx := propagator.Extract(originCtx, propagation.HeaderCarrier(req.Header)) + if ctx != originCtx { + _, span := t.Start(ctx, req.URL.Path) + defer span.End() + } next.ServeHTTP(w, req) - span.End() }) } diff --git a/pkg/tracer/manager.go b/pkg/tracer/manager.go index c40a6c9998..e279ba1a24 100644 --- a/pkg/tracer/manager.go +++ b/pkg/tracer/manager.go @@ -38,11 +38,11 @@ type SpanExporter struct { spanStorage LocalSpanStorage } -func NewSpanExporter(remoteCollector bool) (*SpanExporter, error) { +func NewSpanExporter(remoteCollector bool, remoteEndpoint string) (*SpanExporter, error) { s := &SpanExporter{} if remoteCollector { exporter, err := otlptracehttp.New(context.Background(), - otlptracehttp.WithEndpoint(conf.Config.OpenTelemetry.RemoteEndpoint), + otlptracehttp.WithEndpoint(remoteEndpoint), otlptracehttp.WithInsecure(), ) if err != nil { diff --git a/pkg/tracer/tracer.go b/pkg/tracer/tracer.go index af1ddff27b..055dbb6a76 100644 --- a/pkg/tracer/tracer.go +++ b/pkg/tracer/tracer.go @@ -75,7 +75,7 @@ func (g *GlobalTracerManager) SetTracer(enableRemote bool, serviceName, endpoint g.ServiceName = serviceName g.EnableRemoteEndpoint = enableRemote g.RemoteEndpoint = endpoint - exporter, err := NewSpanExporter(enableRemote) + exporter, err := NewSpanExporter(enableRemote, endpoint) if err != nil { return err }