Expand description
OpenTelemetry integration for the Salvo web framework.
This crate provides middleware for collecting metrics and distributed traces using the OpenTelemetry observability framework.
§Components
| Middleware | Purpose |
|---|---|
Metrics | Collects HTTP request metrics (latency, status codes, etc.) |
Tracing | Adds distributed tracing spans to requests |
§Metrics Example
ⓘ
use salvo_otel::Metrics;
use salvo_core::prelude::*;
use opentelemetry::global;
use opentelemetry_sdk::metrics::SdkMeterProvider;
// Initialize OpenTelemetry metrics provider
let provider = SdkMeterProvider::builder().build();
global::set_meter_provider(provider);
let router = Router::new()
.hoop(Metrics::new())
.get(my_handler);§Tracing Example
ⓘ
use salvo_otel::Tracing;
use salvo_core::prelude::*;
use opentelemetry::global;
use opentelemetry_sdk::trace::TracerProvider;
// Initialize OpenTelemetry tracing provider
let provider = TracerProvider::builder().build();
global::set_tracer_provider(provider);
let router = Router::new()
.hoop(Tracing::new())
.get(my_handler);§Collected Metrics
The Metrics middleware collects:
http.server.request.duration- Request duration histogramhttp.server.active_requests- Number of in-flight requestshttp.server.request.body.size- Request body sizehttp.server.response.body.size- Response body size
§Trace Attributes
The Tracing middleware adds standard HTTP semantic conventions:
http.method- HTTP methodhttp.route- Matched route patternhttp.status_code- Response status codehttp.url- Request URL
Read more: https://salvo.rs