在千分尺中使用速率而不是 sum/count

Using rate instead of sum/count in micrometer

在此link,它说明了必须将速率用于千分尺指标的原因。

Representing a counter without rate normalization over some time window is rarely useful, as the representation is a function of both the rapidity with which the counter is incremented and the longevity of the service.

我仍然无法理解为什么不直接 sum/count。

任何意见都有帮助。

您希望在 Prometheus 查询中使用 rate() 函数的原因是您可以查看当时的平均汇率 window(该文档示例中的 [10s])。

如果您使用的是整体 sum/count,那么该数字将继续增长,并且平均值不会涵盖最新的时间范围,而是自服务启动以来所有时间的平均值。

示例:

假设您有一个计时,每次调用需要 1 秒,并且每分钟调用大约 30 次:

                   Count        Sum        sum/count   sum/count (with increase)
First Minute:      30           30         1           1
After 10 hour:     18,000       18,000     1           1
After 1000 hours:  1,800,000    1,800,000  1           1

目前看起来完全一样。现在假设在最后 1 分钟内所有请求都需要 10 秒。这是慢 10 倍。你会想知道最后一分钟

                   Count        Sum        sum/count   sum/count (with increase)
First Minute:      30           300        10          10
After 10 hour:     18,000       18,270     1.015       10
After 1000 hours:  1,800,000    1,800,270  1.00015     10

rate(或increase)函数确保它只是使用window中的变化进行计算。由于该指标在较长时期内为 运行,因此较大的数字掩盖了任何波动性。

注意:在我的示例中,我使用了 increase 函数,因为它更容易推理。它只是报告 window 中的计数器或总和增加了多少。 rate 类似,但只是将其标准化为 per/second 比率。