Crate opentelemetry_aws[][src]

Expand description

This crate provides unofficial integration with AWS services.

Components

As for now, the only components provided in this crate is AWS X-Ray propagator.

AWS X-Ray Propagator

This propagator helps propagate tracing information from upstream services to downstream services.

Quick start

use opentelemetry::global;
use opentelemetry_aws::trace::XrayPropagator;
use opentelemetry::{sdk::export::trace::stdout, trace::Tracer};
use opentelemetry_http::HeaderInjector;

#[tokio::main]
async fn main() -> std::result::Result<(), Box<dyn std::error::Error + Send + Sync + 'static>> {
    // Set the global propagator to X-Ray propagator
    global::set_text_map_propagator(XrayPropagator::default());
    let tracer = stdout::new_pipeline().install_simple();

    let mut req = hyper::Request::builder().uri("http://127.0.0.1:3000");
    tracer.in_span("doing_work", |cx| {
        // Send request to downstream services.
        // Build request
        global::get_text_map_propagator(|propagator| {
            // Set X-Ray tracing header in request object `req`
            propagator.inject_context(&cx, &mut HeaderInjector(req.headers_mut().unwrap()));
            println!("Headers: {:?}", req.headers_ref());
        })
    });

    Ok(())
}

A more detailed example can be found in opentelemetry-rust repo

Re-exports

pub use trace::XrayPropagator;

Modules

trace