17 个版本 (3 个稳定版)
2.0.0 | 2024年7月25日 |
---|---|
1.0.1 | 2024年2月12日 |
1.0.0 | 2023年12月1日 |
0.6.0 | 2023年8月8日 |
0.3.2 | 2023年3月22日 |
#32 在 调试 中
每月下载量 14,368
用于 6 个代码包
125KB
2K SLoC
指标是了解生产环境中代码健康和性能的强大且成本效益的工具。但很难决定跟踪哪些指标,编写查询来理解数据则更加困难。
Autometrics 提供了一个宏,可以轻松地将最有用的指标(请求速率、错误率和延迟)应用于任何函数。它标准化了这些指标,然后根据您的函数详细信息生成强大的 Prometheus 查询,以帮助您快速识别和调试生产环境中的问题。
优点
- ✨
#[autometrics]
宏向任何函数或impl
块添加有用的指标,而无需您思考要收集哪些指标 - 💡 生成强大的 Prometheus 查询,以帮助快速识别和调试生产环境中的问题
- 🔗 将直接链接到每个函数的文档注释中的实时 Prometheus 图表
- 📊 Grafana 仪表板 无需配置即可可视化函数和 SLO 的性能
- 🔍 将代码的版本与指标相关联,以帮助识别引入错误或延迟的提交
- 📏 标准化服务和团队之间的指标,以改善调试
- ⚖️ 函数级指标提供了有用的粒度,而不会爆炸基数
- ⚡ 最小的运行时开销
高级功能
- 🚨 定义警报 使用 SLO 最佳实践直接在源代码中
- 📍 附加示例 自动连接指标与跟踪
- ⚙️ 可配置 指标收集库 (
opentelemetry
,prometheus
,prometheus-client
或metrics
)
有关 autometrics 背后思想的更多详情,请参阅 autometrics.dev。
示例 Axum 应用程序
Autometrics 与任何 Web 框架无关,但这个例子展示了如何在 Axum 服务器中使用这个库。
use std::error::Error;
use autometrics::{autometrics, prometheus_exporter};
use axum::{routing::*, Router};
use std::net::Ipv4Addr;
use tokio::net::TcpListener;
// Instrument your functions with metrics
#[autometrics]
pub async fn create_user() -> Result<(), ()> {
Ok(())
}
// Export the metrics to Prometheus
#[tokio::main]
pub async fn main() -> Result<(), Box<dyn Error + Send + Sync>> {
prometheus_exporter::init();
let app = Router::new()
.route("/users", post(create_user))
.route(
"/metrics",
get(|| async { prometheus_exporter::encode_http_response() }),
);
let listener = TcpListener::bind((Ipv4Addr::from([127, 0, 0, 1]), 0)).await?;
axum::serve(listener, app).await?;
Ok(())
}
快速入门
请参阅 Github 仓库 README,以快速将 autometrics
添加到您的项目中。
贡献
问题、功能建议和拉取请求都非常欢迎!
如果您有兴趣参与其中
- 加入 Discord 的讨论。
- 在 Github Discussions 中提问和分享想法。
- 查看整体的 Autometrics 项目路线图。
依赖项
~2–20MB
~295K SLoC