Prometheus 查询 promql 以在同一字段上进行平均
Posted
技术标签:
【中文标题】Prometheus 查询 promql 以在同一字段上进行平均【英文标题】:Prometheus query promql to make average on the same field 【发布时间】:2021-09-30 18:05:23 【问题描述】:在我的 prometheus 数据库中,我从三个不同的主机获得了指标,我想在它们之间取平均值,这样我可以进行聚合:
informationapplication=~"$app",access=~"$access",quantile="0.99", host="prom01"
informationapplication=~"$app",access=~"$access",quantile="0.99", host="prom02"
informationapplication=~"$app",access=~"$access",quantile="0.99", host="prom03"
我尝试在唯一的查询命令上将这三个指标相加并减去三,就像这样:
(informationapplication=~"$app",access=~"$access",quantile="0.99", host="prom01" +
informationapplication=~"$app",access=~"$access",quantile="0.99", host="prom02" +
informationapplication=~"$app",access=~"$access",quantile="0.99", host="prom03")/3
但它不起作用
另外,我尝试了sum + rate,也不行
sum by (host) (rate(informationapplication=~"$app",access=~"$access",quantile="0.99")[5m])
【问题讨论】:
【参考方案1】:您可以执行以下操作:
(scalar(informationapplication=~"$app",access=~"$access",quantile="0.99", host="prom01") +
scalar(informationapplication=~"$app",access=~"$access",quantile="0.99", host="prom02") +
scalar(informationapplication=~"$app",access=~"$access",quantile="0.99", host="prom03")
) / 3
但如果你这样做会更容易:
(sum(informationapplication=~"$app",access=~"$access",quantile="0.99", host=~"prom0(1|2|3)"))
) / 3
或者简单地说:
avg(informationapplication=~"$app",access=~"$access",quantile="0.99", host=~"prom0(1|2|3)")
【讨论】:
以上是关于Prometheus 查询 promql 以在同一字段上进行平均的主要内容,如果未能解决你的问题,请参考以下文章
在单个 promql 查询中需要两个 Prometheus 指标值