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


高级模式(商业版功能)
查询条件和阈值设置分开,在告警事件的现场值中如果想将每个查询条件的值展示出来,使用多 PromQL 进行混合运算的使用才需要使用高级模式(如下面截图示例),其余情况使用普通模式即可。
多条件单独配置
需要确认分别配置的告警条件是否与查询条件一一对应。

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

概述
Prometheus 是夜莺最常用的告警查询数据源类型。告警规则在 Prometheus 数据源上跑 PromQL,把返回的时序结果用 告警表达式 做布尔判定。
字段说明
| 字段 | 必填 | 说明 |
|---|---|---|
| 数据源 | 是 | 选 数据源 里已经配好的 Prometheus 实例 |
| PromQL | 是 | 查询语句,支持 PromQL 全部函数 |
| 执行频率 | 是 | 多久跑一次(默认 15s) |
| 持续时长 | 是 | 满足条件持续多久才触发(避免抖动) |
操作步骤
- 在告警规则编辑页,“查询条件"区添加
$A查询; - 选数据源类型
Prometheus、选具体数据源实例; - 在 PromQL 编辑器里写查询(如
rate(http_requests_total[5m])); - 点"数据预览"看返回结果是否符合预期;
- 在"告警条件"里写表达式(如
$A > 100); - 设置执行频率 + 持续时长。
常见问题
Q1:PromQL 返回了几千条 series,告警怎么判定?
A:n9e 对每条 series 独立判定告警 — 每条满足表达式的 series 都触发一次告警事件。如果不希望产出大量事件,PromQL 里用 sum by (维度) 把无关标签聚合掉。
Q2:告警事件的标签从哪来?
A:来自 PromQL 返回时序的标签。如查询 up{instance="...",job="..."} 返回的 series 有 instance 和 job 标签 — 告警事件就带这两个标签。可以在告警规则的"附加标签"里再加业务侧标签。
Q3:为什么告警明明触发了 PromQL 阈值,但没产生事件?
A:常见原因:
Q4:能查 VictoriaMetrics / Thanos / Mimir 吗?
A:完全兼容 — 它们都实现了 Prometheus HTTP API。建议用各自的"原生"数据源类型获得更好的性能(如 VictoriaMetrics 类型支持 MetricsQL 扩展函数)。