# 查看判定执行记录

每次判定都有记录：看查询返回了什么、事件为什么触发或没触发。

最后校对于 2026-10-10

这页办完你会得到：对任意一条规则，都能翻出最近一小时的每个评估周期，逐条看到查询返回了什么、 哪些序列越了阈值、事件后来去了哪儿。「查询明明有数据，规则就是不触发」，答案就在这里。

## 打开执行记录[​](#打开执行记录 "打开执行记录的直接链接")

**告警通知 → 规则管理**，鼠标移到规则那一行，点操作列里的**执行记录**。

![规则列表](https://n9e.github.io/zh/img/docs/alerting/rule-list.zh.webp)![规则列表](https://n9e.github.io/zh/img/docs/alerting/rule-list.zh.dark.webp)

抽屉打开时默认展示最近 1 小时。上方的时间选择器可以改范围，列表底部的**加载更早的记录** 往前翻页。

列表是空的本身也是信息——本页最后一节列了三种原因。

## 一行就是一个评估周期[​](#一行就是一个评估周期 "一行就是一个评估周期的直接链接")

| 列       | 说明                                                                                             |
| -------- | ------------------------------------------------------------------------------------------------ |
| 评估时间 | 这一轮判定跑在什么时候                                                                           |
| 数据源   | 只有规则匹配到多个数据源时才出现。每个数据源单独评估，各自出一行                                 |
| 查询结果 | 每条查询一个标签：`A: 12 条曲线`，或橙色的 `A: 无数据`，或红色的 `A: 查询错误`（悬停看报错原文） |
| 异常点   | 本轮有多少条序列满足了触发条件。旁边绿色的 `↓n` 是恢复掉的序列数                                 |
| 事件处理 | 这些异常点最终去了哪儿：触发 / 等待持续时长 / 屏蔽 / 流水线丢弃 / 抑制                           |
| 耗时     | 这一轮花了多少毫秒。规则跑不动时就看这个数                                                       |

从左往右读，正好是按顺序回答：查询通不通、有没有东西越阈值、最后有没有真的出事件。

## 展开一行看现场[​](#展开一行看现场 "展开一行看现场的直接链接")

点开一行，下面有三段：

* **查询现场**——真正发出去的那条查询（变量已经替换好，规则里用了变量时会带 「变量展开查询」标记），以及返回的曲线，含标签、值和数据时间。
* **判定结果**——被判为异常的那些序列，每条带自己的标签和参与比较的值。恢复掉的会标出来。
* **事件处理明细**——每条事件一行：事件 hash、标签、走到了哪个阶段，以及一句裁决说明。

事件 hash 只有在事件真的落了库的那几个阶段才是可点的链接——已触发、重复静默、通知屏蔽、已恢复。 其余阶段的事件压根没落库，点了也查不到。

曲线和数据点在落盘前会先截断，所以结果很宽的时候记录里只有一部分，界面上会明确提示已截断。

## 事件能走到的阶段[​](#事件能走到的阶段 "事件能走到的阶段的直接链接")

「事件处理明细」里的阶段，就是引擎把这条事件往下带到哪一步为止：

| 阶段         | 含义                                                                 |
| ------------ | -------------------------------------------------------------------- |
| 等待持续时长 | 条件成立了，但还没满足持续时长。说明栏写的是 `for=300s elapsed=120s` |
| 已触发       | 产生并入队——首次触发或一次重复通知                                   |
| 重复静默     | 已经在告警中，重复通知间隔还没到，本轮不发                           |
| 被抑制       | 同一条规则里更高的级别命中了同一条序列，且开了级别抑制               |
| 流水线丢弃   | 规则上挂的事件处理流水线把它丢了                                     |
| 已屏蔽       | 命中屏蔽规则，事件压根没产生                                         |
| 仅屏蔽通知   | 命中的是「只屏蔽通知」的屏蔽规则，事件照常落库                       |
| 通知屏蔽     | 屏蔽通知期内的一次落库快照                                           |
| 被 hook 屏蔽 | 命中了外部屏蔽策略                                                   |
| 已恢复       | 恢复事件产生并入队                                                   |
| 入队失败     | 事件队列满了——是引擎积压，不是规则的问题                             |

顺序很重要，而且不是大多数人以为的那个顺序：**流水线跑在屏蔽规则之前**。 被流水线丢掉的事件，压根走不到屏蔽检查。

## 它能直接回答的三个问题[​](#它能直接回答的三个问题 "它能直接回答的三个问题的直接链接")

**「即时查询里有数据，规则就是不触发。」** 看「查询结果」。标签写着 `无数据`， 说明规则跑的那条查询和你粘进查询页的那条不是一回事——多半是打在了另一个数据源上， 或者变量展开成了你没预料到的样子。展开这一行就能看到真正发出去的查询。

**「触发了，但没人收到。」** 看「事件处理」列。`屏蔽` 和 `流水线丢弃` 说明事件根本没走到通知； 显示 `触发` 说明它走到了，问题在下游的通知规则，见 [没有收到通知](https://n9e.github.io/zh/docs/troubleshooting/no-notification.md)。

**「反复触发又反复恢复。」** 对比相邻几行的「异常点」数量。每个周期在 `1` 和 `0` 之间来回跳， 就是指标压在阈值上，见[告警为什么反复触发或从不恢复？](https://n9e.github.io/zh/docs/troubleshooting/alert-flapping.md)。

## 记录存在哪、留多久[​](#记录存在哪留多久 "记录�存在哪、留多久的直接链接")

记录写在**跑这次判定的那个告警引擎的本地磁盘**上，不落数据库。默认值都在引擎配置的 `[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。撞到上限时保新丢旧。

### 一条记录都没有[​](#一条记录都没有 "一条记录都没有的直接链接")

三种原因，按值得排查的顺序：

1. 你选的时间范围超出了 `RetentionHours`；
2. 这个引擎上配了 `Disable = true`；
3. 这条规则由一个还没有这个功能的旧版引擎在评估。

### 部分引擎节点没应答[​](#部分引擎节点没应答 "部分引擎节点没应答的直接链接")

一条规则跨了由不同引擎负责的数据源时（比如边缘机房），抽屉顶部会给一条警告，列出没连上的节点。 那些节点的记录还在，就在它们自己的磁盘上。警告里直接给出了要在那台机器上执行的命令：

```
curl -u <user>:<pass> 'http://<engine-instance>/v1/n9e/eval-records?rule_id=<id>&datasource_id=<id>&from=<ts>&to=<ts>'
```

用户名密码是那个节点 `HTTP.APIForService` 里配的 BasicAuth 账号。

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

* 不想等，直接让它触发一次：[测试触发](https://n9e.github.io/zh/docs/alerting/test-fire.md)
* 这些记录反映的时间参数：[判定周期与恢复](https://n9e.github.io/zh/docs/alerting/evaluation.md)
* 跟着事件走到引擎之外：[查看 Pipeline 执行记录](https://n9e.github.io/zh/docs/events/execution-records.md)
