looock7897
looock7897

Reputation: 27

Prometheus query promql to make average on the same field

On my prometheus database, I have got metrics from three different host, I want to make the average between them, like that I can make aggreagation :

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"}

I try to sum those three metrics and sub by three on the only query command, like that :

(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

but it does not work<

Moreover, I try the sum + rate, does not work also

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

Upvotes: 1

Views: 207

Answers (1)

You can do the following:

(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

but it's easier if you do:

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

Or simply:

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

Upvotes: 1

Related Questions