[][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::default())
            .service(web::resource("/").to(|| "Hello world!"))
    })
    .bind("127.0.0.1:8080")?
    .run()
}

Structs

RequestMetrics

Request metrics tracking

RequestMetricsMiddleware

Request metrics middleware

RequestTracing

Request tracing middleware.

UuidWildcardFormatter

UUID wildcard formatter replaces UUIDs with asterisks.

Traits

RouteFormatter

Interface for formatting routes from paths

Functions

with_tracing

Trace an actix_web::client::Client request.