【问题标题】:Prometheus query promql to make average on the same fieldPrometheus 查询 promql 以在同一字段上进行平均
【发布时间】:2021-09-30 18:05:23
【问题描述】:

在我的 prometheus 数据库中,我从三个不同的主机获得了指标,我想在它们之间取平均值,这样我可以进行聚合:

information{application=~"$app",access=~"$access",quantile="0.99", host="prom01"}
information{application=~"$app",access=~"$access",quantile="0.99", host="prom02"}
information{application=~"$app",access=~"$access",quantile="0.99", host="prom03"}

我尝试在唯一的查询命令上将这三个指标相加并减去三,就像这样:

(information{application=~"$app",access=~"$access",quantile="0.99", host="prom01"} +
information{application=~"$app",access=~"$access",quantile="0.99", host="prom02"} +
information{application=~"$app",access=~"$access",quantile="0.99", host="prom03"})/3

但它不起作用

另外,我尝试了sum + rate,也不行

sum by (host) (rate(information{application=~"$app",access=~"$access",quantile="0.99"})[5m])

【问题讨论】:

    标签: prometheus promql


    【解决方案1】:

    您可以执行以下操作:

    (scalar(information{application=~"$app",access=~"$access",quantile="0.99", host="prom01"}) +
     scalar(information{application=~"$app",access=~"$access",quantile="0.99", host="prom02"}) +
     scalar(information{application=~"$app",access=~"$access",quantile="0.99", host="prom03"})
    ) / 3
    

    但如果你这样做会更容易:

    (sum(information{application=~"$app",access=~"$access",quantile="0.99", host=~"prom0(1|2|3)"}))
    ) / 3
    

    或者简单地说:

    avg(information{application=~"$app",access=~"$access",quantile="0.99", host=~"prom0(1|2|3)"})
    

    【讨论】:

      猜你喜欢
      • 2021-10-25
      • 2021-07-29
      • 1970-01-01
      • 2023-02-10
      • 2022-01-18
      • 2020-11-21
      • 2019-01-22
      • 2020-05-21
      • 2019-11-07
      相关资源
      最近更新 更多