为什么 com.netflix.spectator.api.Counter 产生 "normalized" 值?

Why does com.netflix.spectator.api.Counter produes "normalized" values?

我正在尝试使用 Spectator 进行计数。用法如下:

@Autowired
private Registry registry;

然后调用:

registry.counter("ping").count();

当我去 http://localhost:8080/metrics 我看到:

"ping(type=NORMALIZED)":0.05

为什么会这样?如何配置 Spectator 进行计数?

用 Spectator 的说法,Counter 用于衡量某些事件发生的速率(即始终在某个时域内归一化)。更详细的解释可用 here。在将指标发送到指标服务器之前,指标发布者会执行此规范化(例如,Atlas 设置为按固定时间间隔发布,因此会在该时间window 内进行规范化)。由于对于计数器而言 rate 是重要的,因此不需要保留时间 window 内的离散计数器事件。

如果您只是想计算某个东西在 一直 中出现的总次数,您应该使用 Gauge(参见 explanation)反而。但是,我要提醒您,对于长时间的 运行 服务,计算某些事件发生的总次数可能最终会溢出。通常,Gauges 用于计算具有自然上限(并且不一定单调递增)的事物,例如缓存中元素的总数,或 运行 线程数。