In which dimension are you trying to do the "max" - the maximum across
timeseries, or the maximum over time?
http_requests_total could be several timeseries each with their own
labels. Think of it in two dimensions:
http_requests_total{instance="A"} a1 a2 a3 a4 a5
http_requests_total{instance="B"} b1 b2 b3 b4 b5
http_requests_total{instance="C"} c1 c2 c3 c4 c5
---------------> time
If you want the maximum over time, see
https://prometheus.io/docs/prometheus/latest/querying/functions/#aggregation_over_time
max_over_time(http_requests_total[5m])
This will return the same set of timeseries as you had before, but for each
one giving the maximum over the 5 minute window.
http_requests_total{instance="A"} max(a1,a2,a3,a4,a5)
http_requests_total{instance="B"} max(b1,b2,b3,b4,b5)
http_requests_total{instance="C"} max(c1,c2,c3,c4,c5)
Aside: this is probably *not* what you want to do with a counter - you
might want to use rate() on it first. But it makes sense with a gauge.
In the other dimension:
max(http_requests_total)
gives you a single value which is the maximum across all the available
timeseries: see
https://prometheus.io/docs/prometheus/latest/querying/operators/#aggregation-operators
As an instant query, you'll get just the most recent time:
http_requests_total max(a5,b5,c5)
but if you graph this, the instant time will be swept over the graph
window, so you'll see the max across timeseries at each point in time.
Again, this probably doesn't make sense with counters as they have
arbitrary offsets, but maximum across gauges makes sense (e.g. show me the
maximum temperature).
If you want to do aggregation over time on this expression, you can turn it
back into a range vector using a subquery
<https://prometheus.io/docs/prometheus/latest/querying/basics/#subquery>:
e.g.
(max(http_requests_total))[5m:1m]
That calculates the max(http_requests_total) at the current time and at 1
minute intervals over the previous 5 minutes. You then have a range vector
that you can aggregate over time.
This is more useful with expressions like:
max_over_time (rate(http_requests_total[5m])[60m:1m])
i.e. calculate the 5-minute average rate at 1 minute intervals, and give me
the maximum rate seen over the last 60 minutes.
--
You received this message because you are subscribed to the Google Groups
"Prometheus Users" group.
To unsubscribe from this group and stop receiving emails from it, send an email
to [email protected].
To view this discussion on the web visit
https://groups.google.com/d/msgid/prometheus-users/28053f6d-f57e-4048-95d8-603d48323a86%40googlegroups.com.