管理控制台
数据湖节点的运维控制台。在浏览器中从一个界面查看状态、指标、日志、诊断、配置、备份、工作节点,执行允许的 pd 命令,并在同一地址为外部监控系统(Grafana、Prometheus、Zabbix)提供健康 API。
| 项目 | 值 |
|---|---|
| 后端模块 | plantpulse-datalake-admin-api(至 2026-09-03 为止 plantpulse-monitor) |
| 运行位置 | plantpulse-datalake 容器内 — 主节点和工作节点均有 |
| 地址 (TLS) | https://<server-ip>:4950/ |
| 地址 (明文) | http://<server-ip>:4949/ — 同一控制台、同一 API |
| 登录 | PP_DATALAKE_ADMIN_USER(默认 admin) / PP_DATALAKE_ADMIN_PASSWORD |
| 默认语言 | 英文。加上 ?lang=ko 可切换为韩文 |
访问
在浏览器中输入两个地址之一。它们是同一个控制台,只是协议不同。
https://<server-ip>:4950/?lang=ko # TLS — 권장
http://<server-ip>:4949/?lang=ko # 평문 — 4950 으로 리다이렉트하지 않습니다
登录密码和会话 Cookie 以明文流动。在不可信网络中必须使用 4950。保留 4949 不是疏漏,而是刻意的选择 — 因为自签名证书警告会实际阻止运维人员访问。
通过 TLS 连接时可能出现自签名证书警告。更换为真实证书的方法见安全设置。
登录
登录界面显示该节点的名称和角色(主节点/工作节点)。同时打开多个节点进行操作时可核实当前在哪个节点。
| 变量 | 默认值 | 说明 |
|---|---|---|
PP_DATALAKE_ADMIN_USER | admin | 登录用户名 |
PP_DATALAKE_ADMIN_PASSWORD | 2026-09-05 之后安装的版本为开发默认值,之前为空 | 为空则控制台无法打开 |
PP_DATALAKE_ADMIN_API_KEY | 无 | 机器调用日志端点时的 X-API-Key |
修改或首次设置密码的方法见网页登录账户 — 管理控制台。
表示 PP_DATALAKE_ADMIN_PASSWORD 为空。仅控制台未启动,数据湖可正常运行。这不是故障,而是在调试阶段遗漏的步骤。填入值后重启即可。
界面布局 — 导航栏和侧边栏
左侧窄条形为导航栏,8 个功能组用图标表示。导航栏仅显示图标 — 鼠标悬停时以工具提示显示名称。
选择一个功能组后,该组的界面会在侧边栏中展开。但是,只有一个界面的功能组没有侧边栏 — 因为没有选择项目,不必占用空间。
导航栏的顺序是故障时人们提问的顺序 — 「现在有问题吗」→「在哪里」→「事实是什么」→「告知谁」→「改什么」→「执行命令」→「切换界面」→「发生了什么」。
| 功能组 | 区域 | 界面 | 回答的问题 |
|---|---|---|---|
| 概览 | — | 仪表盘 | 现在有异常吗 |
| 拓扑 | — | 拓扑(选项卡:数据流、节点) | 管道的哪里被阻塞,其余部分数据是否正常流动 |
| 观测 | 状态 | 状态、指标 | 当前判定和过去一小时至一周的趋势 |
| 资源 | 存储 | 卷、WAL、复制槽、存储大小 | |
| 活动 | 事件、日志、诊断、作业 | 发生了什么 — 事件日志、服务日志、pd doctor、备份和归档作业历史 | |
| 报警 | — | 报警 | 何时向谁发送告警 |
| 运维 | 配置 | 配置 | 模板和渲染结果的差异、模板编辑和回滚 |
| 维护 | 升级、工作节点 | 每个模块的版本,对集群工作节点需要改什么 | |
| 备份 | 备份 | 备份集、计划编辑、执行、恢复 | |
| 命令 | — | 命令 | 执行允许的 pd 动词 |
| 工具 | — | 工具 | 链接到其他产品网页 UI 的卡片 |
| 记录 | — | 审计 | 在此控制台中谁改过什么 |
导航栏中的圆点解读
导航栏中功能组图标旁的圆点是该功能组所有界面中最差的状态。
轮询停止、响应为空或状态为 UNKNOWN 的组件完全不画圆点。不会涂成绿色。即无圆点和绿色圆点是不同的。不要以「没有颜色就没问题」的方式理解 — 这表示未测量。
报警功能组的圆点查看的是报警列表本身,而不是健康状态。
| 圆点 | 含义 |
|---|---|
| FAIL | 至少有一条主动告警在发声 |
| WARN | 有主动告警但全部已静音 |
| OK | 无主动告警 |
| 无圆点 | 报警轮询停止 — 是静音还是未测量 |
静音不是正常状态。静音、规则禁用、低于最小严重级别、抑制窗口、无通道 — 报警无声的原因有五种,控制台用五个不同的提示分别告知。
各界面须知
| 界面 | 须知 |
|---|---|
| 拓扑 | 两个选项卡是同一系统的两个视图 — 数据流(MQTT → Kafka → 消费者)和节点(主、工作)。仪表盘显示「有异常」时,在此查看哪个环节 |
| 状态 → 组件 | 点击行进入组件详情。与 pd status 表同行,每 15 秒刷新。启动直后数十秒显示 STOPPED 是正常的 |
| 日志 | 仅显示 pd logs --list 声明的文件。应用容器(服务器、批处理、数据仓库)的日志不在此 — 使用主机的 logs.sh |
| 诊断 | pd doctor 的结果。「运行检查」按钮立即再执行一次。一次只能接收一个,如出现「busy」则稍后再点 |
| 作业 | 备份、归档、维护作业的历史集中在一处。备份界面专门查看备份 |
| 配置 | 「现在渲染会改什么」(pd config diff)和「我的模板与镜像默认值的差异」(pd config diff --templates)。在界面中编辑模板时会保存修订版本,可以回滚。密码、地址等配置的权威来源仍是主机 → 修改配置方法 |
| 升级 | 每个模块的 PlantPulse 版本和提交。读取镜像构建的 /etc/plantpulse-modules.json |
| 工作节点 | 对集群工作节点显示需要改什么的命令,但不执行。执行在主机上进行 → 集群安装 |
| 备份 | 备份集列表、定时器计划、当前运行任务。「计划编辑器」调用 pd backup schedule set → 备份和恢复 |
| 命令 | 仅执行服务器允许清单中的 pd 动词(清单在界面中显示)。其他命令从容器 shell 执行 → pd CLI |
| 工具 | 将其他产品的网页 UI 汇集为卡片,在新标签页中打开。地址主机名跟随当前接入的主机,所以从哪个节点打开都是那个节点的工具。该节点不存在的服务卡片不会绘制 |
| 审计 | 在此控制台中谁改过什么。工作节点没有审计存储,始终显示「无法读取」— 不是平静的一周,而是无法读取 |
提供数据的界面为空时会通知你该界面为空,同时声明这不表示「无异常」。不要将空白界面理解为正常。
工具界面的卡片
| 卡片 | 地址 | 用途 |
|---|---|---|
| CEP | https://<호스트>:7401/ | EQL 规则和它匹配的事件 |
| Grafana | https://<호스트>:3000/ | 时序数据的仪表盘 |
| 时序引擎 | https://<호스트>:7801/ | 时序数据本身不是,而是引擎本身的管理界面 |
| Spark | http://<호스트>:4440/ | Spark 主节点、工作节点、运行中的应用 |
| Temporal | http://<호스트>:8233/ | 工作流执行和历史 |
| Kestra | https://<호스트>:8380/ | 数据管道 — 流、执行、日志 |
| MinIO | http://<호스트>:9001/ | 对象存储 — 存储桶、对象、访问密钥 |
| 数据网关 | https://<호스트>:5501/ | SQL 执行控制台。旧的 SQL 工具卡已并入此卡(2026-09-07) |
具有 TLS 对应端口的界面链接到 TLS 端口。由于此控制台使用 TLS (4950),不转发明文地址。
控制台多久调用一次 pd
控制台界面不是每次请求都运行 pd。后端的采集循环每次运行一个并缓存最后的文档,界面读取该缓存。
| 动词 | 周期 |
|---|---|
pd status --json · pd logs --list | 15 秒 |
pd node status --json · pd storage --json | 30 秒 |
pd flow --json · pd config diff --json · pd env --json | 60 秒 |
pd doctor --json · pd retention --json · pd config diff --templates --json | 300 秒 |
按周期计算,60 秒中约 46 秒用于运行 pd。因此控制台打开所在的节点上 pd status 偶尔响应缓慢是正常的。
健康 API
控制台绘制的所有界面都基于 /api/*,全部列表和模式由控制台读取 /api/openapi.json 在API 表中显示。
curl -kfsS https://<server-ip>:4950/api/health | jq # TLS
curl -fsS http://<server-ip>:4949/api/health | jq # 평문 — 같은 API
docker exec plantpulse-datalake curl -kfsS https://127.0.0.1:4950/api/health | jq # 컨테이너 안 — 어떤 구성에서도
curl -kfsS https://<server-ip>:4950/api/services | jq # 서비스 목록과 상태
主机的 status.sh · ops-check.sh · doctor.sh · stack-verify-boot.sh 都读取此 /api/health。/api/health 无需身份验证即可响应,其他 API 需要登录会话或 X-API-Key(日志端点)。
Prometheus 集成
抓取 https://<server-ip>:4950/metrics。如果是自签名 CA,启用 insecure_skip_verify。在平台附带的 Grafana (3000) 或外部 Grafana 中作为数据源连接。
常见问题
| 症状 | 原因 | 处理 |
|---|---|---|
| 控制台无法打开、「未配置」 | PP_DATALAKE_ADMIN_PASSWORD 为空 | 网页登录账户 |
| 4949 可用但 4950 不可用 | 证书问题 | 检查浏览器警告或在安全设置中更换证书 |
| 健康端点无响应 | 数据湖容器异常 | 从主机运行 status.sh → logs.sh plantpulse-datalake |
| 整个界面显示「未测量」 | 轮询停止或镜像过旧 | 查看 pd env 中的 IMAGE_BUILT_AT。2026-09-04 前的 admin-api 经常报「另一个作业正在运行」 |
| 工具卡片不显示 | 该服务不在此节点上(工作节点)或轮询无响应 | 用主节点的控制台 |
| Prometheus 抓取返回 5xx | 后端模块宕机 | 用 status.sh 检查依赖模块 |
| 审计界面显示「无法读取」 | 工作节点 | 正常 — 在主节点中查看 |