跳到主要内容

数据源管理

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

数据源管理

支持的类型

类型多实例连接方式
Prometheus内置单例平台自带指标库,只读,不可停用或删除
主机主机地址(端口连通性等监控)
MySQL主机 / 端口 / 用户名 / 密码
MongoDB连接 URI,支持副本集
Redis主机 / 端口 / 密码 / DB
KafkaBroker 地址,支持 SASL
Elasticsearch地址 + HTTP Basic 认证
Flink单例入口Flink Web UI 地址(启用后左侧出现「Flink」入口,由平台反向代理访问)

采集状态

列表里每条数据源都有一个「采集状态」,直接告诉你它现在有没有真的在采数据,不用去翻容器日志:

状态含义常见处理
采集中正常,指标正在写入
无数据采集进程活着,但一条指标都取不到多为账号 / 密码 / 权限问题。悬停查看原因原文
已停止采集进程没在运行悬停查看退出原因(地址不通、端口错、认证失败等),进程会自动重试
未采集没有为它启动采集检查用途是否勾了「看图」、是否处于启用状态
未知状态暂时取不到确认 ops-agent(中间件)或 ops-prometheus(主机)容器已启动

红色状态把鼠标移上去,会显示失败原因原文(例如 401 unable to authenticate userconnection 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@hostmongodb://host), 换环境恢复时记得补回。文件头部的注释里也写了这些说明。

用途

每个数据源勾选一个或多个用途,决定它出现在哪些功能里:

用途效果
看图在「资源监控」对应菜单展示该实例仪表盘
告警可在「告警规则」中针对该实例建规则
慢查询诊断仅 MongoDB:开启慢查询分析与索引诊断。⚠️ 平台会为目标库开启 profiling(检测到未开启时执行 db.runCommand({profile:1, slowms:100}),阈值由 ENV_GATEWAY_PROFILE_SLOW_MS 控制),这是平台对被监控库唯一的写入;索引不会自动建,需你在诊断页主动点「一键创建」。诊断历史只写入平台自有的 ops-mongo

被监控目标的账号权限

登记前,为各目标准备具备相应权限的账号(平台只读观测):

目标所需权限
MySQLSELECTSHOW DATABASESPROCESSREPLICATION CLIENT
MongoDB建议 root;最小权限见下方授权示例
Redis读取数据权限
Kafka若启用认证,需读取集群元数据权限
Elasticsearch读写索引权限
FlinkWeb 地址允许运维平台内网访问

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 的账号怎么填

这一类最常见的故障是连接是通的、却一条指标都采不到——原因基本都是用户名填错。 点「测试连接」时平台会一并核验采集情况,这种情况会直接提示「连接成功,但还没采到数据」。

填什么
URLhttp://ES地址:9200,要带协议头
用户名md —— 明道云私有部署自带的 ES 用户名是 md不是 elastic
密码HAP 部署时设置的 ES 密码

判断是否真的采到数据,两条路都行:看本页「采集状态」列是否为采集中,或直接点「测试连接」—— 显示「无数据」时悬停即可看到原因,凭据错误会直接提示账号或密码不对。

操作

  • 新建:右上角「新建数据源」→ 选类型 → 填连接信息。
  • 测试连接:用真实凭据完成鉴权验证(MongoDB ping、MySQL 登录、Kafka 拉元数据、Redis AUTH、ES 认证请求),不是只探端口。并且会一并核验采集情况——连得上不等于面板有数据,两者之间还隔着采集目标下发、采集进程、指标抓取三道。结果会明确说是「连接成功,已在采集」还是「连接成功,但还没采到数据」并给出原因。
  • 检测连通性:右上角按钮,对列表里所有数据源批量跑上面这套检查,「状态」列显示连通·采集中 / 无数据 / 降级 / 不通
  • 启用 / 停用:列表开关切换。停用后对应的资源监控菜单、告警类型自动隐藏,已有告警规则停止调度。
  • 编辑:已存密码以掩码显示,留空即不修改
凭据安全

密码与连接 URI 落库前用 ENV_ALERT_CRYPTO_KEY 做 AES 加密,接口一律返回掩码。首次部署务必设好该密钥并妥善保管——更换密钥会导致已存凭据无法解密,需要重新录入

登记完成后

数据源登记好、采集状态转绿之后: