Tracing Opentelemetry

Crates.io: tracing-opentelemetry Documentation License: MIT

An opentelemetry layer for the [tracing] library.

Tracers

Currently supports the Jaeger tracer via [rustracing_jaeger]

Examples

Basic Usage

```rust

[macro_use]

extern crate tracing;

use opentelemetry::{api::Provider, sdk}; use tracingopentelemetry::OpentelemetryLayer; use tracingsubscriber::{Layer, Registry};

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

// Create a new tracing layer
let layer = OpentelemetryLayer::with_tracer(tracer);

let subscriber = layer.with_subscriber(Registry::default());

// 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.");
});

} ```

Executes 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