axum OpenTelemetry metrics middleware with prometheus exporter
axum is an ergonomic and modular web framework built with Tokio, Tower, and Hyper
```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);
```
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/