plantpulse-workflow (工作流)
角色
用于长时间运行任务和数据管道编排。同时运行两个引擎。
| 引擎 | 用途 |
|---|---|
| Temporal | 分布式工作流、长时间运行任务(重试 · 补偿事务)。管理控制台自身的持久工作流也在这里 |
| Kestra | 声明式数据管道 · 调度。数据仓库归档器提交作业 |
| 项目 | 值 |
|---|---|
| 模块名 | plantpulse-workflow |
| 安装路径 | /opt/kopens/plantpulse-platform/plantpulse-workflow/ |
| Temporal | 7233 (gRPC) · 8233 (Web UI, HTTP) |
| Kestra | 8380 (Web UI + API, 仅 TLS) · 8391 (管理端点,内部) |
pd 服务 | workflow — 仅 MASTER。temporal → kestra |
此处没有归档工作器(2026-09-06)
Aster TSDB → Iceberg 归档器曾暂时是该服务的第三个组件,后来被移至平台镜像的 plantpulse-warehouse-web 容器中。数据湖是基础设施,而“哪个表何时如何归档”是业务逻辑,因此如此处理 → warehouse 模块
构成
目录结构
plantpulse-workflow/
├── temporal/
│ ├── bin/
│ ├── config/workflow.yaml # 생성물 ← /etc/kopens/conf/workflow.yaml.template
│ └── logs/
└── kestra/
├── bin/
├── config/application.yaml # 생성물 ← /etc/kopens/conf/application.yaml.template
└── logs/
Temporal
| 项目 | 值 |
|---|---|
| 端口 | 7233 (frontend gRPC) · 8233 (Web UI) · 7243 (HTTP API) · 7234/7235/7239 (内部服务) |
| 后端 | PostgreSQL 数据库 temporal · temporal_visibility,账户 temporal (PP_TEMPORAL_USER / PP_TEMPORAL_PASSWORD) |
| 广播地址 | broadcastAddress = PP_TEMPORAL_HOST — 如果是回环地址,则渲染被拒绝 |
| 指标 | 8244 (仅监听 127.0.0.1,管理控制台读取) |
PP_TEMPORAL_PASSWORD 不是 Temporal 自身账户,而是后端 PostgreSQL 账户。passwd.sh 替换为 ALTER ROLE。
Web UI http://<server-ip>:8233/ 没有登录。请仅在私网中开放。
docker exec plantpulse-datalake bash -c 'cd /opt/kopens/plantpulse-platform/plantpulse-workflow/temporal && ./bin/temporal --address 127.0.0.1:7233 workflow list'
Kestra
| 项目 | 值 |
|---|---|
| 端口 | 8380 — 仅 TLS,http:// 不响应。/ 重定向到 /ui/ |
| 登录 | PP_KESTRA_ADMIN_EMAIL / PP_KESTRA_ADMIN_PASSWORD (basic-auth) |
| 后端 | PostgreSQL 数据库 kestra,账户 kestra (PP_KESTRA_DB_USER / PP_KESTRA_DB_PASSWORD) — 与登录账户不同 |
| 存储 | /data1/pp-data/kestra/storage |
这两个密码都不属于 passwd.sh 的范围 → Web 界面登录账户 — Kestra,不轮换的值
示例 Flow
id: daily-report
namespace: plantpulse
description: 매일 새벽 2시에 보고서 스크립트 실행
triggers:
- id: every-2am
type: io.kestra.plugin.core.trigger.Schedule
cron: "0 2 * * *"
tasks:
- id: run
type: io.kestra.plugin.scripts.shell.Commands
commands:
- echo "report"
运维命令
docker exec plantpulse-datalake pd status workflow
docker exec plantpulse-datalake pd restart workflow # Temporal + Kestra
docker exec plantpulse-datalake pd logs --lines 100 workflow
常见问题
| 症状 | 原因 | 处理措施 |
|---|---|---|
| Temporal 启动失败 | PostgreSQL 未就绪 · temporal 角色密码不一致 | pd status storage,passwd.sh PP_TEMPORAL_PASSWORD |
| Kestra 启动失败 | kestra 角色密码不一致 | 边车的 PP_KESTRA_DB_PASSWORD — 启动时 pd 根据角色进行调整 |
http://…:8380 打不开 | 仅 TLS | https:// |
| 归档不成功 | 数据仓库侧问题 | 查看 pd retention 的 cold_tier · archive_job,数据仓库容器日志 |
Temporal broadcastAddress 错误 · 渲染退出代码 8 | 回环地址 | 节点文件 → 修改设置的方法 |