为啥prometheus中increase()会返回1.33的值?

Posted

技术标签:

【中文标题】为啥prometheus中increase()会返回1.33的值?【英文标题】:Why does increase() return a value of 1.33 in prometheus?为什么prometheus中increase()会返回1.33的值? 【发布时间】:2016-12-04 14:08:38 【问题描述】:

我们用sum(increase(foo_requests_total[1m])) 绘制一个时间序列,以显示每分钟的 foo 请求数。请求非常零星地出现 - 每天只有几个请求。图中显示的值始终为 1.3333。为什么值不是 1?这一分钟有一个请求。

【问题讨论】:

如果您需要increase() 查询的准确整数结果,请查看MetricsQL。 我只是 floor 增加表达式,这似乎按预期工作。 【参考方案1】:

计算这个数字的挑战在于,我们在一个时间范围内只有几个数据点,而且它们往往不在那个时间范围的确切开始和结束(这里是 1 分钟)。我们如何处理时间范围开始和第一个数据点之间的时间,最后一个数据点和范围结束之间的时间?

我们做了一些外推来平滑这一点并产生正确的总体结果。对于像这样移动非常缓慢的计数器,它可能会导致伪影。

【讨论】:

绘制这样一个缓慢移动的计数器的所有单次出现的正确方法是什么? 你所做的是正确的。如果您想要更准确的答案,我建议您在更长的时间范围内获取速率或处理日志(例如 ELK 堆栈)而不是此特定图表的指标。

以上是关于为啥prometheus中increase()会返回1.33的值?的主要内容,如果未能解决你的问题,请参考以下文章

使用 $__interval 在 grafana 中进行 Prometheus 查询

prometheus 实践

prometheus grafana sql 常用函数参数

promethues常用的函数

第八讲:prometheus命令行使用扩展

监控工具之---Prometheus表达式