@cryptotaxi247 / kubo / commits / c6a59c9cc

feat(tracing): use OTEL_PROPAGATORS as per OTel spec (#9801)

Henrique Dias committed Apr 6, 2023 at 16:36 UTC c6a59c9cc1e712b4ac4c6e5ce15c3eb663d73ed3
7 files changed +24 -13
cmd/ipfs/main.go
+3 -3
@@ -32,6 +32,7 @@ import (
32 madns "github.com/multiformats/go-multiaddr-dns"
33 manet "github.com/multiformats/go-multiaddr/net"
34 "go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp"
35 + "go.opentelemetry.io/contrib/propagators/autoprop"
36 "go.opentelemetry.io/otel"
37 "go.opentelemetry.io/otel/attribute"
38 "go.opentelemetry.io/otel/codes"
@@ -106,6 +107,7 @@ func mainRet() (exitCode int) {
107 }
108 }()
109 otel.SetTracerProvider(tp)
110 + otel.SetTextMapPropagator(autoprop.NewTextMapPropagator())
111 tracer = tp.Tracer("Kubo-cli")
112
113 stopFunc, err := profileIfEnabled()
@@ -314,9 +316,7 @@ func makeExecutor(req *cmds.Request, env interface{}) (cmds.Executor, error) {
316 return nil, fmt.Errorf("unsupported API address: %s", apiAddr)
317 }
318 opts = append(opts, cmdhttp.ClientWithHTTPClient(&http.Client{
317 - Transport: otelhttp.NewTransport(tpt,
318 - otelhttp.WithPropagators(tracing.Propagator()),
319 - ),
319 + Transport: otelhttp.NewTransport(tpt),
320 }))
321
322 return tracingWrappedExecutor{cmdhttp.NewClient(host, opts...)}, nil
core/corehttp/commands.go
+1 -2
@@ -17,7 +17,6 @@ import (
17 config "github.com/ipfs/kubo/config"
18 "github.com/ipfs/kubo/core"
19 corecommands "github.com/ipfs/kubo/core/commands"
20 - "github.com/ipfs/kubo/tracing"
20 "go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp"
21 )
22
@@ -147,7 +146,7 @@ func commandsOption(cctx oldcmds.Context, command *cmds.Command, allowGet bool)
146 patchCORSVars(cfg, l.Addr())
147
148 cmdHandler := cmdsHttp.NewHandler(&cctx, command, cfg)
150 - cmdHandler = otelhttp.NewHandler(cmdHandler, "corehttp.cmdsHandler", otelhttp.WithPropagators(tracing.Propagator()))
149 + cmdHandler = otelhttp.NewHandler(cmdHandler, "corehttp.cmdsHandler")
150 mux.Handle(APIPath+"/", cmdHandler)
151 return mux, nil
152 }
core/corehttp/gateway.go
+1 -3
@@ -50,9 +50,7 @@ func GatewayOption(paths ...string) ServeOption {
50 }
51
52 gw := gateway.NewHandler(gwConfig, gwAPI)
53 - // TODO: Add otelhttp.WithPropagators(tracing.Propagator()) option to
54 - // propagate traces through the gateway once we test this feature.
55 - gw = otelhttp.NewHandler(gw, "Gateway.Request")
53 + gw = otelhttp.NewHandler(gw, "Gateway")
54
55 // By default, our HTTP handler is the gateway handler.
56 handler := gw.ServeHTTP
docs/environment-variables.md
+4
@@ -231,3 +231,7 @@ $ OTEL_TRACES_EXPORTER=jaeger ipfs daemon
231 ```
232
233 Finally, the [Jaeger UI](https://github.com/jaegertracing/jaeger-ui#readme) is available at http://localhost:16686
234 +
235 +## `OTEL_PROPAGATORS`
236 +
237 +See https://github.com/open-telemetry/opentelemetry-specification/blob/main/specification/sdk-environment-variables.md#general-sdk-configuration
go.mod
+5
@@ -73,6 +73,7 @@ require (
73 github.com/whyrusleeping/multiaddr-filter v0.0.0-20160516205228-e903e4adabd7
74 go.opencensus.io v0.24.0
75 go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.40.0
76 + go.opentelemetry.io/contrib/propagators/autoprop v0.40.0
77 go.opentelemetry.io/otel v1.14.0
78 go.opentelemetry.io/otel/exporters/jaeger v1.14.0
79 go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc v1.14.0
@@ -203,6 +204,10 @@ require (
204 github.com/whyrusleeping/cbor-gen v0.0.0-20230126041949-52956bd4c9aa // indirect
205 github.com/whyrusleeping/chunker v0.0.0-20181014151217-fe64bd25879f // indirect
206 github.com/whyrusleeping/go-keyspace v0.0.0-20160322163242-5b898ac5add1 // indirect
207 + go.opentelemetry.io/contrib/propagators/aws v1.15.0 // indirect
208 + go.opentelemetry.io/contrib/propagators/b3 v1.15.0 // indirect
209 + go.opentelemetry.io/contrib/propagators/jaeger v1.15.0 // indirect
210 + go.opentelemetry.io/contrib/propagators/ot v1.15.0 // indirect
211 go.opentelemetry.io/otel/exporters/otlp/internal/retry v1.14.0 // indirect
212 go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.14.0 // indirect
213 go.opentelemetry.io/otel/metric v0.37.0 // indirect
go.sum
+10
@@ -927,6 +927,16 @@ go.opencensus.io v0.24.0 h1:y73uSU6J157QMP2kn2r30vwW1A2W2WFwSCGnAVxeaD0=
927 go.opencensus.io v0.24.0/go.mod h1:vNK8G9p7aAivkbmorf4v+7Hgx+Zs0yY+0fOtgBfjQKo=
928 go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.40.0 h1:lE9EJyw3/JhrjWH/hEy9FptnalDQgj7vpbgC2KCCCxE=
929 go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.40.0/go.mod h1:pcQ3MM3SWvrA71U4GDqv9UFDJ3HQsW7y5ZO3tDTlUdI=
930 +go.opentelemetry.io/contrib/propagators/autoprop v0.40.0 h1:Lj33jj7eIrBfIShiK8NU91u2BglKnUS1UUxVemuQJtw=
931 +go.opentelemetry.io/contrib/propagators/autoprop v0.40.0/go.mod h1:6QO816FeZ+6zahs6hYqbUCCsnNBm7o+t4iwVySpzcdI=
932 +go.opentelemetry.io/contrib/propagators/aws v1.15.0 h1:FLe+bRTMAhEALItDQt1U2S/rdq8/rGGJTJpOpCDvMu0=
933 +go.opentelemetry.io/contrib/propagators/aws v1.15.0/go.mod h1:Z/nqdjqKjErrS3gYoEMZt8//dt8VZbqalD0V+7vh7lM=
934 +go.opentelemetry.io/contrib/propagators/b3 v1.15.0 h1:bMaonPyFcAvZ4EVzkUNkfnUHP5Zi63CIDlA3dRsEg8Q=
935 +go.opentelemetry.io/contrib/propagators/b3 v1.15.0/go.mod h1:VjU0g2v6HSQ+NwfifambSLAeBgevjIcqmceaKWEzl0c=
936 +go.opentelemetry.io/contrib/propagators/jaeger v1.15.0 h1:xdJjwy5t/8I+TZehMMQ+r2h50HREihH2oMUhimQ+jug=
937 +go.opentelemetry.io/contrib/propagators/jaeger v1.15.0/go.mod h1:tU0nwW4QTvKceNUP60/PQm0FI8zDSwey7gIFt3RR/yw=
938 +go.opentelemetry.io/contrib/propagators/ot v1.15.0 h1:iBNejawWy7wWZ5msuZDNcMjBy14Wc0v3gCAXukGHN/Q=
939 +go.opentelemetry.io/contrib/propagators/ot v1.15.0/go.mod h1:0P7QQ+MHt6SXR1ATaMpewSiWlp8NbKErNLKcaU4EEKI=
940 go.opentelemetry.io/otel v1.14.0 h1:/79Huy8wbf5DnIPhemGB+zEPVwnN6fuQybr/SRXa6hM=
941 go.opentelemetry.io/otel v1.14.0/go.mod h1:o4buv+dJzx8rohcUeRmWUZhqupFvzWis188WlggnNeU=
942 go.opentelemetry.io/otel/exporters/jaeger v1.14.0 h1:CjbUNd4iN2hHmWekmOqZ+zSCU+dzZppG8XsV+A3oc8Q=
tracing/tracing.go
-5
@@ -13,7 +13,6 @@ import (
13 "go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc"
14 "go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracehttp"
15 "go.opentelemetry.io/otel/exporters/zipkin"
16 - "go.opentelemetry.io/otel/propagation"
16 "go.opentelemetry.io/otel/sdk/resource"
17 "go.opentelemetry.io/otel/sdk/trace"
18 semconv "go.opentelemetry.io/otel/semconv/v1.4.0"
@@ -147,7 +146,3 @@ func NewTracerProvider(ctx context.Context) (shutdownTracerProvider, error) {
146 func Span(ctx context.Context, componentName string, spanName string, opts ...traceapi.SpanStartOption) (context.Context, traceapi.Span) {
147 return otel.Tracer("Kubo").Start(ctx, fmt.Sprintf("%s.%s", componentName, spanName), opts...)
148 }
150 -
151 -func Propagator() propagation.TextMapPropagator {
152 - return propagation.NewCompositeTextMapPropagator(propagation.TraceContext{}, propagation.Baggage{})
153 -}