
This puts the splash SVG in every crate's README, so that it will be rendered on crates.io. I also changed the link to an absolute URL, to ensure that it works even outside of the repo. Signed-off-by: Eliza Weisman <eliza@buoyant.io>
![Tracing — Structured, application-level diagnostics][splash] [splash]: https://raw.githubusercontent.com/tokio-rs/tracing/master/assets/splash.svg
Tracing OpenTelemetry
Utilities for adding OpenTelemetry interoperability to tracing
.
Overview
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 alltracing
spans.OpenTelemetrySpanExt
allows OpenTelemetry parent trace information to be injected and extracted from atracing
span.
Examples
Basic Usage
use opentelemetry::{api::Provider, sdk};
use tracing::{error, span};
use tracing_subscriber::layer::SubscriberExt;
use tracing_subscriber::Registry;
fn main() {
// Create a new tracer
let tracer = sdk::Provider::default().get_tracer("component_name");
// Create a new OpenTelemetry tracing layer
let telemetry = tracing_opentelemetry::layer().with_tracer(tracer);
let subscriber = Registry::default().with(telemetry);
// Trace executed code
tracing::subscriber::with_default(subscriber, || {
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.");
});
}
Visualization example
# Run a supported collector like jaeger in the background
$ docker run -d -p6831:6831/udp -p6832:6832/udp -p16686:16686 jaegertracing/all-in-one:latest
# Run example to produce spans (from parent examples directory)
$ cargo run --example opentelemetry
# View spans (see the image below)
$ firefox http://localhost:16686/
License
This project is licensed under the MIT license.
Contribution
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.