获取一段时间内的总请求数

时间:2017-11-06 13:48:36

标签: prometheus promql

我需要在Grafana中显示一个面板,其中包含在右上角选择的时间段内的请求数。

为此,我需要在这里解决2个问题,我会在这里问prometheus问题和另一个链接中的Grafana问题。

如果我有一个计数器http_requests_total,我如何构建查询以获得一个整数以及一段时间内的请求总数(例如:24小时)?< / p>

7 个答案:

答案 0 :(得分:30)

您需要的是increase()函数,它将计算指定时间间隔开始和结束时计数器值之间的差异。它还可以在该时间段内正确处理计数器重置(如果有的话)。

increase(http_requests_total[24h])

如果您有多个计数器http_requests_total(例如来自多个实例),并且您需要获取累积的请求数,请使用sum()运算符:

sum(increase(http_requests_total[24h]))

另请参阅my answer关于在查询中使用Grafana时间范围选择的问题部分。

答案 1 :(得分:4)

所以我不会让我对Yoory的答案发表评论,所以我必须重新编写一个...

在Grafana 5.3中,他们为Prometheus引入了$__range,更易于使用:

sum(rate(http_requests_total[$__range]))
  

此变量表示当前仪表板的范围。的计算依据是--从

http://docs.grafana.org/features/datasources/prometheus/

答案 2 :(得分:2)

要获取过去24小时的确切计数,我创建了以下查询:

max_over_time(http_requests_total[6s])- min_over_time(http_requests_total[24h])

注意:对我有用:)

答案 3 :(得分:2)

解决方案:要计算普罗米修斯grafana上https计数器的总和,您应使用increase方法并在其中设置通用时间范围 $interval为了求和并计算所有http请求计数器。

increase(http_requests_total[$interval])

根据Prometheus Reference

increase() increase(v范围向量)计算范围向量中时间序列的增加。单调性中断(例如由于目标重新启动而导致的计数器重置)会自动进行调整。根据范围向量选择器中的指定,可以推断出增量,以覆盖整个时间范围,因此即使计数器仅以整数增量递增,也可以获得非整数结果。

以下示例表达式返回HTTP请求的数量 最近5分钟内测得的时间序列,范围为 向量:

increase(http_requests_total{job="api-server"}[5m])增加 仅与计数器一起使用。是速率(v)的语法糖 乘以指定时间范围内的秒数 窗口,应主要用于人类可读性。使用率 记录规则,以便在 每秒。

PS

  1. 您应该在Grafana上设置正确的快速范围,以设置您选择的正确时间范围(直接渲染到$interval变量)此外,我建议在图形可视化正确的分辨率和最短时间间隔(在您的情况下为每天-> 1d

2。为了求和所有请求,只需执行求和功能

sum(increase(http_requests_total[$interval]))

答案 4 :(得分:0)

根据increase() documentation,它不是聚合运算符。 因此,它将给出错误的答案。 (请参阅注释。)

您应该使用sum_over_time()函数,该函数会随时间间隔汇总。

sum_over_time(http_requests_total[24h])

如果您有多个计数器,请使用sum()运算符:

sum(sum_over_time(http_requests_total[24h]))

注意: 我有5个数据点,其值分别为:847、870、836、802、836。(每分钟更新一次)

increase(http_requests_total[5m]) returns 2118.75 

sum_over_time(http_requests_total[5m]) returns 4191

答案 5 :(得分:0)

http_requests_total - http_requests_total offset $__interval > 0

这将建立另一个可行的答案和评论,并处理重启情况。

偏移量将值始终保持为整数,并且不会尝试像increaserate函数那样执行插值。

最后的> 0过滤器将忽略由于重新启动而可能捕获的所有负值。

如果您选择在图例中选择总值,则最终结果是一段时间内准确的请求总数。

答案 6 :(得分:-1)

要在一段时间内获得准确的请求总数,我们可以使用offset

http_requests_total - http_requests_total offset 24h

increase将推断范围,以便我们可以在结果中看到浮点数。

通过使用offset,该值始终为整数,因为它仅计算开始和结束之间的差值