rakyll / go-test-trace

Go test with tracing.

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Document go-test-trace global trace context propagation to go test

rakyll opened this issue · comments

Currently, go-test-trace propagates the global context to go test via TRACE_CONTEXT environmental variable, but this feature is not documented and it's not clear what the limitations are.

Buildkit supports OTEL_TRACE_PARENT OTEL_TRACE_STATE for propagation https://github.com/moby/buildkit/blob/44891f4cb975ac70d62d40139ba819fe855da59c/util/tracing/env/traceenv.go#L21-L23 https://github.com/moby/buildkit/blob/44891f4cb975ac70d62d40139ba819fe855da59c/util/tracing/exec/traceexec.go#L23-L29 . It isn't my invention and there is prior tooling but not spec atm. @Aneurysm9 seemed ok for making something like this at least semi-official.

The grpc endpoint address in env is defined in spec though https://github.com/open-telemetry/opentelemetry-specification/blob/main/specification/protocol/exporter.md#configuration-options and is automatically supported by library but I think the way endpoint is overwritten from a flag disables this behavior https://github.com/rakyll/go-test-trace/blob/main/main.go#L63

See also open-telemetry/opentelemetry-specification#740.

There's a few examples of tools that have settled on TRACEPARENT and TRACESTATE environment variables. TIL that Buildkit also has environment variable support.

Maybe it would be worth weighing in there as it seems there is some growing effort towards standardising? It would be great if this Just Worked™ out of the box.

Once open-telemetry/opentelemetry-specification#740 is settled, I'm happy to adopt what's there. I agree that standardization is useful, so we have the primitive utilities for propagation available in every language.

Switched to TRACEPARENT interim, let's adjust it to whatever open-telemetry/opentelemetry-specification#740 ends up choosing.