# 测试触发

手动触发一条规则，在上线前检查查询、标签和渲染出来的通知。

最后校对于 2026-10-10

这页办完你会得到：在规则表单上按一个按钮，拿到一份六阶段的报告——查询通不通、事件长什么样、 会不会被屏蔽规则吞掉、消息到底有没有送到人手上。不用干等指标出问题。

## 跑一次[​](#跑一次 "跑一次的直接链接")

**模拟触发**按钮在告警规则表单底部，紧挨着**保存**。规则**不需要先保存**， 测试跑的就是表单里当前这份配置。

![规则编辑页](https://n9e.github.io/zh/img/docs/alerting/rule-edit.zh.webp)![规则编辑页](https://n9e.github.io/zh/img/docs/alerting/rule-edit.zh.dark.webp)

弹窗里问四件事：

| 字段     | 作用                                                                                                            |
| -------- | --------------------------------------------------------------------------------------------------------------- |
| 模拟级别 | 按哪个级别合成事件。只配了一个级别的规则会自动填好并说明；配了多档阈值的会问你要模拟哪一档                      |
| 事件类型 | 触发或恢复。选恢复时，如果规则关掉了「恢复时通知」，会明确提示                                                  |
| 样本数据 | Prometheus 规则可以选一个数据源，让它真跑一次查询、取第一条真实序列。其他类型自动取样。查询无数据时用内置模拟值 |
| 干跑     | 勾上：各环节照常判定，但一条消息都不发。不勾：**真的给规则上配的真实接收人发通知**，标题带 `[TEST]` 前缀        |

第一次跑就把**干跑**勾上。只有确实要验证「消息能到手机」时才取消勾选。

点**开始测试**。预期结果：竖着列出六个阶段，每个带一个状态标签——通过、注意、失败或跳过。

## 六个阶段各查什么[​](#六个阶段各查什么 "六个阶段各查什么的直接链接")

| 阶段           | 实际做了什么                                                                                                                       |
| -------------- | ---------------------------------------------------------------------------------------------------------------------------------- |
| 查询与条件检测 | **真的执行**规则里的查询。每条报告返回了多少条序列、最新值是多少。判定条件会依次查引用是否存在、语法对不对，然后用真实数据实算一遍 |
| 合成事件       | 用取到的样本序列合成一条事件，附加信息和规则名都过一遍模板渲染。模板写错了在这里暴露                                               |
| 生效检查       | 和引擎一致的前置判断：规则启用了吗、当前时间在生效窗口内吗、事件对应的机器还在吗、业务组对得上吗                                   |
| 事件处理       | 规则上挂的流水线按顺序**真的跑一遍**。被流水线丢弃的话，报告到此为止                                                               |
| 屏蔽检查       | 匹配屏蔽规则。命中只给一条警示，不打断测试，好让你继续验证通知配置                                                                 |
| 通知发送       | 逐条匹配事件上的通知规则；不是干跑的话，消息是真发出去的                                                                           |

报告底部的**合成事件详情**可以展开，里面是完整的合成事件：标签、附加信息、现场值—— 通知模板能看到的东西全在里面。

## 它动了什么、没动什么[​](#它动了什么没动什么 "它动了什么、没动什么的直接链接")

取消「干跑」之前先读这一段。

**它不会：**

* 把事件写进数据库——合成事件没有 id，活跃事件和历史事件列表里都看不到；
* 走真实的事件队列，所以不触发回调、不触发告警自愈、不发全局 webhook；
* 写通知记录。

**它会：**

* 真的对真实数据源执行查询；
* 真的执行事件处理流水线——处理器里如果调了外部系统，那就是真调；
* 不勾干跑时，真的给真实接收人发通知。消息带 `[TEST]` 前缀，收信方能分辨的也就只有这个前缀。

同一个用户在同一个业务组下，10 秒只能测一次。

## 失败了怎么读[​](#失败了怎么读 "失败了怎么读的直接链接")

哪个阶段变红就看哪里，说明栏通常直接写清了问题：

* **查询有效，但当前无数据**——规则的查询没返回你以为的东西。这是最常见的结果， 它不是测试失败，是查询该改了。
* **引用的查询 A 不存在 / 表达式语法错误**——判定条件引用了不存在的查询别名，或者压根解析不了。 真实引擎遇到解析不了的表达式会**静默判为不满足**，正因如此才值得在这里抓出来。
* **规则处于禁用状态**、**当前时间不在规则生效时段内**——就这份配置而言， 指标怎么抖它都不会产生事件。
* **命中屏蔽规则「X」**——屏蔽规则自己的说明会告诉你它是连事件一起屏蔽，还是只屏蔽通知。
* **未配置任何通知规则**——事件会触发，但没人会知道。

查询阶段有两个前提要注意。匹配到多个数据源的规则，**只检测第一个**——真实告警是对每个数据源 分别评估的。用了变量的查询会被跳过，因为检测展不开变量。

## 通过之后[​](#通过之后 "通过之后的直接链接")

模拟触发证明的是配置自洽，不是阈值合理。阈值合不合理，得存下规则、让它真的评估一段时间， 再去读[判定执行记录](https://n9e.github.io/zh/docs/alerting/execution-records.md)，看查询逐周期返回了什么。

## 下一步[​](#下一步 "下一步的直接链接")

* 看真实的判定：[查看判定执行记录](https://n9e.github.io/zh/docs/alerting/execution-records.md)
* 把消息写好看：[模板与变量](https://n9e.github.io/zh/docs/notifications/templates.md)
* 把媒介本身也验一遍：[端到端测试一条通知](https://n9e.github.io/zh/docs/notifications/test.md)
