1个不稳定版本
0.1.1 | 2022年3月27日 |
---|
#812 in 调试
11KB
154 行
函数指标
收集标注函数的执行指标。
以下指标被收集
- 执行时间。
- 成功(如果函数返回类似
core::result::Result
的类型)。
这些指标被发送到记录器,这可以被视为后端,可以将指标发送到指标聚合服务,例如。
目前,已实现了以下记录器
- 日志:简单记录指标。
- Prometheus:收集指标以便将其发送到Prometheus。
lib.rs
:
函数指标
收集标注函数的执行指标。
以下指标被收集
- 执行时间。
- 成功(如果函数返回类似
core::result::Result
的类型)。
用法
包含依赖项并启用所需的记录器。
例如,Prometheus记录器可以像以下这样启用
metrics-fn = { version = "0.1", features = [ "record-prometheus" ] }
之后,只需使用以下代码标注所需的函数 #[measure]
。
use std::thread::sleep;
use std::time::Duration;
use metrics_fn_codegen::measure;
#[measure]
pub fn super_slow_function(a: u64, b: u64) {
sleep(Duration::from_millis(a * b));
}
请注意,由于指标收集对函数的每次调用都会有性能影响,因此建议仅在性能影响可以忽略的情况下使用该注解,例如在调用外部服务或数据库查询的函数上。
记录器
指标被收集并发送到记录器,可以与Prometheus等指标系统集成。
为了将依赖项保持到最小,为每个记录器都有一个相应的功能。这些功能由record-
和它所启用的指标系统组成。默认情况下,所有记录器都未启用。
目前支持以下指标系统
- 日志(
record-log
):简单地使用log::info!
记录收集到的指标;实际上不是一个指标收集系统。 - Prometheus (
record-prometheus
): 将指标收集到默认的 Prometheus 指标注册表中,使用 Prometheus 包。
日志记录器 (record-log
)
日志记录器并不是非常有用:它是为了帮助开发而创建的。
它仅使用 log::info!
或 log::error!
记录指标。
Prometheus 记录器 (record-prometheus
)
Prometheus 记录器将带有 #[measure]
注解的函数的指标收集到 application_method_timings
历史图指标。
此指标具有以下标签
mod
: 模块名称。fn
: 函数名称。res
: 结果(如果注解的函数结果命名为Result
,则为Ok
或Err
;否则始终为Ok
)。
使用以下桶:0.005, 0.01, 0.025, 0.05, 0.1, 0.25, 0.5, 1.0, 2.5, 5.0, 10.0。
为了公开收集的指标,必须手动包含和配置 web 应用程序框架,例如 Rocket 或 Actix Web。
有关示例,请参阅 metrics-fn-example-prometheus。
版本控制
使用 语义版本控制。收集的指标的变化也考虑在版本控制中。
待办事项列表
以下是有计划的功能,按优先级排序
此列表并非承诺:项目可能会被添加或从列表中删除。
- [中] 与
impl
关联的记录类型名称。 - [低] 可配置的 Prometheus 指标名称和桶。
依赖关系
~1.2–6.5MB
~46K SLoC