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
-}