2 个版本 (1 个稳定版)

2.0.0-alpha.02020年9月11日
1.0.0 2020年6月29日

#5 in #registered

341 星 & 11 关注者

Apache-2.0

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