跳到主要内容

测试触发

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

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

跑一次​

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

规则编辑页规则编辑页

弹窗里问四件事:

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

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

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

六个阶段各查什么​

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

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

它动了什么、没动什么​

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

它不会:

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

它会:

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

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

失败了怎么读​

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

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

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

通过之后​

模拟触发证明的是配置自洽,不是阈值合理。阈值合不合理,得存下规则、让它真的评估一段时间, 再去读判定执行记录,看查询逐周期返回了什么。

下一步​