2 个版本 (1 个稳定版)
2.0.0-alpha.0 | 2020年9月11日 |
---|---|
1.0.0 | 2020年6月29日 |
#5 in #registered
341 星 & 11 关注者
39KB
759 代码行数(不包括注释)
轻松注册分布式指标。
更多文档待补充...
创建指标
注册指标非常简单。所需做的就是使用 metric
宏声明一个静态变量。默认情况下,指标将具有您用于声明它的静态变量的路径名作为名称,但可以通过将 name
参数传递给宏来覆盖。
use rustcommon_metrics::*;
/// A counter metric named "<crate name>::COUNTER_A"
#[metric]
static COUNTER_A: Counter = Counter::new();
/// A counter metric named "my.metric.name"
#[metric(name = "my.metric.name")]
static COUNTER_B: Counter = Counter::new();
#
#
访问指标
通过 metric
宏注册的所有指标都可以通过调用 metrics
函数来访问。这将返回一个 Metric
结构体实例,允许您访问所有静态和动态注册的指标。
假设我们有上面示例中声明的指标。
#
#
let metrics = metrics();
// Metrics may be in any arbitrary order
let mut names: Vec<_> = metrics.iter().map(|metric| metric.name()).collect();
names.sort();
assert_eq!(names.len(), 2);
assert_eq!(names[0], "my.metric.name");
assert_eq!(names[1], concat!(module_path!(), "::", "COUNTER_A"));
工作原理
在幕后,这个包使用 linkme
包创建一个包含每个通过 metric
属性注册的指标 MetricEntry
实例的分布式切片。
依赖关系
~0.7–6MB
~29K SLoC