feat(docker): export driver traces over OTLP - #2851
Conversation
6b81d9e to
1eb0de4
Compare
|
🌿 Preview your docs: https://nvidia-preview-pr-2851.docs.buildwithfern.com/openshell |
johntmyers
left a comment
There was a problem hiding this comment.
gator-agent
PR Review Status
Validation: Project-valid observability work under roadmap issue #1055 and the gateway OpenTelemetry design in #2507.
Head SHA: 1eb0de44e898a80b2af9c148a252cb477eb48cce
Base SHA: ef296806f52c03956a4bb7ce9a384105160f9c6a
Merge base SHA: ef296806f52c03956a4bb7ce9a384105160f9c6a
Patch ID: 5306193da05a425d1b9908d4b1f4dc43a2232492
Gator payload: 4
Review mode: initial
Previous reviewed SHA: none
Review budget exhausted: no
Maintainer decision required: no
Blocking findings:
GATOR-1eb0de44-01: The background Docker provisioning task retains the completed scheduling-operation span for its full lifetime, makingdocker.schedule_sandboxduration and export timing incorrect.
Carried findings:
- None
Non-blocking suggestions:
- None
Docs: The gateway configuration reference and architecture overview are updated; no additional Fern navigation change is needed for this tracing implementation.
Next state: gator:in-review
Mirror the VM and Podman driver tracing setup for Docker. Export Docker driver spans through OTLP/gRPC as the distinct openshell-driver-docker service, preserve gateway trace context, record lifecycle and asynchronous provisioning operations, and report gRPC failures. Docker currently runs in-process when selected as a built-in gateway driver. Add the same temporary server-boundary shim used by Podman so traces retain the shape they will have when Docker moves to a separate process. Generalize the gateway provider selection for both in-process drivers and share the OTLP collector fixture across Docker, Podman, and VM tracing tests. Signed-off-by: Kris Hicks <khicks@nvidia.com>
1eb0de4 to
45aea6f
Compare
|
Label |
johntmyers
left a comment
There was a problem hiding this comment.
gator-agent
PR Review Status
Validation: Project-valid observability work under roadmap issue #1055 and the gateway OpenTelemetry design in #2507.
Head SHA: 45aea6f39b4b9d462dd6f653544a863863ded00c
Base SHA: de4c1fecf564cd16854447ec9c08659e7b64061b
Merge base SHA: de4c1fecf564cd16854447ec9c08659e7b64061b
Patch ID: e953603a47f25777aba085d0bd6bd2fb5f96b8bb
Gator payload: 4
Review mode: follow_up
Previous reviewed SHA: 1eb0de44e898a80b2af9c148a252cb477eb48cce
Review budget exhausted: no
Maintainer decision required: no
Thanks @krishicks. I checked the update that replaces the retained scheduling span with a distinct docker.provision child span and adds a regression test proving the scheduling span completes while provisioning remains pending. That resolves GATOR-1eb0de44-01.
Blocking findings:
- No blocking findings remain.
Carried findings:
- None;
GATOR-1eb0de44-01is resolved by this head.
Docs: The gateway configuration reference and architecture overview are updated; no additional Fern navigation change is needed for this tracing implementation.
E2E: test:e2e is applied. The E2E Label Help bot requires re-running current-head workflow run 32499002864; dispatch is awaiting approval of the sandbox's exact-endpoint policy proposal.
Next state: gator:blocked
Blocked reason: test_dispatch_required
Summary
Mirror the VM and Podman driver tracing setup for Docker. Export Docker driver spans through OTLP/gRPC as the distinct openshell-driver-docker service, preserve gateway trace context, record lifecycle and asynchronous provisioning operations, and report gRPC failures.
Docker currently runs in-process when selected as a built-in gateway driver. Add the same temporary server-boundary shim used by Podman so traces retain the shape they will have when Docker moves to a separate process. Generalize the gateway provider selection for both in-process drivers and share the OTLP collector fixture across Docker, Podman, and VM tracing tests.
This also introduces the openshell-otel-test-support crate, which provides a shared loopback OTLP/gRPC collector fixture for Docker, Podman, and VM tracing tests. It captures exported spans and service names, waits for an export, and handles collector shutdown.
A separate crate lets all three use the fixture as a dev-dependency while:
through Cargo feature unification.
Related Issue
#1055
#2507
Changes
Testing
mise run pre-commitpassesChecklist