Crates.io | axum-otel-metrics |
lib.rs | axum-otel-metrics |
version | |
source | src |
created_at | 2022-10-14 16:03:53.793326 |
updated_at | 2024-12-10 19:16:44.728603 |
description | axum OpenTelemetry metrics middleware with prometheus exporter |
homepage | https://ttys3.dev/ |
repository | https://github.com/ttys3/axum-otel-metrics/ |
max_upload_size | |
id | 688325 |
Cargo.toml error: | TOML parse error at line 22, column 1 | 22 | autolib = false | ^^^^^^^ unknown field `autolib`, expected one of `name`, `version`, `edition`, `authors`, `description`, `readme`, `license`, `repository`, `homepage`, `documentation`, `build`, `resolver`, `links`, `default-run`, `default_dash_run`, `rust-version`, `rust_dash_version`, `rust_version`, `license-file`, `license_dash_file`, `license_file`, `licenseFile`, `license_capital_file`, `forced-target`, `forced_dash_target`, `autobins`, `autotests`, `autoexamples`, `autobenches`, `publish`, `metadata`, `keywords`, `categories`, `exclude`, `include` |
size | 0 |
axum OpenTelemetry metrics middleware
supported exporters:
follow Semantic Conventions for HTTP Metrics
axum is an ergonomic and modular web framework built with Tokio, Tower, and Hyper
by default, it will use the OTLP Exporter you can config it via env var:
OTEL_EXPORTER_OTLP_ENDPOINT
orOTEL_EXPORTER_OTLP_METRICS_ENDPOINT
OTEL_EXPORTER_OTLP_ENDPOINT
default value:
gRPC: http://localhost:4317
HTTP: http://localhost:4318
OTEL_EXPORTER_OTLP_METRICS_ENDPOINT
default value:
gRPC: http://localhost:4317
HTTP: http://localhost:4318/v1/metrics
for more details, see https://opentelemetry.io/docs/languages/sdk-configuration/otlp-exporter/#endpoint-configuration
use axum_otel_metrics::HttpMetricsLayerBuilder;
let metrics = HttpMetricsLayerBuilder::new()
.build();
let app = Router::new()
.route("/", get(handler))
.route("/hello", get(handler))
.route("/world", get(handler))
// add the metrics middleware
.layer(metrics);
check the doc Advanced Usage section to see how to use the prometheus exporter
for prometheus exporter, below metrics will be exported:
requests_total
counter
requests_total
http_server_active_requests
gauge
The number of active HTTP requests
http_server_request_duration_seconds
histogram
http_server_request_duration_seconds_bucket
http_server_request_duration_seconds_sum
http_server_request_duration_seconds_count
http_server_request_size_bytes
histogram
http_server_request_size_bytes_bucket
http_server_request_size_bytes_sum
http_server_request_size_bytes_count
http_server_response_size_bytes_
histogram
http_server_response_size_bytes_bucket
http_server_response_size_bytes_sum
http_server_response_size_bytes_count
labels for requests_total
,
http_server_request_duration_seconds
, http_server_request_size_bytes
,
http_server_response_size_bytes
:
http_request_method
http_route
http_response_status_code
server_address
labels for http_server_active_requests
:
http_request_method
url_scheme
https://opentelemetry.io/docs/instrumentation/rust/#status-and-releases
Traces | Metrics | Logs |
---|---|---|
Beta | Beta | Beta |
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/
https://github.com/nlopes/actix-web-prom
Actix-web middleware to expose Prometheus metrics
https://github.com/sd2k/rocket_prometheus
Prometheus fairing and handler for Rocket
https://github.com/Ptrskay3/axum-prometheus
axum-prometheus relies on metrics.rs and its ecosystem to collect and export metrics - for instance for Prometheus, metrics_exporter_prometheus is used as a backend to interact with Prometheus.