Tracing OpenTelemetry

Crates.io: tracing-opentelemetry Documentation License: MIT

An OpenTelemetry layer for the [tracing] library.

Tracers

Currently supports the Jaeger exporter via [opentelemetry-jaeger] and Zipkin via [opentelemetry-zipkin].

Examples

Basic Usage

```rust

[macro_use]

extern crate tracing;

use opentelemetry::{api::Provider, sdk}; use tracingopentelemetry::OpenTelemetryLayer; use tracingsubscriber::layer::SubscriberExt; use tracing_subscriber::Registry;

fn main() { // Create a new tracer let tracer = sdk::Provider::default().gettracer("componentname");

// Create a new OpenTelemetry tracing layer
let telemetry = OpenTelemetryLayer::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.");
});

} ```

Execute report.rs example

```console

Run jaeger in background

$ docker run -d -p6831:6831/udp -p6832:6832/udp -p16686:16686 jaegertracing/all-in-one:latest

Report example spans

$ cargo run --example report

View spans (see the image below)

$ firefox http://localhost:16686/ ```

Jaeger UI

References