PromQL 查询之间的区别
Posted
技术标签:
【中文标题】PromQL 查询之间的区别【英文标题】:PromQL difference between queries 【发布时间】:2020-10-29 02:26:20 【问题描述】:我是使用 Prometheus 的新手,我正在尝试理解一些事情。
我有一个 java web 应用程序,它公开了一个计数器,比如说“my_counter”。
以下查询有什么区别?
sum(increase(my_counter[1m]))
sum(increase(my_counter[3m]))
如果我在 1 小时的相同时间间隔内运行这些查询,为什么两者返回不同的结果?
我想要实现的是查看计数器在可配置的时间段内增加了多少。
谢谢。
附:我实际上是使用 Grafana 来运行查询并选择时间范围。
【问题讨论】:
【参考方案1】:我假设“1 小时的相同时间间隔”意味着在运行显示的查询时,从时间范围控制面板中选择了完全相同的小时。
您的查询之间的区别在于它们查看的时间范围不同。第一个检查在过去 1 分钟期间 my_counter 增加了多少,第二个检查在过去 3 分钟期间 my_counter 增加了多少.
时间和计数器值的示例:
01:20:00 => my_counter: 0
01:21:00 => my_counter: 1
01:22:00 => my_counter: 2
01:23:00 => my_counter: 2
01:23:45 => my_counter: 4 (This is the moment of my_counter examination. Notice the time.)
在 01:23:45,第一个查询会查看 01:22:45 和 01:23:45 之间的 1 分钟时间范围,并且会显示增加约 2。
同时第二次查询会查看01:20:45到01:23:45这3分钟的时间段,会显示增加了4左右(因为三分钟前01:20:45 my_counter 的值仍然是 0)。
您在 Grafana 中看到的每个数据点都会发生同样的事情。增加查询被外推以覆盖整个时间范围,这意味着您可能还会看到非整数值。在这里你可以找到the actual documentation about the increase query function。
【讨论】:
您好,谢谢您的解释。我想我明白你所做的解释,但仍有一些不清楚的地方。 sum 函数应分别添加所有 1m 和 3m 的间隔。这意味着对于 1m,我将有 60 个值较小的区间,而 3m 将为我提供 20 个值较大的区间。尽管如此,所有这些的总和应该仍然是相同的。在您提供的示例中,总和在两种情况下都应返回 4。对吗?以上是关于PromQL 查询之间的区别的主要内容,如果未能解决你的问题,请参考以下文章