[][src]Crate actix_web_opentelemetry

Actix Web OpenTelemetry

OpenTelemetry integration for Actix Web.

This crate allows you to easily instrument client and server requests.

  • Client requests can be traced by using the with_tracing function.
  • Server requests can be traced by using the RequestTracing struct.

Client Request Example:

use actix_web::client;
use futures::Future;

fn execute_request(client: &client::Client) -> impl Future<Item = String, Error = ()> {
    actix_web_opentelemetry::with_tracing(client.get("http://localhost:8080"), |request| {
        request.send()
    })
    .map_err(|err| eprintln!("Error: {:?}", err))
    .and_then(|mut res| {
        res.body()
            .map(|bytes| std::str::from_utf8(&bytes).unwrap().to_string())
            .map_err(|err| eprintln!("Error: {:?}", err))
    })
}

Server middlware example:

use actix_web::{App, HttpServer, web};
use actix_web_opentelemetry::RequestTracing;
use opentelemetry::api;

fn init_tracer() {
    opentelemetry::global::set_provider(api::NoopProvider {});
}

fn main() -> std::io::Result<()> {
    init_tracer();
    HttpServer::new(|| {
        App::new()
            .wrap(RequestTracing::new(false))
            .service(web::resource("/").to(|| "Hello world!"))
    })
    .bind("127.0.0.1:8080")?
    .run()
}

Structs

RequestTracing

Request tracing middleware.

Functions

with_tracing

Trace an actix_web::client::Client request.