PromQL queries in Google Cloud Managed Service for Prometheus are partially evaluated at the Monarch backend by using Monitoring Query Language (MQL), and there are some known differences in query results. This document describes the differences.
Other than the differences listed in this document, the PromQL in Managed Service for Prometheus is at parity with the PromQL available in Prometheus version 2.44.
New PromQL functions
PromQL functions added after Prometheus version 2.44 might not be supported.
Matching on metric names
Only exact matching on metric names is supported.
Staleness
Staleness is not supported in the Monarch backend.
Calculation of irate
When the lookback window for the irate
function
is less than the step size, we increase the window to the step size.
MQL requires this change to ensure that none of the input data is
completely ignored in the output. This difference applies to
rate
calculations as well.
Calculation of rate
and increase
When the lookback window for the rate
function
is less than the step size, we increase the window to the step size.
MQL requires this change to ensure that none of the input data is
completely ignored in the output. This difference applies to
irate
calculations as well.
There are differences in the interpolation and extrapolation calculations. Monarch uses a different interpolation algorithm than Prometheus, and this difference can lead to slightly different results. For example, Monarch counter samples are stored with a time range rather than the single timestamp that Prometheus uses. Therefore, counter samples in Monarch can be included in a rate calculation even though the Prometheus timestamp would exclude them. This generally results in more accurate rate results, especially when querying over the beginning or end of the underlying time series.
Calculation of histogram_quantile
A PromQL histogram_quantile
calculation on a histogram with no samples
produces a NaN value. MQL's calculation produces no value; that
is, MQL drops the point at the timestamp instead.
The rate-calculation differences can also affect the input to
histogram_quantile
queries.
Type-specific functions on differently typed metrics
Although upstream Prometheus is weakly typed, Monarch is strongly
typed. This means that running functions specific to a single type on a
differently typed metric (for example, running rate()
on a GAUGE metric or
histogram_quantile()
on a COUNTER or untyped metric) will not work in
Managed Service for Prometheus, even though these functions work in upstream
Prometheus.