plantpulse-timeseries (时序)
角色
时序数据专用引擎(TSE)和PlantPulse Dashboard。将标签值按行级TTL存储到Aster TSDB,并提供聚合·查询API。
| 项目 | 值 |
|---|---|
| 模块名 | plantpulse-timeseries |
| 安装路径 | /opt/kopens/plantpulse-platform/plantpulse-timeseries/ |
| 引擎端口 | 7800 (HTTP) · 7801 (TLS) |
| UI端口 | 3000 (PlantPulse Dashboard,仅TLS) |
pd 服务 | timeseries — 仅 MASTER (自 2026-09-05 起)。engine(tse) → dashboard(grafana) |
| 账号 | PP_TSE_USER / PP_TSE_PASSWORD |
工作节点上的引擎无人读取,且仅将主节点已写入的行重新复制到同一环中(实测4.4G)。由于所有查询消费者都指向主节点的引擎,因此已改为仅MASTER。
配置
目录结构
plantpulse-timeseries/
├── engine/ # 시계열 엔진 (Java)
│ ├── bin/
│ ├── conf/plantpulse-timeseries-engine.conf # 생성물 (옛 이름 timeseries-engine.conf 로도 한 벌)
│ └── logs/
└── dashboard/ # PlantPulse Dashboard
├── bin/
├── conf/custom.ini # protocol = https · http_port = 3000
├── data/ # PlantPulse Dashboard DB — 이미지 트리 안 (볼륨 아님)
└── logs/
时序引擎 (7800 · 7801)
配置模板只有一个 /etc/kopens/conf/plantpulse-timeseries-engine.conf.template,会渲染为两个名称的文件。核心项:
| 项目 | 值 |
|---|---|
jetty.port · jetty.ssl.port | PP_TSE_PORT(7800) · PP_TSE_TLS_PORT(7801)。TLS 使用平台共用 keystore |
service.datastore | Aster TSDB 模块 — 表 pp.ts_data_points 等,UnifiedCompactionStrategy |
| 数据点 TTL | PP_TSE_DATAPOINT_TTL — 默认 31536000秒(365天)。每次写入都会标记,因此新值从新行开始 |
| 认证 | PP_TSE_USER / PP_TSE_PASSWORD — 不是对 passwd.sh,而是 sidecar 刷新 + 重启 |
curl -fsS http://127.0.0.1:7800/api/health # 컨테이너 안
curl -kfsS https://<server-ip>:7801/api/health # 밖에서 — 401 은 «로그인 필요» 이지 «없음» 이 아닙니다
管理控制台工具画面中的 «Timeseries Engine» 卡片(7801)是引擎本身的管理画面。查看时序数据的地方是 PlantPulse Dashboard。
PlantPulse Dashboard (3000)
https://<server-ip>:3000/ — 仅通过 TLS 响应。用 http:// 打开会返回 400。
登录账号存储在 PlantPulse Dashboard 自己的存储库 中。更改位置在 PlantPulse Dashboard 画面(个人资料 → 更改密码)→ Web画面登录账号 — PlantPulse Dashboard
仪表板·数据源·用户·通知规则·API密钥全部存入 PostgreSQL 的 grafana DB。
之前是镜像树中的 SQLite(dashboard/data/grafana.db),因此重新创建容器后全部丢失,但现在可以保留了。
| 变量 | 值 |
|---|---|
PP_GRAFANA_DB_USER | grafana (固定 — 模式会以此名称创建角色) |
PP_GRAFANA_DB_PASSWORD | 🔑 启动必需 — 若无,pd start 会以 exit 3 停止 |
角色密码每次启动时都会根据 sidecar 值进行校准。
🔴 PlantPulse Dashboard 不会自行在存储库之间迁移。 如果指向空的 PostgreSQL,就只会得到 空的 PlantPulse Dashboard — 没有仪表板,没有数据源,也没有用户。将原 SQLite 中的内容 迁移过来的步骤是另行提供的。
迁移后,控制台将使用 PlantPulse Dashboard 默认账号打开。由于没有每次启动时自动校准的机制, 必须由人工修改一次。 即使在配置文件中写入管理员账号也无济于事 — 一旦存储库中 有了任何用户,存储库就会优先,而且也不会提供任何错误提示。
运维命令
docker exec plantpulse-datalake pd status timeseries
docker exec plantpulse-datalake pd restart timeseries # 엔진 + PlantPulse Dashboard
docker exec plantpulse-datalake pd logs --lines 100 timeseries
docker exec plantpulse-datalake pd retention # ts_data_points 의 크기 · 압축 전략
常见问题
| 症状 | 原因 | 措施 |
|---|---|---|
| Kafka 积压增加 | 引擎处理能力不足 · Aster TSDB I/O | pd flow, pd node compactionstats |
| 数据几天后消失 | TTL | PP_TSE_DATAPOINT_TTL — 旧镜像中为31天字面量。已写入的行会按旧值过期 |
| PlantPulse Dashboard 为空(无仪表板·无数据源) | 迁移到 PostgreSQL 时未迁移内容 | 上述警告 — 需执行迁移步骤 |
pd start exit 3 | PP_GRAFANA_DB_PASSWORD 为空 | 在 sidecar 中设置值后重启 |
http://…:3000 返回 400 | 仅限 TLS | https:// |
| 仪表板响应慢 | 时间范围过大 | 缩短范围,扩大聚合间隔 |