# 验证数据到达

导入的规则不响可能只是数据没到；用集成模板列出的指标名在即时查询里查一次，两分钟就能确认组件指标已经到达。

最后校对于 2026-10-10

导进来的告警规则不响，有两种可能：真的没问题，或者**数据压根没到**。 这两件事看起来一模一样，所以在信任规则之前，先花两分钟确认指标真的进来了。

这页给你三个由近及远的确认点，以及每一步「应该看到什么」。

## 1. 该查哪个指标[​](#1-该查哪个指标 "1. 该查哪个指标的直接链接")

先知道要找什么。组件抽屉的 **指标说明** 页签列的就是这个组件会产出的指标： **集成中心 → 模板中心 → 点开组件 → 指标说明**，表格里有指标名称、单位和 PromQL。

同一份数据在 **数据查询 → 指标 → 指标视图** 也能看，那里可以跨组件搜， 列是「组件类型 / 分类 / 指标名称 / 单位 / PromQL / 操作」。

83<!-- --> 个组件里只有 <!-- -->21<!-- --> 个带指标说明。没有的话，用插件名当前缀猜： Categraf 的插件产出的指标基本都以插件名开头——`mysql` 插件出 `mysql_*`， `redis` 插件出 `redis_*`，`nginx` 插件出 `nginx_*`。

## 2. 在机器上确认采集器在采[​](#2-在机器上确认采集器在采 "2. 在机器上确认采集器在采的直接链接")

最靠近源头的确认点，在装了 Categraf 的那台机器上：

```
cd /path/to/categraf

./categraf --configs /path/to/categraf/conf --test --inputs mysql
```

`--test` 把采到的指标打到标准输出，**不往夜莺发**。输出长这样：

```
1788432166 18:42:46 mysql_global_status_threads_connected agent_hostname=n9e-web-01 instance=n9e-10.2.3.4:3306 5
```

看到指标行就说明插件配对了。**注意两点**：这个进程不会自己退出，看到输出就 Ctrl-C； 另外 `--test` **不会关掉心跳**，它照样会往夜莺发心跳，别在生产上随手跑。

一行都没有？看[排障](https://n9e.github.io/zh/docs/data/categraf/troubleshooting.md)。

## 3. 在夜莺里确认指标到了[​](#3-在夜莺里确认指标到了 "3. 在夜莺里确认指标到了的直接链接")

**数据查询 → 指标**，数据源选存机器指标的那个（默认安装是 `embedded-tsdb`）， 查一条上一步看到的指标名：

```
mysql_global_status_threads_connected
```

**应该看到**：一条或多条曲线，每条带着 `agent_hostname` 标签， 值就是刚才在机器上看到的那个数量级。

查不出来的话，先把范围放宽，确认是「这个指标没有」还是「这台机器没有」：

```
# 这个组件的指标一条都没有？

{__name__=~"mysql_.*"}



# 这台机器有没有在上报任何指标？

{agent_hostname="n9e-web-01"}
```

第二条也空，说明问题不在插件，在写入链路——回到 [Categraf 排障](https://n9e.github.io/zh/docs/data/categraf/troubleshooting.md)。

## 4. 用采集向导的自动检测[​](#4-用采集向导的自动检测 "4. 用采集向导的自动检测的直接链接")

如果你是从 **基础设施 → 设备列表 → 配置采集** 走的向导，第四步「验证数据」会替你做上面这些。

它每 5 秒查一次哨兵指标，命令执行后通常 1 分钟内出现。两个可选项：

* **数据源**：默认取服务端按写入配置匹配出来的 Prometheus 数据源。这里查不到的话， 手动切到实际存机器指标的那个；
* **目标机器**（可选）：选上你刚执行过命令的机器，可以逐台确认； 不选就监听所有机器的新增上报。

几种结果的含义：

| 提示                                       | 含义                                                          |
| ------------------------------------------ | ------------------------------------------------------------- |
| 正在等待 xxx 指标上报，每 5 秒自动检测一次 | 还在等，正常                                                  |
| 已检测到 N 台新机器上报 xxx 指标           | 成了                                                          |
| 当前已有 N 台机器在上报该组件指标          | 这些机器在你开始检测前就在上报了                              |
| 已改按 xxx 前缀匹配确认                    | 精确指标一直查不到，退化成前缀匹配，这时区分不出存量机器      |
| 该组件的指标名不固定，无法自动验证         | 比如 `exec`、`mtail` 这类，指标名由你的脚本决定，只能自己去查 |
| 等待超时                                   | 见下一节                                                      |

**如果你只是修改既有机器的配置，这里不会出现「新增」**——指标持续上报就说明生效了。

## 5. 还是没有[​](#5-还是没有 "5. 还是没有的直接链接")

超时提示里给的三条排查线索，按顺序走：

1. **命令是不是执行成功了。** 向导那条命令会先用 `categraf --test` 试采， 试采不过就不会生效；
2. **目标机器上 categraf 还活着吗**：
   <!-- -->
   ```
   journalctl -u categraf -n 50
   ```
3. **换个查法**：在即时查询里按前缀搜 `mysql_`， 看是不是指标名和你以为的不一样。

再往上，确认这台机器有心跳：**基础设施 → 设备列表**，左边概览里有「有心跳 / 无心跳」， 表格里「更新时间」一列是最近一次心跳。心跳都没有，说明 Categraf 还没跑起来或者连不上夜莺。

还有一种情况值得单独说：**数据源选错了**。指标写进了 A，你在 B 里查。 机器指标默认落在内置时序库（`embedded-tsdb`），如果你配了 `Pushgw.Writers` 转发到外部时序库，那就要去对应的那个数据源里查。

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

* 数据到了，去调阈值：[导入仪表盘与规则](https://n9e.github.io/zh/docs/data/integrations/import.md)
* 数据没到：[Categraf 排障](https://n9e.github.io/zh/docs/data/categraf/troubleshooting.md)
* 数据源本身有问题：[数据源连上了，为什么查不到数据？](https://n9e.github.io/zh/docs/troubleshooting/no-data.md)
