跳到主要内容

plantpulse-workflow (工作流)

角色​

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

引擎用途
Temporal分布式工作流、长时间运行任务(重试 · 补偿事务)。管理控制台自身的持久工作流也在这里
Kestra声明式数据管道 · 调度。数据仓库归档器提交作业
项目值
模块名plantpulse-workflow
安装路径/opt/kopens/plantpulse-platform/plantpulse-workflow/
Temporal7233 (gRPC) · 8233 (Web UI, HTTP)
Kestra8380 (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 打不开仅 TLShttps://
归档不成功数据仓库侧问题查看 pd retention 的 cold_tier · archive_job,数据仓库容器日志
Temporal broadcastAddress 错误 · 渲染退出代码 8回环地址节点文件 → 修改设置的方法

相关文档​