如何在普罗米修斯中计算仪表指标的平均值

How to do average of gauge metric in Prometheus

我有仪表指标(下面的示例)。我想找到每小时过去 10 小时的指标平均值。不结合 10 个小时。我可以很容易地在 SQl 中按小时在 group by 子句中进行。但是在prometheus query

中没有好主意
{group="PrometheusDemo",resource="FinanceServicesGo",service="analyticsA",warning="1000"} 6
{group="PrometheusDemo",resource="FinanceServicesGo",service="analyticsB",warning="3000"} 9
{group="PrometheusDemo",resource="FinanceServicesGo",service="analyticsC",warning="2000"} 8
...
....
...

我尝试了以下查询 -

avg({__name__="metricA"}) by (group, service)

已编辑问题
问题陈述

我有一个指标 A,带有时间和值(见下图)。在 hourly avg 列中,我取了每个小时的平均值。然后在 avg over avg 列中,我取了之前平均列的平均值。我得到值 9.12,但如果我取最后 2 小时的综合平均值,我将得到 8.1。我想要使​​用 prometheus 查询对 avg 值 (9.12) 进行平均。我如何使用普罗米修斯查询来做到这一点?

我认为以下查询可以完成工作:

avg by (group, service) (avg_over_time({__name__="metricA"}[1h]))

您正在寻找子查询:

avg_over_time(avg by (group, service) (avg_over_time({__name__="metricA"}[1h]))[10h:1h])

最外层的查询 avg_over_time(query[10h:1h]) 将评估 10h 的时间段,以 1h 间隔执行 query,然后对每个时间序列的 10 个结果进行平均.

内部查询avg by (group, service) (avg_over_time({__name__="metricA"}[1h]))将运行 10次。 avg_over_time({__name__="metricA"}[1h]) 查询将对 1h 上的每个初始时间序列进行平均,然后按组和服务按 avg by (group, service) () 平均。