【发布时间】:2023-02-19 16:26:45
【问题描述】:
我有一个计数器,它会定期增加。我还部署了普罗米修斯,每 15 秒擦一次。我想看到个人随时间的变化。
例如:
Prometheus 在一个时间范围内抓取这些数据点:
300 > 350 > 390 > 410
但是我想像这样可视化数据变化:
... > 50 > 40 > 20
我需要一个 promql 查询来获取结果。
【问题讨论】:
标签: prometheus promql
我有一个计数器,它会定期增加。我还部署了普罗米修斯,每 15 秒擦一次。我想看到个人随时间的变化。
例如:
Prometheus 在一个时间范围内抓取这些数据点:
300 > 350 > 390 > 410
但是我想像这样可视化数据变化:
... > 50 > 40 > 20
我需要一个 promql 查询来获取结果。
【问题讨论】:
标签: prometheus promql
Prometheus 提供了increase() 函数,可以用于此任务。例如,increase(metric[15s]) 可以返回所需的结果,例如metric 在过去 15 秒内增加。但是这个函数在Prometheus中存在以下问题,可能会导致意想不到的结果:
increase() 可能会返回小数结果。参见this issue。increase() 错过了方括号中后视窗口之前的最后一个原始样本与后视窗口内的第一个原始样本之间的计数器增加。这可能会导致低于预期的结果。increase() 要求在指定的后视窗口中至少有两个原始样本。否则返回空结果。
附言还有另一个类似 Prometheus 的监控解决方案,它提供了 PromQL 兼容的查询语言,并修复了 increase() 函数中的上述所有问题 - VictoriaMetrics。我是 VictoriaMetrics 的核心开发人员。
【讨论】: