#middleware #open-telemetry #tonic #metrics

tonic-otel-layer

Layer for a Tonic gRPC server that adds an OpenTelemetry metrics support

1 unstable release

Uses new Rust 2024

0.1.0 Jun 17, 2025

#2249 in HTTP server

Download history 15/week @ 2025-07-28 260/week @ 2025-08-04 306/week @ 2025-08-11 241/week @ 2025-08-18 838/week @ 2025-08-25 332/week @ 2025-09-01 495/week @ 2025-09-08 1134/week @ 2025-09-15 1225/week @ 2025-09-22 480/week @ 2025-09-29 1129/week @ 2025-10-06 714/week @ 2025-10-13 889/week @ 2025-10-20 279/week @ 2025-10-27

3,013 downloads per month

MIT license

11KB
164 lines

tonic-otel-layer

Layer for a Tonic gRPC server that adds an OpenTelemetry metrics support.

Usage

let exporter = MetricExporter::builder()
        .with_tonic()
        .build()?;

let meter_provider = SdkMeterProvider::builder()
        .with_resource(Resource::builder().with_service_name("my_service").build())
        .with_periodic_exporter(exporter)
        .build();

let metrics_layer = tonic_otel_layer::MetricsLayerBuilder::new()
        .with_provider(meter_provider)
        .build();

Server::builder()
    .layer(metrics_layer)
    .add_service(health_service)
    .serve(addr)
    .await?;

Thanks to

tonic-prometheus-layer - layer for a tonic GRPC server (and client) which provides metrics in prometheus format.

axum-otel-metrics - opentelemetry layer for an axum web-server.

Dependencies

~4.5–8.5MB
~143K SLoC