rate Metrics Operator
The rate operator calculates the per-second rate of change between data points in the time series. There are two different modes in which the rate operator can work:
- Regular
rate
(withoutover
modifier) calculates the rate of change between consecutive data points. It divides the difference in values of consecutive data points by the difference in their timestamps in seconds. rate over TIME
, on the other hand, allows you to calculate an average rate of change over a specified time window. This is achieved by considering the first and the last metric value in the given time window, extrapolating to the ends of the window if necessary.
The rate operator also assigns the value of the metric tag to be rate($metric)
and the value of the unit metadata field to be $unit/second
(for example, 1/second).
Syntax​
rate [increasing | decreasing | counter] [[over] INTERVAL]
where INTERVAL
is the duration over which you want to calculate and average rate, in seconds (s
) , minutes (m
), hours (h
), or days (d
).
When deciding which mode you should use, here are some guidelines:
- You need to get an instant rate of a counter - use
rate counter
. - You need to get an average rate of a counter over an interval - use
rate counter over INTERVAL
. - You need to get an instant rate of a non-counter metric - use
rate
. - You need to get an average rate of a non-counter metric over an interval - use
rate over INTERVAL
.
The use of counter
mode is recommended for counter-like metrics because it accounts for counter resets and always returns non-negative rate values.
You can also use the increasing
or decreasing
option to make rate
consider only positive or negative rate values, respectively. However, these options are mostly kept for backward compatibility and so their usage is not recommended.
Examples​
Rate of change between consecutive data points​
This query calculates the increase or decrease per second in the Net_InBytes
metric from one collected data point to the next.
metric=Net_InBytes Interface=eth0 | rate
Rate of change between consecutive counter values​
This query calculates the increase in apiserver_request_total
counter value from one collected data point to the next.
metric=apiserver_request_total | rate counter
Average rate of change of a time window​
This query calculates the average rate of apiserver_request_total
counter value changes over a 5-minute time window
metric=apiserver_request_total | rate counter over 5m