验证数据到达
导入的规则不响可能只是数据没到;用集成模板列出的指标名在即时查询里查一次,两分钟就能确认组件指标已经到达。
导进来的告警规则不响,有两种可能:真的没问题,或者数据压根没到。 这两件事看起来一模一样,所以在信任规则之前,先花两分钟确认指标真的进来了。
这页给你三个由近及远的确认点,以及每一步「应该看到什么」。
1. 该查哪个指标
先知道要找什么。组件抽屉的 指标说明 页签列的就是这个组件会产出的指标: 集成中心 → 模板中心 → 点开组件 → 指标说明,表格里有指标名称、单位和 PromQL。
同一份数据在 数据查询 → 指标 → 指标视图 也能看,那里可以跨组件搜, 列是「组件类型 / 分类 / 指标名称 / 单位 / PromQL / 操作」。
86 个组件里只有 22 个带指标说明。没有的话,用插件名当前缀猜:
Categraf 的插件产出的指标基本都以插件名开头——mysql 插件出 mysql_*,
redis 插件出 redis_*,nginx 插件出 nginx_*。
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 不会关掉心跳,它照样会往夜莺发心跳,别在生产上随手跑。
一行都没有?看排障。
3. 在夜莺里确认指标到了
数据查询 → 指标,数据源选存机器指标的那个(默认安装是 embedded-tsdb),
查一条上一步看到的指标名:
mysql_global_status_threads_connected
应该看到:一条或多条曲线,每条带着 agent_hostname 标签,
值就是刚才在机器上看到的那个数量级。
查不出来的话,先把范围放宽,确认是「这个指标没有」还是「这台机器没有」:
# 这个组件的指标一条都没有?
{__name__=~"mysql_.*"}
# 这台机器有没有在上报任何指标?
{agent_hostname="n9e-web-01"}
第二条也空,说明问题不在插件,在写入链路——回到 Categraf 排障。
4. 用采集向导的自动检测
如果你是从 基础设施 → 设备列表 → 配置采集 走的向导,第四步「验证数据」会替你做上面这些。
它每 5 秒查一次哨兵指标,命令执行后通常 1 分钟内出现。两个可选项:
- 数据源:默认取服务端按写入配置匹配出来的 Prometheus 数据源。这里查不到的话, 手动切到实际存机器指标的那个;
- 目标机器(可选):选上你刚执行过命令的机器,可以逐台确认; 不选就监听所有机器的新增上报。
几种结果的含义:
| 提示 | 含义 |
|---|---|
| 正在等待 xxx 指标上报,每 5 秒自动检测一次 | 还在等,正常 |
| 已检测到 N 台新机器上报 xxx 指标 | 成了 |
| 当前已有 N 台机器在上报该组件指标 | 这些机器在你开始检测前就在上报了 |
| 已改按 xxx 前缀匹配确认 | 精确指标一直查不到,退化成前缀匹配,这时区分不出存量机器 |
| 该组件的指标名不固定,无法自动验证 | 比如 exec、mtail 这类,指标名由你的脚本决定,只能自己去查 |
| 等待超时 | 见下一节 |
如果你只是修改既有机器的配置,这里不会出现「新增」——指标持续上报就说明生效了。
5. 还是没有
超时提示里给的三条排查线索,按顺序走:
- 命令是不是执行成功了。 向导那条命令会先用
categraf --test试采, 试采不过就不会生效; - 目标机器上 categraf 还活着吗:
journalctl -u categraf -n 50
- 换个查法:在即时查询里按前缀搜
mysql_, 看是不是指标名和你以为的不一样。
再往上,确认这台机器有心跳:基础设施 → 设备列表,左边概览里有「有心跳 / 无心跳」, 表格里「更新时间」一列是最近一次心跳。心跳都没有,说明 Categraf 还没跑起来或者连不上夜莺。
还有一种情况值得单独说:数据源选错了。指标写进了 A,你在 B 里查。
机器指标默认落在内置时序库(embedded-tsdb),如果你配了
Pushgw.Writers 转发到外部时序库,那就要去对应的那个数据源里查。
下一步
- 数据到了,去调阈值:导入仪表盘与规则
- 数据没到:Categraf 排障
- 数据源本身有问题:数据源连上了但查不到数据