Utilities for adding [OpenTelemetry] interoperability to [tracing
].
[tracing
] is a framework for instrumenting Rust programs to collect
structured, event-based diagnostic information. This crate provides a layer
that connects spans from multiple systems into a trace and emits them to
[OpenTelemetry]-compatible distributed tracing systems for processing and
visualization.
The crate provides the following types:
OpenTelemetryLayer
] adds OpenTelemetry context to all tracing
[span]s.OpenTelemetrySpanExt
] allows OpenTelemetry parent trace information to be
injected and extracted from a tracing
[span].Compiler support: requires rustc
1.42+
```rust use opentelemetry::exporter::trace::stdout; use tracing::{error, span}; use tracingsubscriber::layer::SubscriberExt; use tracingsubscriber::Registry;
fn main() { // Install a new OpenTelemetry trace pipeline let (tracer, uninstall) = stdout::newpipeline().install();
// Create a tracing layer with the configured tracer
let telemetry = tracing_opentelemetry::layer().with_tracer(tracer);
// Use the tracing subscriber `Registry`, or any other subscriber
// that impls `LookupSpan`
let subscriber = Registry::default().with(telemetry);
// Trace executed code
tracing::subscriber::with_default(subscriber, || {
// Spans will be sent to the configured OpenTelemetry exporter
let root = span!(tracing::Level::TRACE, "app_start", work_units = 2);
let _enter = root.enter();
error!("This event will be logged in the root span.");
});
} ```
```console
$ docker run -d -p6831:6831/udp -p6832:6832/udp -p16686:16686 jaegertracing/all-in-one:latest
$ cargo run --example opentelemetry
$ firefox http://localhost:16686/ ```
Tracing is built against the latest stable release. The minimum supported version is 1.42. The current Tracing version is not guaranteed to build on Rust versions earlier than the minimum supported version.
Tracing follows the same compiler support policies as the rest of the Tokio project. The current stable Rust compiler and the three most recent minor versions before it will always be supported. For example, if the current stable compiler version is 1.45, the minimum supported version will not be increased past 1.42, three minor versions prior. Increasing the minimum supported compiler version is not considered a semver breaking change as long as doing so complies with this policy.
This project is licensed under the MIT license.
Unless you explicitly state otherwise, any contribution intentionally submitted for inclusion in Tracing by you, shall be licensed as MIT, without any additional terms or conditions.