跳到主要内容

实用程序模块

支持 Platform 运行的辅助模块集。这些模块并非持续运行,而是采用按需执行的方式。

当前容器发布版中并未全部包含

镜像中包含的模块是固定的,下表中的大部分模块不包含在当前镜像中。如果在容器内查找相应路径,将无法找到。

模块用途当前发布版
backup统一备份 (PG / Aster TSDB / 文件)✅ 包含在数据湖容器中
mirror-maker数据复制 (HA / DR)✅ 独立容器 — mirror Profile 默认关闭
apiREST API 客户端库✅ 外部 Java 项目使用的库 (与容器无关)
setup初始模型批量注册 (CSV)✅ 以独立镜像形式发布 (2026.09) — 无需 Java 或构建
recovery数据恢复❌ 镜像未包含
exporter时序 CSV 导出❌ 镜像未包含
migratorAster TSDB 数据迁移❌ 2026-08-30 起排除
labJupyter / Metabase 分析环境❌ 2026-08-30 起排除

migrator 与 lab 因«编排器不调用、无单元、且无实际运行进程»而被明确从镜像中移除(lab 曾占用镜像 792MB)。

如需以下程序,请咨询 webmaster@kopens.com。

包含在数据湖容器中的模块在容器内部运行。

cd /opt/kopens/plantpulse-platform-docker/bin
./shell.sh

plantpulse-setup​

基于 CSV 文件批量注册站点 / 资产 / OPC / 标签模型。

2026.09 起将以独立容器镜像形式发布 — 无需安装 Java,也无需进行构建。

# 내 CSV 를 마운트해서 등록
docker run --rm -v "$PWD/csv:/csv" \
docker.kopens.io/pp/plantpulse-setup:latest \
--host ${PP_HOST_IP} --port 80 --user admin --password '<password>' --dir /csv

# 이미지에 든 예제로 먼저 시험 — 마운트 없이 됩니다
docker run --rm docker.kopens.io/pp/plantpulse-setup:latest \
--host ${PP_HOST_IP} --port 80 --user admin --password '<password>' \
--dir /opt/kopens/plantpulse-platform/plantpulse-setup/model_example

docker run --rm docker.kopens.io/pp/plantpulse-setup:latest --help
项目值
镜像docker.kopens.io/pp/plantpulse-setup:<릴리즈 태그> · :latest
CSV 传递挂载主机目录,并在 --dir 中指定容器内路径
编码默认 MS949。若为 UTF-8 则使用 -e CSV_CHARSET=UTF-8
必填参数--host · --port · --user · --password · --dir (无默认值)
协议仅限 HTTP — --port 指定为 80
旧示例中的 --port 7003 现在是错误的

API 连接器 7003 已于 2026-09-14 移除。现在应像 Web 一样使用 80 端口连接 — 若继续使用 7003 将无法连接。

🔴 443 端口同样不可用。 本工具仅支持明文 HTTP(源码固定)。若指定 443,将尝试以明文与 TLS 端口通信,导致连接失败 — 这与 7003 是同类失败(安装已完成但无法连接)。

CSV 文件顺序:

  1. 1_SITE_LIST.csv — 站点列表
  2. 2_ASSET_TREE.csv — 资产层级
  3. 3_OPC_LIST.csv — OPC 服务器连接
  4. 4_TAG_LIST.csv — 标签定义

plantpulse-backup​

PostgreSQL (pgBackRest)、Aster TSDB (Medusa)、文件 (Restic) 统一备份。

cd /opt/kopens/plantpulse-platform/plantpulse-backup/bin

./backup.sh --install # 초기 설정
./backup.sh --postgres # PG Differential (기본)
./backup.sh --postgres full # PG Full
./backup.sh --postgres incr # PG Incremental
./backup.sh --cassandra # Cassandra Differential
./backup.sh --cassandra full # Cassandra Full
./backup.sh --purge # 보관 정책 정리

# 파일 백업
/opt/kopens/plantpulse-platform/plantpulse-backup/etc/run_restic.sh

本工具不管理计划。 --cron-install · --cron-remove · --schedule-install · --schedule-remove 已于 2026-09-08 退役,目前会报错并以退出码 2 结束。计划存储在数据湖 DB 的 backup_schedule 表中,由 Quartz 触发 — 通过 pd backup schedule 查看并使用 pd backup schedule set 修改。

本工具目前仅保留一个全局暂停开关 — PP_BACKUP_SCHEDULE_ENABLED=false(保留计划表,仅停止触发)。 状态通过 ./backup.sh --schedule-show 查看。

详情请参阅 备份与恢复。

plantpulse-recovery​

不包含在当前容器镜像中

按时间段对特定资产的时序数据进行重新处理。

