我需要在Grafana中显示一个面板,其中包含在右上角选择的时间段内的请求数。
为此,我需要在这里解决2个问题,我会在这里问prometheus问题和另一个链接中的Grafana问题。
如果我有一个计数器http_requests_total
,我如何构建查询以获得一个整数以及一段时间内的请求总数(例如:24小时)?< / p>
答案 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]))
此变量表示当前仪表板的范围。的计算依据是--从
答案 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])
increase()
increase(v范围向量)计算范围向量中时间序列的增加。单调性中断(例如由于目标重新启动而导致的计数器重置)会自动进行调整。根据范围向量选择器中的指定,可以推断出增量,以覆盖整个时间范围,因此即使计数器仅以整数增量递增,也可以获得非整数结果。以下示例表达式返回HTTP请求的数量 最近5分钟内测得的时间序列,范围为 向量:
increase(http_requests_total{job="api-server"}[5m])
增加 仅与计数器一起使用。是速率(v)的语法糖 乘以指定时间范围内的秒数 窗口,应主要用于人类可读性。使用率 记录规则,以便在 每秒。
PS
$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
这将建立另一个可行的答案和评论,并处理重启情况。
偏移量将值始终保持为整数,并且不会尝试像increase
和rate
函数那样执行插值。
最后的> 0
过滤器将忽略由于重新启动而可能捕获的所有负值。
如果您选择在图例中选择总值,则最终结果是一段时间内准确的请求总数。
答案 6 :(得分:-1)
要在一段时间内获得准确的请求总数,我们可以使用offset
:
http_requests_total - http_requests_total offset 24h
increase
将推断范围,以便我们可以在结果中看到浮点数。
通过使用offset
,该值始终为整数,因为它仅计算开始和结束之间的差值