You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何将GCP告警策略的MQL转换为PromQL并按实例名聚合?

GCP MQL转PromQL:按实例名称聚合并实现告警条件匹配

原MQL查询(默认聚合)

fetch gce_instance
| metric 'agent.googleapis.com/cpu/load_5m'
| group_by 5m, [value_load_5m_mean: mean(value.load_5m)]
| every 5m
| condition val() > 70 '1'

目标MQL查询(按实例名称聚合)

fetch gce_instance
| metric 'agent.googleapis.com/cpu/load_5m'
| group_by 5m, [metric_value: mean(value.load_5m)]
| add [metadata.system.name]
| every 5m
| condition val() > 70 '1'

问题说明

需要将上述目标MQL转换为PromQL,要求按元数据标签metadata.system.name(对应PromQL中的metadata_system_name)聚合,同时匹配MQL中condition val()>70 '1'的逻辑。之前编写的PromQL存在以下问题:

  • 无告警红线触发
  • 聚合逻辑不符合预期
  • 错误使用>0.7篡改数据

修正后的PromQL方案

avg_over_time(agent_googleapis_com_cpu_load_5m{monitored_resource="gce_instance"}[5m])
  by (project_id, instance_id, metadata_system_name)
> bool 70

关键修正点说明

  1. 单位对齐:MQL中阈值为70,PromQL需保持一致,之前的>0.7属于单位误解,导致数据异常。
  2. 聚合逻辑修正:移除多余的sum聚合,avg_over_time已针对单个实例的时间序列计算5分钟均值,直接按目标标签分组即可匹配MQL的group_by逻辑。
  3. 条件匹配等价实现:使用bool修饰符实现与MQLcondition val()>70 '1'一致的输出——满足条件时返回1,不满足时返回0。若用于告警策略,可省略bool,直接使用>70,此时Prometheus会返回所有超过阈值的时间序列,供告警系统触发通知。

内容的提问来源于stack exchange,提问作者red888

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.13 05:38:15