axum OpenTelemetry metrics middleware with prometheus exporter
axum is an ergonomic and modular web framework built with Tokio, Tower, and Hyper
be default, the metrics will be exported at /metrics
endpoint.
and below metrics will be exported:
requestdurationseconds histogram
request_duration_seconds_bucket
request_duration_seconds_sum
request_duration_seconds_count
requests_total counter
requests_total
labels for request_duration_seconds
and requests_total
:
method
path
status
```rust use axumotelmetrics::HttpMetricsLayerBuilder;
let metrics = HttpMetricsLayerBuilder::new() .build();
let app = Router::new()
// export metrics at /metrics
endpoint
.merge(metrics.routes())
.route("/", get(handler))
.route("/hello", get(handler))
.route("/world", get(handler))
// add the metrics middleware
.layer(metrics);
```
State
```rust use axumotelmetrics::HttpMetricsLayerBuilder;
pub struct SharedState { }
let state = SharedState { };
let metrics = HttpMetricsLayerBuilder::new() .build();
let app = Router::new()
// export metrics at /metrics
endpoint
.merge(metrics.routes::
https://opentelemetry.io/docs/instrumentation/rust/#status-and-releases
| Traces | Metrics | Logs | |--------------------------------------------------------------------------------------------------|---------|---------------------| | Stable | Alpha | Not yet implemented |
Push Metric Exporter https://opentelemetry.io/docs/reference/specification/metrics/sdk/#push-metric-exporter
Pull Metric Exporter https://opentelemetry.io/docs/reference/specification/metrics/sdk/#pull-metric-exporter
https://opentelemetry.io/docs/reference/specification/metrics/sdk_exporters/
In-memory https://opentelemetry.io/docs/reference/specification/metrics/sdk_exporters/in-memory/
Prometheus https://opentelemetry.io/docs/reference/specification/metrics/sdk_exporters/prometheus/
OTLP https://opentelemetry.io/docs/reference/specification/metrics/sdk_exporters/otlp/
Standard output https://opentelemetry.io/docs/reference/specification/metrics/sdk_exporters/stdout/
https://opentelemetry.io/docs/reference/specification/metrics/data-model/