Prometheus 查询

夜莺( Nightingale ) Prometheus 告警规则配置

普通模式

普通模式中正常配置 PromQL 表达式和阈值即可,如果多个 MetricName 使用 and 进行联合判断,则需要保证 Label 标签是一致的;如果使用 or 连接多个 MetricName 则不需要。如下图所示

规则配置001

规则配置002

高级模式(商业版功能)

查询条件和阈值设置分开,在告警事件的现场值中如果想将每个查询条件的值展示出来,使用多 PromQL 进行混合运算的使用才需要使用高级模式(如下面截图示例),其余情况使用普通模式即可。

多条件单独配置

需要确认分别配置的告警条件是否与查询条件一一对应。

规则配置003

多条件混合计算:使用前提是查询条件的标签必须一致

规则配置004

概述

Prometheus 是夜莺最常用的告警查询数据源类型。告警规则在 Prometheus 数据源上跑 PromQL,把返回的时序结果用 告警表达式 做布尔判定。

字段说明

字段 必填 说明
数据源 数据源 里已经配好的 Prometheus 实例
PromQL 查询语句,支持 PromQL 全部函数
执行频率 多久跑一次(默认 15s)
持续时长 满足条件持续多久才触发(避免抖动)

操作步骤

  1. 在告警规则编辑页,“查询条件"区添加 $A 查询;
  2. 选数据源类型 Prometheus、选具体数据源实例;
  3. 在 PromQL 编辑器里写查询(如 rate(http_requests_total[5m]));
  4. 点"数据预览"看返回结果是否符合预期;
  5. 在"告警条件"里写表达式(如 $A > 100);
  6. 设置执行频率 + 持续时长。

常见问题

Q1:PromQL 返回了几千条 series,告警怎么判定?

A:n9e 对每条 series 独立判定告警 — 每条满足表达式的 series 都触发一次告警事件。如果不希望产出大量事件,PromQL 里用 sum by (维度) 把无关标签聚合掉。

Q2:告警事件的标签从哪来?

A:来自 PromQL 返回时序的标签。如查询 up{instance="...",job="..."} 返回的 series 有 instancejob 标签 — 告警事件就带这两个标签。可以在告警规则的"附加标签"里再加业务侧标签。

Q3:为什么告警明明触发了 PromQL 阈值,但没产生事件?

A:常见原因:

  • 持续时长还没到:默认要满足条件 N 分钟才触发,看一下"持续时长"配置;
  • 告警引擎不健康告警引擎 页面看下集群状态;
  • 数据源被关闭 / 数据延迟:去 即时查询 手工跑同样的 PromQL 验证。

Q4:能查 VictoriaMetrics / Thanos / Mimir 吗?

A:完全兼容 — 它们都实现了 Prometheus HTTP API。建议用各自的"原生"数据源类型获得更好的性能(如 VictoriaMetrics 类型支持 MetricsQL 扩展函数)。

参考资料

更新时间 2025-03-13

快猫星云 联系方式 快猫星云 联系方式
快猫星云 联系方式
快猫星云 联系方式
快猫星云 联系方式
快猫星云