跳到主要内容

plantpulse-workflow (工作流)

角色

长时间运行任务和数据管道的编排。同时运行两个引擎。

引擎用途
Temporal分布式工作流、长时间运行任务(重试·补偿事务)。管理控制台自身的 durable 工作流也在此处
Kestra声明式数据管道·调度。仓库归档程序向其提交作业
项目
模块名plantpulse-workflow
安装路径/opt/kopens/plantpulse-platform/plantpulse-workflow/
Temporal7233 (gRPC) · 8233 (Web UI, HTTP)
Kestra8380 (Web UI + API, TLS only) · 8391 (管理端点,内部)
pd 服务workflow — 仅 MASTER。temporal → kestra
此处不包含归档工作线程 (2026-09-06)

Cassandra → Iceberg 归档程序曾是该服务的第三个组件,后来已迁移至平台镜像中的 plantpulse-warehouse 容器。数据湖是基础设施,而"何时何地如何归档哪个表"是业务逻辑 → 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 DB 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 DB 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 storagepasswd.sh PP_TEMPORAL_PASSWORD
Kestra 启动失败kestra 角色密码不匹配边车的 PP_KESTRA_DB_PASSWORD — 启动时 pd 将其与角色同步
http://…:8380 无法打开仅 TLShttps://
归档未运行仓库端问题pd retention 中的 cold_tier·archive_job,仓库容器日志
Temporal broadcastAddress 错误·渲染 exit 8回环地址节点文件 → 配置修改方法

相关文档