diff --git a/contrib/gin-gonic/gin/gintrace.go b/contrib/gin-gonic/gin/gintrace.go index 7c9a3aa9ed..86470b476f 100644 --- a/contrib/gin-gonic/gin/gintrace.go +++ b/contrib/gin-gonic/gin/gintrace.go @@ -30,6 +30,8 @@ func Middleware(service string, opts ...Option) gin.HandlerFunc { log.Debug("contrib/gin-gonic/gin: Configuring Middleware: Service: %s, %#v", cfg.serviceName, cfg) spanOpts := []tracer.StartSpanOption{ tracer.ServiceName(cfg.serviceName), + tracer.Tag(ext.Component, "gin-gonic/gin"), + tracer.Tag(ext.SpanKind, ext.SpanKindServer), } return func(c *gin.Context) { if cfg.ignoreRequest(c) { @@ -40,8 +42,6 @@ func Middleware(service string, opts ...Option) gin.HandlerFunc { opts = append(opts, tracer.Tag(ext.EventSampleRate, cfg.analyticsRate)) } opts = append(opts, tracer.Tag(ext.HTTPRoute, c.FullPath())) - opts = append(opts, tracer.Tag(ext.Component, "gin-gonic/gin")) - opts = append(opts, tracer.Tag(ext.SpanKind, ext.SpanKindServer)) span, ctx := httptrace.StartRequestSpan(c.Request, opts...) defer func() { diff --git a/contrib/go-chi/chi.v5/chi.go b/contrib/go-chi/chi.v5/chi.go index 8488ea3902..35f7913bf4 100644 --- a/contrib/go-chi/chi.v5/chi.go +++ b/contrib/go-chi/chi.v5/chi.go @@ -29,7 +29,9 @@ func Middleware(opts ...Option) func(next http.Handler) http.Handler { fn(cfg) } log.Debug("contrib/go-chi/chi.v5: Configuring Middleware: %#v", cfg) - spanOpts := append(cfg.spanOpts, tracer.ServiceName(cfg.serviceName)) + spanOpts := append(cfg.spanOpts, tracer.ServiceName(cfg.serviceName), + tracer.Tag(ext.Component, "go-chi/chi.v5"), + tracer.Tag(ext.SpanKind, ext.SpanKindServer)) return func(next http.Handler) http.Handler { return http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { if cfg.ignoreRequest(r) { @@ -37,8 +39,6 @@ func Middleware(opts ...Option) func(next http.Handler) http.Handler { return } opts := spanOpts - opts = append(opts, tracer.Tag(ext.Component, "go-chi/chi.v5")) - opts = append(opts, tracer.Tag(ext.SpanKind, ext.SpanKindServer)) if !math.IsNaN(cfg.analyticsRate) { opts = append(opts, tracer.Tag(ext.EventSampleRate, cfg.analyticsRate)) } diff --git a/contrib/go-chi/chi/chi.go b/contrib/go-chi/chi/chi.go index c4b31c8680..982b780304 100644 --- a/contrib/go-chi/chi/chi.go +++ b/contrib/go-chi/chi/chi.go @@ -29,7 +29,9 @@ func Middleware(opts ...Option) func(next http.Handler) http.Handler { fn(cfg) } log.Debug("contrib/go-chi/chi: Configuring Middleware: %#v", cfg) - spanOpts := append(cfg.spanOpts, tracer.ServiceName(cfg.serviceName)) + spanOpts := append(cfg.spanOpts, tracer.ServiceName(cfg.serviceName), + tracer.Tag(ext.Component, "go-chi/chi"), + tracer.Tag(ext.SpanKind, ext.SpanKindServer)) return func(next http.Handler) http.Handler { return http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { if cfg.ignoreRequest(r) { @@ -37,8 +39,6 @@ func Middleware(opts ...Option) func(next http.Handler) http.Handler { return } opts := spanOpts - opts = append(opts, tracer.Tag(ext.Component, "go-chi/chi")) - opts = append(opts, tracer.Tag(ext.SpanKind, ext.SpanKindServer)) if !math.IsNaN(cfg.analyticsRate) { opts = append(opts, tracer.Tag(ext.EventSampleRate, cfg.analyticsRate)) } diff --git a/contrib/gorilla/mux/mux.go b/contrib/gorilla/mux/mux.go index fc5f90a427..5bef71c2ac 100644 --- a/contrib/gorilla/mux/mux.go +++ b/contrib/gorilla/mux/mux.go @@ -100,8 +100,6 @@ func (r *Router) ServeHTTP(w http.ResponseWriter, req *http.Request) { route, _ = match.Route.GetPathTemplate() } spanopts = append(spanopts, r.config.spanOpts...) - spanopts = append(spanopts, tracer.Tag(ext.Component, "gorilla/mux")) - spanopts = append(spanopts, tracer.Tag(ext.SpanKind, ext.SpanKindServer)) if r.config.headerTags { spanopts = append(spanopts, headerTagsFromRequest(req)) @@ -122,6 +120,8 @@ func (r *Router) ServeHTTP(w http.ResponseWriter, req *http.Request) { // requests and responses served by the router. func WrapRouter(router *mux.Router, opts ...RouterOption) *Router { cfg := newConfig(opts) + cfg.spanOpts = append(cfg.spanOpts, tracer.Tag(ext.Component, "gorilla/mux")) + cfg.spanOpts = append(cfg.spanOpts, tracer.Tag(ext.SpanKind, ext.SpanKindServer)) log.Debug("contrib/gorilla/mux: Configuring Router: %#v", cfg) return &Router{ Router: router, diff --git a/contrib/julienschmidt/httprouter/httprouter.go b/contrib/julienschmidt/httprouter/httprouter.go index f45382ad0d..f536a83acc 100644 --- a/contrib/julienschmidt/httprouter/httprouter.go +++ b/contrib/julienschmidt/httprouter/httprouter.go @@ -35,6 +35,10 @@ func New(opts ...RouterOption) *Router { if !math.IsNaN(cfg.analyticsRate) { cfg.spanOpts = append(cfg.spanOpts, tracer.Tag(ext.EventSampleRate, cfg.analyticsRate)) } + + cfg.spanOpts = append(cfg.spanOpts, tracer.Tag(ext.SpanKind, ext.SpanKindServer)) + cfg.spanOpts = append(cfg.spanOpts, tracer.Tag(ext.Component, "julienschmidt/httprouter")) + log.Debug("contrib/julienschmidt/httprouter: Configuring Router: %#v", cfg) return &Router{httprouter.New(), cfg} } @@ -49,9 +53,6 @@ func (r *Router) ServeHTTP(w http.ResponseWriter, req *http.Request) { } resource := req.Method + " " + route - r.config.spanOpts = append(r.config.spanOpts, tracer.Tag(ext.SpanKind, ext.SpanKindServer)) - r.config.spanOpts = append(r.config.spanOpts, tracer.Tag(ext.Component, "julienschmidt/httprouter")) - httptrace.TraceAndServe(r.Router, w, req, &httptrace.ServeConfig{ Service: r.config.serviceName, Resource: resource, diff --git a/contrib/net/http/http.go b/contrib/net/http/http.go index b4f339a8bf..b28acc6b08 100644 --- a/contrib/net/http/http.go +++ b/contrib/net/http/http.go @@ -10,7 +10,6 @@ import ( "net/http" "gopkg.in/DataDog/dd-trace-go.v1/ddtrace/ext" - "gopkg.in/DataDog/dd-trace-go.v1/ddtrace/tracer" "gopkg.in/DataDog/dd-trace-go.v1/internal/log" ) @@ -29,6 +28,8 @@ func NewServeMux(opts ...Option) *ServeMux { for _, fn := range opts { fn(cfg) } + cfg.spanOpts = append(cfg.spanOpts, tracer.Tag(ext.SpanKind, ext.SpanKindServer)) + cfg.spanOpts = append(cfg.spanOpts, tracer.Tag(ext.Component, "net/http")) log.Debug("contrib/net/http: Configuring ServeMux: %#v", cfg) return &ServeMux{ ServeMux: http.NewServeMux(), @@ -52,9 +53,6 @@ func (mux *ServeMux) ServeHTTP(w http.ResponseWriter, r *http.Request) { resource = r.Method + " " + route } - mux.cfg.spanOpts = append(mux.cfg.spanOpts, tracer.Tag(ext.SpanKind, ext.SpanKindServer)) - mux.cfg.spanOpts = append(mux.cfg.spanOpts, tracer.Tag(ext.Component, "net/http")) - TraceAndServe(mux.ServeMux, w, r, &ServeConfig{ Service: mux.cfg.serviceName, Resource: resource, @@ -71,6 +69,8 @@ func WrapHandler(h http.Handler, service, resource string, opts ...Option) http. for _, fn := range opts { fn(cfg) } + cfg.spanOpts = append(cfg.spanOpts, tracer.Tag(ext.SpanKind, ext.SpanKindServer)) + cfg.spanOpts = append(cfg.spanOpts, tracer.Tag(ext.Component, "net/http")) log.Debug("contrib/net/http: Wrapping Handler: Service: %s, Resource: %s, %#v", service, resource, cfg) return http.HandlerFunc(func(w http.ResponseWriter, req *http.Request) { if cfg.ignoreRequest(req) { @@ -81,9 +81,6 @@ func WrapHandler(h http.Handler, service, resource string, opts ...Option) http. resource = r } - cfg.spanOpts = append(cfg.spanOpts, tracer.Tag(ext.SpanKind, ext.SpanKindServer)) - cfg.spanOpts = append(cfg.spanOpts, tracer.Tag(ext.Component, "net/http")) - TraceAndServe(h, w, req, &ServeConfig{ Service: service, Resource: resource, diff --git a/contrib/urfave/negroni/negroni.go b/contrib/urfave/negroni/negroni.go index 22ff8ca618..4579ed88fb 100644 --- a/contrib/urfave/negroni/negroni.go +++ b/contrib/urfave/negroni/negroni.go @@ -29,8 +29,6 @@ func (m *DatadogMiddleware) ServeHTTP(w http.ResponseWriter, r *http.Request, ne if !math.IsNaN(m.cfg.analyticsRate) { opts = append(opts, tracer.Tag(ext.EventSampleRate, m.cfg.analyticsRate)) } - opts = append(opts, tracer.Tag(ext.Component, "urfave/negroni")) - opts = append(opts, tracer.Tag(ext.SpanKind, ext.SpanKindServer)) span, ctx := httptrace.StartRequestSpan(r, opts...) defer func() { @@ -59,6 +57,8 @@ func Middleware(opts ...Option) *DatadogMiddleware { for _, fn := range opts { fn(cfg) } + cfg.spanOpts = append(cfg.spanOpts, tracer.Tag(ext.Component, "urfave/negroni")) + cfg.spanOpts = append(cfg.spanOpts, tracer.Tag(ext.SpanKind, ext.SpanKindServer)) log.Debug("contrib/urgave/negroni: Configuring Middleware: %#v", cfg) m := DatadogMiddleware{