查看判定执行记录
每次判定都有记录:看查询返回了什么、事件为什么触发或没触发。
这页办完你会得到:对任意一条规则,都能翻出最近一小时的每个评估周期,逐条看到查询返回了什么、 哪些序列越了阈值、事件后来去了哪儿。「查询明明有数据,规则就是不触发」,答案就在这里。
打开执行记录
告警通知 → 规则管理,鼠标移到规则那一行,点操作列里的执行记录。

抽屉打开时默认展示最近 1 小时。上方的时间选择器可以改范围,列表底部的加载更早的记录 往前翻页。
列表是空的本身也是信息——本页最后一节列了三种原因。
一行就是一个评估周期
| 列 | 说明 |
|---|---|
| 评估时间 | 这一轮判定跑在什么时候 |
| 数据源 | 只有规则匹配到多个数据源时才出现。每个数据源单独评估,各自出一行 |
| 查询结果 | 每条查询一个标签:A: 12 条曲线,或橙色的 A: 无数据,或红色的 A: 查询错误(悬停看报错原文) |
| 异常点 | 本轮有多少条序列满足了触发条件。旁边绿色的 ↓n 是恢复掉的序列数 |
| 事件处理 | 这些异常点最终去了哪儿:触发 / 等待持续时长 / 屏蔽 / 流水线丢弃 / 抑制 |
| 耗时 | 这一轮花了多少毫秒。规则跑不动时就看这个数 |
从左往右读,正好是按顺序回答:查询通不通、有没有东西越阈值、最后有没有真的出事件。
展开一行看现场
点开一行,下面有三段:
- 查询现场——真正发出去的那条查询(变量已经替换好,规则里用了变量时会带 「变量展开查询」标记),以及返回的曲线,含标签、值和数据时间。
- 判定结果——被判为异常的那些序列,每条带自己的标签和参与比较的值。恢复掉的会标出来。
- 事件处理明细——每条事件一行:事件 hash、标签、走到了哪个阶段,以及一句裁决说明。
事件 hash 只有在事件真的落了库的那几个阶段才是可点的链接——已触发、重复静默、通知屏蔽、已恢复。 其余阶段的事件压根没落库,点了也查不到。
曲线和数据点在落盘前会先截断,所以结果很宽的时候记录里只有一部分,界面上会明确提示已截断。
事件能走到的阶段
「事件处理明细」里的阶段,就是引擎把这条事件往下带到哪一步为止:
| 阶段 | 含义 |
|---|---|
| 等待持续时长 | 条件成立了,但还没满足持续时长。说明栏写的是 for=300s elapsed=120s |
| 已触发 | 产生并入队——首次触发或一次重复通知 |
| 重复静默 | 已经在告警中,重复通知间隔还没到,本轮不发 |
| 被抑制 | 同一条规则里更高的级别命中了同一条序列,且开了级别抑制 |
| 流水线丢弃 | 规则上挂的事件处理流水线把它丢了 |
| 已屏蔽 | 命中屏蔽规则,事件压根没产生 |
| 仅屏蔽通知 | 命中的是「只屏蔽通知」的屏蔽规则,事件照常落库 |
| 通知屏蔽 | 屏蔽通知期内的一次落库快照 |
| 被 hook 屏蔽 | 命中了外部屏蔽策略 |
| 已恢复 | 恢复事件产生并入队 |
| 入队失败 | 事件队列满了——是引擎积压,不是规则的问题 |
顺序很重要,而且不是大多数人以为的那个顺序:流水线跑在屏蔽规则之前。 被流水线丢掉的事件,压根走不到屏蔽检查。
它能直接回答的三个问题
「即时查询里有数据,规则就是不触发。」 看「查询结果」。标签写着 无数据,
说明规则跑的那条查询和你粘进查询页的那条不是一回事——多半是打在了另一个数据源上,
或者变量展开成了你没预料到的样子。展开这一行就能看到真正发出去的查询。
「触发了,但没人收到。」 看「事件处理」列。屏蔽 和 流水线丢弃 说明事件根本没走到通知;
显示 触发 说明它走到了,问题在下游的通知规则,见
没有收到通知。
「反复触发又反复恢复。」 对比相邻几行的「异常点」数量。每个周期在 1 和 0 之间来回跳,
就是指标压在阈值上,见告警反复触发或从不恢复。
记录存在哪、留多久
记录写在跑这次判定的那个告警引擎的本地磁盘上,不落数据库。默认值都在引擎配置的
[Alert.EvalLog] 下面:
[Alert.EvalLog]
# Disable = false
# 默认是 <[Log] Dir>/evallog
# Dir = "logs/evallog"
# 192 小时 = 8 天
# RetentionHours = 192
# MaxSeriesPerQuery = 100
# MaxPointsPerSeries = 60
# PerRuleDailyMB = 1024
# MaxDiskGB = 20
也就是:留 8 天,单条记录最多存 100 条曲线、每条曲线 60 个点,单规则每天上限 1 GB, 总量上限 20 GB。撞到上限时保新丢旧。
一条记录都没有
三种原因,按值得排查的顺序:
- 你选的时间范围超出了
RetentionHours; - 这个引擎上配了
Disable = true; - 这条规则由一个还没有这个功能的旧版引擎在评估。
部分引擎节点没应答
一条规则跨了由不同引擎负责的数据源时(比如边缘机房),抽屉顶部会给一条警告,列出没连上的节点。 那些节点的记录还在,就在它们自己的磁盘上。警告里直接给出了要在那台机器上执行的命令:
curl -u <user>:<pass> 'http://<engine-instance>/v1/n9e/eval-records?rule_id=<id>&datasource_id=<id>&from=<ts>&to=<ts>'
用户名密码是那个节点 HTTP.APIForService 里配的 BasicAuth 账号。
下一步
- 不想等,直接让它触发一次:测试触发
- 这些记录反映的时间参数:判定周期与恢复
- 跟着事件走到引擎之外:查看 Pipeline 执行记录