您可以使用 PromQL 查询以下来源的 Cloud Monitoring 数据并绘制相应的图表:
- Google Cloud 会写入 Cloud Monitoring 系统指标列表中所述指标的服务,例如 Google Kubernetes Engine 或 Compute Engine。
- 用户定义的指标,例如基于日志的指标和 Cloud Monitoring 用户定义的指标。
- Google Cloud Managed Service for Prometheus,适用于Google Cloud中的 Prometheus 的全代管式多云解决方案。如需了解该代管式服务(包括 PromQL 支持),请参阅 Google Cloud Managed Service for Prometheus。
您还可以使用 Grafana 等工具绘制提取到 Cloud Monitoring 的指标数据图表。可用指标包括 Managed Service for Prometheus 指标以及指标列表中记录的 Cloud Monitoring 指标。如需了解如何基于 Prometheus API 设置 Grafana 和其他工具,请参阅 Managed Service for Prometheus 文档中的 Grafana 部分。
您还可以将 Grafana 信息中心导入 Cloud Monitoring。
命名规则
Prometheus 指标模型和命名惯例不同于 Cloud Monitoring 使用的模型和惯例。如需使用 PromQL 查询 Monitoring 指标数据,您必须将 Cloud Monitoring 名称转换为与 PromQL 兼容的等效名称。如需了解命名惯例,请参阅将 Cloud Monitoring 指标映射到 PromQL。
在 Cloud Monitoring 中访问 PromQL
您可以在 Google Cloud 控制台的以下页面上的 Code 标签页中使用 PromQL:
- Metrics Explorer
- 创建自定义信息中心时添加图表
如需了解如何访问和使用该编辑器,请参阅使用 PromQL 编辑器。
Prometheus 规则和提醒
您可以在 Cloud Monitoring 中使用 Prometheus 式提醒,以便使用 PromQL 针对 Cloud Monitoring 中的任何指标创建记录和提醒规则。如需了解详情,请参阅托管式规则评估和提醒或自部署的规则评估和提醒。
学习 PromQL
要了解使用 PromQL 的基础知识,建议您查阅开源文档。以下资源可帮助您开始使用:
PromQL 差异
PromQL for Cloud Monitoring 的功能可能与上游 PromQL 略有不同。
Cloud Monitoring 中的 PromQL 查询在 Monarch 后端使用内部查询语言进行部分评估,并且查询结果存在一些已知差异。除了本部分列出的差异之外,Cloud Monitoring 中的 PromQL 与 Prometheus 2.44 版中提供的 PromQL 相当。可能不支持在 Prometheus 2.44 版之后添加的 PromQL 函数。
匹配指标名称
仅支持与指标名称完全匹配。您必须在查询中包含与指标名称完全匹配的字符串。
对于在 __name__
标签上使用正则表达式匹配器的常见场景,我们建议采用以下权宜解决方法:
- Prometheus 适配器配置通常使用
=~
运算符来匹配多个指标名称。如需解决此用法问题,请扩展配置,为每个指标使用单独的政策,并明确为每个指标命名。这还可防止您意外根据意外指标进行自动扩缩。 - 正则表达式通常用于在同一图表中绘制多个非标量指标。例如,如果您有
cpu_servicename_usage
这样的指标,则可以使用通配符将所有服务一起绘制到图表中。在 Cloud Monitoring 中,使用这样的非标量指标是一种明确的错误做法,这种做法会导致查询性能极差。如需修正此用法,请将所有维度移至指标标签中,而不是将维度嵌入到指标名称中。 - 查询多个指标通常用于查看可查询的指标。我们建议您改用
/labels/__name__/values
调用来发现指标。您还可以使用 Cloud Monitoring 界面发现指标。 - 匹配多个指标有助于您按指标查看抓取、提取和扣款的样本数量。Cloud Monitoring 会在指标管理页面上向您提供此类信息。您还可以使用“提取的样本数”指标或“按归因 ID 写入的样本数”指标,以指标数据的形式访问此信息。
过时
Monarch 后端不支持过时。
irate
的计算
当 irate
函数的回溯期小于步长时,我们会将回溯期增加到步长。Monarch 需要此更改,以确保输出中不会完全忽略任何输入数据。这种差异也适用于 rate
计算。
rate
和 increase
的计算
当 rate
函数的回溯期小于步长时,我们会将回溯期增加到步长。Monarch 需要此更改,以确保输出中不会完全忽略任何输入数据。这种差异也适用于 irate
计算。
内插和外推计算有所不同。Monarch 使用的插值算法与 Prometheus 不同,并且这种差异可能会导致结果有所差异。例如,存储 Monarch 计数器样本的时间范围与 Prometheus 使用的单个时间戳无关。因此,可以将 Monarch 中的计数器样本包括在费率计算中,即使 Prometheus 时间戳会排除这些计数器样本。 这通常可以生成更准确的费率结果,尤其是在底层时序的开始或结束进行查询时。
histogram_quantile
的计算
针对无样本的直方图进行 PromQL histogram_quantile
计算会生成 NaN 值。内部查询语言的计算不会产生任何值;系统会改为丢弃时间戳处的点。
费率计算差异可能还会影响 histogram_quantile
查询的输入。
针对不同类型指标的类型专用函数
虽然上游 Prometheus 是弱类型,但 Monarch 是强类型。这意味着,在不同类型的指标上运行特定于单个类型的函数(例如,对 GAUGE 指标运行 rate()
或对 COUNTER 或无类型指标运行 histogram_quantile()
)在 Cloud Monitoring 中不起作用,即使这些函数在上游 Prometheus 中有效。