12 个版本 (破坏性更新)
0.9.0-alpha.2 | 2024 年 8 月 4 日 |
---|---|
0.9.0-alpha.1 | 2024 年 4 月 6 日 |
0.8.1 | 2024 年 4 月 6 日 |
0.8.0 | 2023 年 11 月 27 日 |
0.2.0 | 2022 年 11 月 25 日 |
在 HTTP 服务器 中排名 59
每月下载量 2,461
用于 fedimint-clientd
35KB
532 行
axum-otel-metrics
axum OpenTelemetry 指标中间件,带有 Prometheus 导出器
遵循 HTTP 指标语义约定
axum 是一个使用 Tokio、Tower 和 Hyper 构建的易于使用且模块化的 Web 框架
默认情况下,指标将导出到 /metrics
端点。以下指标将被导出:
requests_total
计数器
requests_total
http_server_active_requests
仪表
活动 HTTP 请求的数量
http_server_request_duration_seconds
直方图
http_server_request_duration_seconds_bucket
http_server_request_duration_seconds_sum
http_server_request_duration_seconds_count
http_server_request_size_bytes
直方图
http_server_request_size_bytes_bucket
http_server_request_size_bytes_sum
http_server_request_size_bytes_count
http_server_response_size_bytes_
直方图
http_server_response_size_bytes_bucket
http_server_response_size_bytes_sum
http_server_response_size_bytes_count
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
http_server_active_requests
的标签
http_request_method
url_scheme
用法
use axum_otel_metrics::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
的用法
use axum_otel_metrics::HttpMetricsLayerBuilder;
#[derive(Clone)]
pub struct SharedState {
}
let state = SharedState {
};
let metrics = HttpMetricsLayerBuilder::new()
.build();
let app = Router::new()
// export metrics at `/metrics` endpoint
.merge(metrics.routes::<SharedState>())
.route("/", get(handler))
.route("/hello", get(handler))
.route("/world", get(handler))
// add the metrics middleware
.layer(metrics)
.with_state(state.clone());
OpenTelemetry Rust 仪表化状态和版本
https://opentelemetry.io/docs/instrumentation/rust/#status-and-releases
跟踪 | 指标 | 日志 |
---|---|---|
测试版 | 预览版 | 预览版 |
OpenTelemetry 指标导出器
推送指标导出器 https://opentelemetry.io/docs/reference/specification/metrics/sdk/#push-metric-exporter
拉取指标导出器 https://opentelemetry.io/docs/reference/specification/metrics/sdk/#pull-metric-exporter
导出器
https://opentelemetry.io/docs/reference/specification/metrics/sdk_exporters/
内存中 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/
标准输出 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
用于暴露 Prometheus 度量的 Actix-web 中间件
https://github.com/sd2k/rocket_prometheus
Rocket 的 Prometheus 代理和处理器
https://github.com/Ptrskay3/axum-prometheus
axum-prometheus 依赖于 metrics.rs 及其生态系统来收集和导出度量 - 例如,对于 Prometheus,使用 metrics_exporter_prometheus 作为后端与 Prometheus 进行交互。
依赖项
~11–23MB
~345K SLoC