【问题标题】:PromQL difference between queriesPromQL 查询之间的区别
【发布时间】:2020-10-29 02:26:20
【问题描述】:

我是使用 Prometheus 的新手,我正在尝试理解一些事情。

我有一个 java web 应用程序,它公开了一个计数器,比如说“my_counter”。

以下查询有什么区别?

sum(increase(my_counter[1m]))

sum(increase(my_counter[3m]))

如果我在 1 小时的相同时间间隔内运行这些查询,为什么两者返回不同的结果?

我想要实现的是查看计数器在可配置的时间段内增加了多少。

谢谢。

附:我实际上是使用 Grafana 来运行查询并选择时间范围。

【问题讨论】:

    标签: prometheus grafana promql


    【解决方案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。对吗?
    猜你喜欢
    • 1970-01-01
    • 2018-12-06
    • 2019-06-08
    • 2020-01-02
    • 1970-01-01
    • 2012-12-13
    • 2014-06-02
    • 2015-08-17
    相关资源
    最近更新 更多