cd /opt/kopens/plantpulse-platform/plantpulse-recovery/bin
./recovery.sh EQUIPMENT_000001 20260101 20260530

plantpulse-exporter​

不包含在当前容器镜像中

时序数据 CSV 导出 + 大容量 dsbulk。

cd /opt/kopens/plantpulse-platform/plantpulse-exporter/bin

# 에셋 단위 CSV 추출
./export.sh EQUIPMENT_000001 20260101 20260530 /tmp

# 테이블 전체 벌크 언로드 (dsbulk)
./bulk-unload.sh pp tm_tag_point
# → /data1/pp-backup/cassandra/bulk/tm_tag_point.gz

# 벌크 로드 (복원)
./bulk-load.sh pp tm_tag_point

plantpulse-migrator​

已于 2026-08-30 从镜像中排除

基于 Spark 的 Aster TSDB 服务器间迁移(服务器更换 / 集群迁移)。

cd /opt/kopens/plantpulse-platform/plantpulse-migrator/bin
./run.sh 192.168.0.41 192.168.0.237 pp.tm_tag_point

plantpulse-mirror-maker​

数据复制 (HA / DR)。作为独立容器启动,由于绑定在 mirror Profile 中,默认不会启动。

cd /opt/kopens/plantpulse-platform-docker

# 켜기
docker compose -f compose/docker-compose.yml --profile mirror up -d plantpulse-mirror-maker

# 상태 · 로그
docker compose -f compose/docker-compose.yml --profile mirror ps
bin/logs.sh plantpulse-mirror-maker

配置与其它容器相同,通过 compose 的环境变量传递。

plantpulse-simulator​

用于测试/演示的时序数据模拟器。支持 RANDOM(读取标签列表,每秒随机生成 N 个)或 CSV(按顺序播放包含时间的文件)两种模式,2026.09 起以容器镜像形式发布。

# 무작위 부하
docker run --rm \
-e API_HOST=${PP_HOST_IP} -e API_TOKEN=<v5 API 토큰> \
-e PP_MQ_USER=<메시징 계정> -e PP_MQ_PASSWORD=<메시징 비밀번호> \
-e SIM_TYPE=RANDOM -e SIM_MPS=1000 \
docker.kopens.io/pp/plantpulse-simulator:latest

# CSV 재생 — 파일을 마운트하고 «컨테이너 안» 경로를 줍니다
docker run --rm -v "$PWD/data:/data" \
-e API_HOST=${PP_HOST_IP} -e API_TOKEN=<token> \
-e PP_MQ_USER=<계정> -e PP_MQ_PASSWORD=<password> \
-e SIM_TYPE=CSV -e SIM_CSV=/data/a.csv,/data/b.csv \
-e SIM_START=TOMORROW -e SIM_SPEED=2.0 \
docker.kopens.io/pp/plantpulse-simulator:latest
若缺失必要网络,则«拒绝启动»

若无 API_HOST · API_TOKEN · PP_MQ_USER · PP_MQ_PASSWORD,容器将无法启动 — 旨在避免出现「在无 Token 状态下启动但不发送任何数据」的情况。

plantpulse-api​

PlantPulse REST API 客户端 Java 库。

plantpulse-api/
├── lib/ # 의존 jar
└── target/
├── plantpulse-api.jar
├── plantpulse-buffer.jar
├── plantpulse-cassandra-3.0.jar
├── plantpulse-cassandra.jar
└── plantpulse-cep-api.jar

在外部 Java 项目的 pom.xml / build.gradle 中添加依赖后使用。详细用法请参考 API 使用手册。

plantpulse-lab​

已于 2026-08-30 从镜像中排除

由于 Jupyter · Metabase 不由编排器启动且无实际运行进程,在占用镜像 792MB 的情况下被移除。

Web 控制台中可能仍可见 Jupyter 卡片,但该卡片在本次变更前就已无法运行。如需分析环境,建议在外部单独部署,并通过 Kyuubi(10000) · PostgreSQL(5432) 进行连接。

面向数据科学家/开发者的分析环境。

plantpulse-lab/
├── jupyter/ # Jupyter Notebook
│ ├── bin/
│ ├── logs/
│ └── notebook/ # 노트북 저장소
└── metabase/ # Metabase (BI 도구)
├── bin/
└── metabase.jar

Jupyter​

cd /opt/kopens/plantpulse-platform/plantpulse-lab/jupyter/bin
./start.sh
# 기본 포트 8888

预装 PySpark / cassandra-driver / psycopg2,可立即进行分析。

Metabase​

cd /opt/kopens/plantpulse-platform/plantpulse-lab/metabase/bin
./start.sh
# 기본 포트 3001

面向非开发者的可视化 BI 仪表板。支持直接连接 PostgreSQL / Kyuubi。

相关文档​