Add OTLP/Jaeger tracing support for daemon and coordinator #1327
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Closes #1313
Summary
Implements OTLP tracing for
dora-daemonanddora-coordinator, enabling distributed tracing via Jaeger when theDORA_OTLP_ENDPOINTenvironment variable is set.Changes
telemetry.rs: Added service name to OTLP Resource for proper service identification in Jaegerlib.rs: Registered global tracer provider to enable span exportdaemon.rs: Runtime-safe OTLP initialization with OtelGuard lifetime managementcoordinator.rs: Runtime-safe OTLP initialization with OtelGuard lifetime managementKey Technical Details
The implementation addresses a critical async/sync challenge: OTLP uses async gRPC (Tonic) but daemon/coordinator initialize tracing before creating the tokio runtime. The solution uses conditional two-phase initialization:
Additionally, the
OtelGuardmust be stored for the lifetime of the runtime to prevent the tracer provider from shutting down immediately after initialization.Testing
Tested with Jaeger all-in-one: