Research: OTLP exporter stack for tracing-subscriber + tokio + axum, and its illumos build footprint #34
Labels
No labels
Compat/Breaking
Crazy Idea
Kind/Bug
Kind/Documentation
Kind/Enhancement
Kind/Feature
Kind/Security
Kind/Testing
Priority/Critical
Priority/High
Priority/Low
Priority/Medium
Reviewed/Confirmed
Reviewed/Duplicate
Reviewed/Invalid
Reviewed/Won't Fix
Status/Abandoned
Status/Blocked
Status/Need More Info
needs-info
needs-triage
ready-for-agent
ready-for-human
wayfinder:grilling
wayfinder:map
wayfinder:prototype
wayfinder:research
wayfinder:task
wontfix
No milestone
No project
No assignees
1 participant
Notifications
Due date
No due date set.
Blocks
Reference
OpenIndiana/ips#34
Loading…
Reference in a new issue
No description provided.
Delete branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Part of #24
Question
Determine the current recommended crate set for OpenTelemetry in a tokio/axum service (
opentelemetry,opentelemetry_sdk,opentelemetry-otlp,tracing-opentelemetry,tower-httptracing), whether OTLP/HTTP can avoid tonic/protoc, MSRV and version compatibility with the workspace'stracing-subscriber, and the native build requirements on illumos (protobuf, TLS provider). Include a minimal wiring sketch forpkg6depotd/src/telemetry/mod.rs.Capture as
docs/research/otlp-stack.md. This feeds the telemetry scope decision.Links
Resolution
hyper-clientfeature is the reqwest-free escape hatch.http-protoenables onlyopentelemetry-proto/gen-tonic-messages(= prost); the generated code is checked into the repo (no build.rs). tonic 0.14/prost currently compile solely because of ourgrpc-tonicfeature. Thetls-ring/tls-aws-lcexporter features only apply to tonic. Batch processors use their own thread since SDK 0.28, sort-tokiois unnecessary.rustls-tlspulls ring while axum-server/jsonwebtoken pull aws-lc-rs, so both rustls providers are compiled in and rustls'sClientConfig/ServerConfig::builder()panics unlessinstall_default()is called; pkg6depotd never calls it (latent, since it serves plain HTTP today). reqwest 0.13 switches to aws-lc-rs and fixes the duplication.opentelemetry-otlptodefault-features=false, features=["http-proto","reqwest-client","trace","logs","internal-logs"], addopentelemetry-appender-tracing 0.31, dropgrpc-tonic/rt-tokio; wire SdkTracerProvider + SdkLoggerProvider with batch HTTP exporters ({endpoint}/v1/traces,/v1/logs), filterhyper/h2/reqwest/opentelemetryoff the log bridge to avoid feedback loops, return a guard whoseshutdown()runs after gracefulaxum::serve, and initialise telemetry afterdaemonize()(batch threads don't survive the fork). Metrics: same pattern viaMetricExporter/PeriodicReader, deferred. Next dep sweep: reqwest 0.13, then OTel 0.32/0.33 + axum-tracing-opentelemetry; install the aws-lc-rs provider explicitly inmain.Full findings: docs/research/otlp-stack.md on branch
research/otlp-stack(research branch, not merged; cherry-pick the file when the decision it feeds is recorded).