PromQL 兼容性

Google Cloud Managed Service for Prometheus 中的 PromQL 查询在 Monarch 后端使用监控查询语言 (MQL) 进行部分评估,并且查询结果存在一些已知差异。本文档介绍了这些差异。

除了本文档中列出的差异之外,Managed Service for Prometheus 中的 PromQL 与 Prometheus 2.44 版中提供的 PromQL 相当。

新的 PromQL 函数

可能不支持在 Prometheus 2.44 版之后添加的 PromQL 函数。

匹配指标名称

仅支持与指标名称完全匹配。

过时

Monarch 后端不支持过时

irate 的计算

irate 函数的回溯期小于步长时,我们会将回溯期增加到步长。MQL 需要此更改,以确保输出中不会完全忽略任何输入数据。这种差异也适用于 rate 计算。

rateincrease 的计算

rate 函数的回溯期小于步长时,我们会将回溯期增加到步长。MQL 需要此更改,以确保输出中不会完全忽略任何输入数据。这种差异也适用于 irate 计算。

内插和外推计算有所不同。Monarch 使用的插值算法与 Prometheus 不同,并且这种差异可能会导致结果有所差异。例如,存储 Monarch 计数器样本的时间范围与 Prometheus 使用的单个时间戳无关。因此,可以将 Monarch 中的计数器样本包括在费率计算中,即使 Prometheus 时间戳会排除这些计数器样本。 这通常可以生成更准确的费率结果,尤其是在底层时序的开始或结束进行查询时。

histogram_quantile 的计算

针对无样本的直方图进行 PromQL histogram_quantile 计算会生成 NaN 值。MQL 的计算不会产生任何值;也就是说,MQL 会改为丢弃时间戳处的点。

费率计算差异可能还会影响 histogram_quantile 查询的输入。

针对不同类型指标的类型专用函数

虽然上游 Prometheus 是弱类型,但 Monarch 是强类型。这意味着,在不同类型的指标上运行特定于单个类型的函数(例如,对 GAUGE 指标运行 rate() 或对 COUNTER 或无类型指标运行 histogram_quantile())在 Managed Service for Prometheus 中不起作用,即使这些函数在上游 Prometheus 中有效。