如何在普罗米修斯中计算仪表指标的平均值
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]))
您正在寻找子查询:
- https://prometheus.io/blog/2019/01/28/subquery-support/
- https://prometheus.io/docs/prometheus/latest/querying/examples/#subquery
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) ()
平均。
我有仪表指标(下面的示例)。我想找到每小时过去 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]))
您正在寻找子查询:
- https://prometheus.io/blog/2019/01/28/subquery-support/
- https://prometheus.io/docs/prometheus/latest/querying/examples/#subquery
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) ()
平均。