[英]How to calculate the average value in a Prometheus query from Grafana
我认为您正在寻找 avg() 操作。 查看文档
简短回答:使用avg() function 返回多个时间序列的平均值。 例如, avg(metric)
返回具有metric
名称的时间序列的平均值。
长答案:Prometheus 提供了两个计算平均值的函数:
avg_over_time(metric[1h])
计算每个具有metric
名称的时间序列的最后一小时内原始样本的平均值。如果您需要计算每个时间桶中所有时间序列的原始样本的平均值,这些样本与给定的selector相匹配,例如:
SELECT
time_bucket('5 minutes', timestamp) AS t,
avg(value)
FROM table
GROUP BY t
然后必须使用以下 PromQL 查询:
sum(sum_over_time(metric[$__interval])) / sum(count_over_time(metric[$__interval]))
不要使用avg(avg_over_time(metric[$__interval]))
,因为它返回平均值的平均值,这不等于实际平均值。 有关详细信息,请参阅此说明。
使用内置的$__interval
变量,其中node, name
是自定义标签(取决于您的指标):
sum(avg_over_time(some_metric[$__interval])) by (node, name)
或固定值,如1m
、 1h
等:
sum(avg_over_time(some_metric[1m])) by (node, name)
您可以过滤特定指标:
或使用 Grafana 变量:
sum(avg_over_time(some_metric{cluster=~"$cluster"}[1m])) by (node, name)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.