已有 Prometheus / VictoriaMetrics
把现有存储注册为数据源,抓取配置原样保留,让第一条规则在它上面跑起来——数据不用搬。
这条路的终点:一条告警规则在你现有的时序库上跑起来,抓取配置一行没改,数据一个字节没搬。 大约 10 分钟。
开始之前
- 夜莺已经起来了(还没起看快速开始);
- 你的 Prometheus / VictoriaMetrics / Thanos / Mimir 的查询地址, 以及夜莺所在机器能访问这个地址;
- 如果对方开了认证,准备好用户名和密码。
1. 注册数据源
集成中心 → 数据源 → 新增 → Prometheus。
只有两个字段是必填的:
| 字段 | 填什么 |
|---|---|
| 名称 | 起个能认出来的名字,规则里按它选数据源 |
| URL | 查询地址。表单里就列着各家的写法 |
各家的 URL 长这样(表单里的提示同款):
Prometheus http://localhost:9090/
Thanos Querier http://localhost:19192/
VictoriaMetrics 单机版 http://{vmselect}:8428/
VictoriaMetrics 集群版 http://{vmselect}:8481/select/0/prometheus/
Mimir Query Frontend http://mimir:9009/prometheus
M3 http://localhost:7201/
VictoriaMetrics、Thanos、Mimir 都实现了 PromQL HTTP API,所以都注册成 Prometheus Like
这一种类型——没有单独的 VictoriaMetrics 类型。接 VictoriaMetrics 时把表单最下面的
时序库类型 选成 VictoriaMetrics 即可,那个字段只影响仪表盘查询的优化方式。
开了 basic auth 的,在 认证 区填用户名密码——填原始密码,
不是 Prometheus web-config.yml 里那串 bcrypt 哈希。
自签证书打开「跳过 SSL 验证」。
点 测试连通性并保存。测试不通过不会入库,错误信息会直接告诉你卡在哪一步。 (旁边那个 不测试连通性直接保存 用于地址暂时不可达、想先把配置存下来的情况。)

2. 保存之后会弹一个引导
保存不会直接跳回列表,而是弹出一个引导:它当场替你回答「这个数据源现在能不能用」, 再给出接下来能做的几件事。

数据体检
弹窗打开时会真的往这个数据源发一条查询,结论分四种:
| 结论 | 意味着 | 该做什么 |
|---|---|---|
| 数据正常 | 顺带报出指标个数、最近数据时间、查询耗时和一个示例指标 | 往下走 |
| 连接正常,但没有发现任何指标 | 地址是通的,库里没有数据 | 多半是采集端还没往里写,不是数据源配错了 |
| 历史有数据,近期没有新写入 | 指标在,但最近没有新样本 | 去看采集器是不是停了 |
| 无法连接数据源 | 地址、认证或网络不通 | 点弹窗里的「返回修改配置」 |
体检只对 Prometheus 系数据源做,其它类型会显示「暂不支持数据体检」—— 去即时查询里实际查一次即可。
「下一步」的三个入口
三个入口都在新标签打开,弹窗不会被冲掉:
- 探索这些数据:带着体检查到的那个示例指标直接打开即时查询,落地就有图, 不用自己想第一条查询该写什么;
- 去创建仪表盘 / 去创建告警规则:落到对应的列表页,顶部有一条 「数据源『xxx』已就绪」的横幅提示你先选业务组——这两处的新增入口都要求先有业务组上下文。
组件模板匹配
如果这个数据源里有夜莺认识的组件,弹窗底部会把它们列出来,按组件给出「几盘几警」。
判定方式是哨兵指标:每个内置模板从自己的查询里挑一到三个代表性指标,拼成一条查询打到你的 数据源,最近五分钟有样本的就算「这个组件的数据在这儿」。所以列出来的都是你真的在采的组件, 不是一份全量模板清单。
点卡片进导入弹窗:

选业务组,勾要导的仪表盘或告警规则,导入时会自动绑定到刚保存的这个数据源上。 另外两个导入入口和模板本身的说明见导入仪表盘与规则。
关掉之后还想再看
集成中心 → 数据源,那一行的 数据状态 打开的是同一个弹窗,体检会重新跑一次。 数据源停用期间不体检,弹窗会直接说明这一点。
3. 确认真的能查到数据
上一步点「探索这些数据」落地的就是这个页面。手动过来的话: 数据查询 → 指标,数据源选你刚建的那个,输入一条你确定有数据的 PromQL,比如:
up
有曲线出来,这条路就通了。查不到先别往下走—— 数据源连上了但查不到数据。
4. 写第一条规则
告警通知 → 规则管理 → 新增,选中你的数据源,写一条会触发的查询。 先用一条必然成立的表达式,好确认链路是通的,比如:
up == 1
评估周期 15 秒、持续时长 60 秒、级别 S2,保存。
一分钟后去 告警通知 → 告警事件,应该能看到事件。 看到了,说明「数据源 → 查询 → 判定 → 事件」这条链路是通的。
确认之后记得把这条测试规则改成真实阈值或者删掉,不然它会一直响。
下一步
- 让事件真的送到人:通知
- 认真写规则:告警规则
- 还想顺便监控机器:从 Categraf 开始