12 个版本 (破坏性更新)

0.9.0-alpha.22024 年 8 月 4 日
0.9.0-alpha.12024 年 4 月 6 日
0.8.1 2024 年 4 月 6 日
0.8.0 2023 年 11 月 27 日
0.2.0 2022 年 11 月 25 日

HTTP 服务器 中排名 59

Download history 283/week @ 2024-04-30 284/week @ 2024-05-07 347/week @ 2024-05-14 334/week @ 2024-05-21 313/week @ 2024-05-28 424/week @ 2024-06-04 483/week @ 2024-06-11 446/week @ 2024-06-18 528/week @ 2024-06-25 507/week @ 2024-07-02 398/week @ 2024-07-09 464/week @ 2024-07-16 599/week @ 2024-07-23 433/week @ 2024-07-30 650/week @ 2024-08-06 713/week @ 2024-08-13

每月下载量 2,461
用于 fedimint-clientd

MIT 许可证 MIT

35KB
532

axum-otel-metrics

Build status Crates.io Documentation

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_totalhttp_server_request_duration_secondshttp_server_request_size_byteshttp_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