数据源管理
「数据源」是运维平台的配置中枢——所有被监控的主机、中间件、集群都在这里登记,平台装好后的第一步就是登记数据源。资源监控的菜单、告警规则的可选类型,都由这里已启用的数据源动态决定。

支持的类型
| 类型 | 多实例 | 连接方式 |
|---|---|---|
| Prometheus | 内置单例 | 平台自带指标库,只读,不可停用或删除 |
| 主机 | ✅ | 主机地址(端口连通性等监控) |
| MySQL | ✅ | 主机 / 端口 / 用户名 / 密码 |
| MongoDB | ✅ | 连接 URI,支持副本集 |
| Redis | ✅ | 主机 / 端口 / 密码 / DB |
| Kafka | ✅ | Broker 地址,支持 SASL |
| Elasticsearch | ✅ | 地址 + HTTP Basic 认证 |
| Flink | 单例入口 | Flink Web UI 地址(启用后左侧出现「Flink」入口,由平台反向代理访问) |
采集状态
列表里每条数据源都有一个「采集状态」,直接告诉你它现在有没有真的在采数据,不用去翻容器日志:
| 状态 | 含义 | 常见处理 |
|---|---|---|
| 采集中 | 正常,指标正在写入 | — |
| 无数据 | 采集进程活着,但一条指标都取不到 | 多为账号 / 密码 / 权限问题。悬停查看原因原文 |
| 已停止 | 采集进程没在运行 | 悬停查看退出原因(地址不通、端口错、认证失败等),进程会自动重试 |
| 未采集 | 没有为它启动采集 | 检查用途是否勾了「看图」、是否处于启用状态 |
| 未知 | 状态暂时取不到 | 确认 ops-agent(中间件)或 ops-prometheus(主机)容器已启动 |
红色状态把鼠标移上去,会显示失败原因原文(例如 401 unable to authenticate user、
connection refused),并附上可直接复制的排查命令。面板没数据时,先看这一列。
主机(node_exporter)装在被监控主机上、由平台 Prometheus 直接抓取,不经过 ops-agent,
因此它的采集状态是查 Prometheus 的抓取结果得来的,与其余类型不是同一条路:
- 刚登记完的主机会短暂显示「未采集」,约 30 秒后抓取目标下发生效即转为「采集中」;
- 地址填了但对端不是 node_exporter、或端口不通时显示「无数据」;
- 平台 Prometheus 本身查不通时显示「未知」——这是「暂时不知道」,不代表没在采。
悬停给出的排查命令也是探主机自己的地址(curl http://主机:端口/metrics),不是进 agent 容器。
配置从哪里生效
采集配置以本页为唯一来源:新增、改密码、启停都在这里,改完即时生效,不需要重启容器。
1.5.0 起 ops.yaml 不再参与数据源配置——它只描述平台自身依赖,不描述监控目标。
需要一次接入多个实例时,用右上角的「批量导入」:先下载 YAML 模板,改成自己的地址后上传, 建议先点「仅校验 」(只做格式校验和逐条连接探测,不写入)。按「类型 + 名称」幂等, 同一份文件可反复导入;更新已有条目时密码留空 = 沿用原密码。
导出配置(备份 / 换环境)
右上角「导出配置」把当前所有数据源导成一份 YAML,格式与批量导入完全一致——导出的文件 可以直接用「批量导入」导回去,用于备份、重装恢复、把同一套数据源复制到另一套环境。
两档可选:
| 选项 | 密码 | 什么时候用 |
|---|---|---|
| 导出配置(不含密码) | 留空 | 日常备份、导回同一套平台。留空不是清空密码——导入时按「类型 + 名称」自动沿用平台里已存的密码 |
| 导出配置(含明文密码) | 明文 | 换机器、换平台恢复,即原来的库也一并没了。文件里是明文,请妥善保管,别提交进代码仓库 |
不含密码那档同样会去掉 MongoDB URI 里内嵌的账号密码(mongodb://user:pass@host → mongodb://host),
换环境恢复时记得补回。文件头部的注释里也写了这些说明。
用途
每个数据源勾选一个或多个用 途,决定它出现在哪些功能里:
| 用途 | 效果 |
|---|---|
| 看图 | 在「资源监控」对应菜单展示该实例仪表盘 |
| 告警 | 可在「告警规则」中针对该实例建规则 |
| 慢查询诊断 | 仅 MongoDB:开启慢查询分析与索引诊断。⚠️ 平台会为目标库开启 profiling(检测到未开启时执行 db.runCommand({profile:1, slowms:100}),阈值由 ENV_GATEWAY_PROFILE_SLOW_MS 控制),这是平台对被监控库唯一的写入;索引不会自动建,需你在诊断页主动点「一键创建」。诊断历史只写入平台自有的 ops-mongo |
被监控目标的账号权限
登记前,为各目标准备具备相应权限的账号(平台只读观测):
| 目标 | 所需权限 |
|---|---|
| MySQL | SELECT、SHOW DATABASES、PROCESS、REPLICATION CLIENT |
| MongoDB | 建议 root;最小权限见下方授权示例 |
| Redis | 读取数据权限 |
| Kafka | 若启用认证,需读取集群元数据权限 |
| Elasticsearch | 读写索引权限 |
| Flink | Web 地址允许运维平台内网访问 |
MongoDB 最小权限(readWrite / dbAdmin 用于慢查询诊断的索引创建):
use admin
db.createUser({
user: "opsuser", pwd: "your_secure_password",
roles: [
{ role: "clusterMonitor", db: "admin" },
{ role: "readAnyDatabase", db: "admin" },
{ role: "clusterManager", db: "admin" },
{ role: "dbAdmin", db: "mdwsrows" }, { role: "readWrite", db: "mdwsrows" },
{ role: "dbAdmin", db: "mdservicedata" }, { role: "readWrite", db: "mdservicedata" },
{ role: "dbAdmin", db: "mdworksheet" }, { role: "readWrite", db: "mdworksheet" },
{ role: "dbAdmin", db: "mdworkflow" }, { role: "readWrite", db: "mdworkflow" }
]
})
Elasticsearch 的账号怎么填
这一类最常见的故障是连接是通的、却一条指标都采不到——原因基本都是用户名填错。 点「测试连接」时平台会一并核验采集情况,这种情况会直接提示「连接成功,但还没采到数据」。
| 项 | 填什么 |
|---|---|
| URL | http://ES地址:9200,要带协议头 |
| 用户名 | md —— 明道云私有部署自带的 ES 用户名是 md,不是 elastic |
| 密码 | HAP 部署时设置的 ES 密码 |
判断是否真的采到数据,两条路都行:看本页「采集状态」列是否为采集中,或直接点「测试连接」—— 显示「无数据」时悬停即可看到原因,凭据错误会直接提示账号或密码不对。
操作
- 新建:右上角「新建数据源」→ 选类型 → 填连接信息。
- 测试连接:用真实凭据完成鉴权验证(MongoDB ping、MySQL 登录、Kafka 拉元数据、Redis AUTH、ES 认证请求),不是只探端口。并且会一并核验采集情况——连得上不等于面板有数据,两者之间还隔着采集目标下发、采集进程、指标抓取三道。结果会明确说是「连接成功,已在采集」还是「连接成功,但还没采到数据」并给出原因。
- 检测连通性:右上角按钮,对列表里所有数据源批量跑上面这套检查,「状态」列显示连通·采集中 / 无数据 / 降级 / 不通。
- 启用 / 停用:列表开关切换。停用后对应的资源监控菜单、告警类型自动隐藏,已有告警规则停止调度。
- 编辑:已存密码以掩码显示,留空即不修改。
密码与连接 URI 落库前用 ENV_ALERT_CRYPTO_KEY 做 AES 加密,接口一律返回掩码。首次部署务必设好该密钥并妥善保管——更换密钥会导致已存凭据无法解密,需要重新录入。
登记完成后
数据源登记好、采集状态转绿之后: