Skip to content

trace: add OpenTelemetry backend, deprecate OpenTracing#5

Closed
timvaillancourt wants to merge 1 commit intomainfrom
otel-tracing
Closed

trace: add OpenTelemetry backend, deprecate OpenTracing#5
timvaillancourt wants to merge 1 commit intomainfrom
otel-tracing

Conversation

@timvaillancourt
Copy link
Owner

What's this?

Adds a new --tracer opentelemetry backend that exports traces via OTLP/gRPC, and deprecates the existing opentracing-jaeger and opentracing-datadog backends.

How it works

  • New otelTracingService implements the existing tracingService interface using the OpenTelemetry SDK
  • Custom gRPC interceptors handle trace context propagation (the otelgrpc library removed its interceptor API in v0.63.0, so we write thin wrappers)
  • New plugin_otel.go registers the "opentelemetry" factory with OTLP/gRPC exporter, configurable via --otel-endpoint and --otel-insecure
  • The shared --tracing-sampling-rate flag moves from plugin_jaeger.go to trace.go so all backends can use it
  • Both old backends log a deprecation warning at startup
  • Both backends coexist for one release cycle — deprecated in v24, removed in v25
  • Changelog entry documents the new backend, deprecation, and migration path

Why not just replace?

Existing users of --tracer opentracing-jaeger or --tracer opentracing-datadog need time to migrate. Keeping both for one release avoids a breaking change. The jaeger-client-go library is archived and the Jaeger project recommends migrating to OpenTelemetry.

v25 cleanup

After the deprecation period, we can delete opentracing.go, plugin_jaeger.go, plugin_datadog.go, logger.go and remove opentracing-go, opentracing-contrib/go-grpc, uber/jaeger-client-go, and dd-trace-go.v1 from go.mod. vtadmin/grpcserver/server.go also has direct OpenTracing usage that will need migrating.


Most of this was written by Claude Code — I provided direction and design decisions.

Add a new `opentelemetry` tracing backend that exports traces via
OTLP/gRPC, sitting alongside the existing `opentracing-jaeger` and
`opentracing-datadog` backends for one release cycle.

The OpenTracing-based backends are deprecated in v24 and will be
removed in v25. Both now log a deprecation warning at startup.

The shared `--tracing-sampling-rate` flag is moved to trace.go so
all backends can reference it without duplicate registration.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Signed-off-by: Tim Vaillancourt <tim@timvaillancourt.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant