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§
- Telemetry
Body - Telemetry
Layer - Tower
Layerto emit conventional OpenTelemetry spans and metrics for HTTP and gRPC requests. - Telemetry
Response Future - Telemetry
Service - Tower
Serviceto emit conventional OpenTelemetry spans and metrics for HTTP and gRPC requests.