Skip to main content

Crate tower_http_opentelemetry

Crate tower_http_opentelemetry 

Source
Expand description

Tower middleware to emit conventional OpenTelemetry spans and metrics for HTTP and gRPC requests.

§Example

use bytes::Bytes;
use http::{Request, Response};
use http_body_util::Full;
use std::convert::Infallible;
use tower::{ServiceBuilder, ServiceExt, Service};
use tower_http_opentelemetry::TelemetryLayer;

async fn handle(request: Request<Full<Bytes>>) -> Result<Response<Full<Bytes>>, Infallible> {
    Ok(Response::new(Full::default()))
}

#[tokio::main]
async fn main() -> Result<(), Box<dyn std::error::Error>> {
    tracing_subscriber::fmt::init();

    let mut service = ServiceBuilder::new()
        .layer(TelemetryLayer::server())
        .service_fn(handle);
    
    let request = Request::new(Full::from("foo"));
    
    let response = service
        .ready()
        .await?
        .call(request)
        .await?;
    
    Ok(())
}

Structs§

TelemetryBody
TelemetryLayer
Tower Layer to emit conventional OpenTelemetry spans and metrics for HTTP and gRPC requests.
TelemetryResponseFuture
TelemetryService
Tower Service to emit conventional OpenTelemetry spans and metrics for HTTP and gRPC requests.