Utility Modules
Supporting modules for Platform operations. These are run on demand, not continuously.
The modules that go into the container image are fixed, and a substantial number of the modules listed below are not included in the current image. You will not find those paths inside the container.
| Module | Purpose | Current Release |
|---|---|---|
| backup | Integrated backup (PostgreSQL / Cassandra / files) | ✅ Included in data lake container |
| mirror-maker | Data replication (HA / DR) | ✅ Separate container — mirror profile, off by default |
| api | REST API client library | ✅ Library for external Java projects (independent of container) |
| setup | Bulk initial model registration (CSV) | ❌ Not in image |
| recovery | Data recovery | ❌ Not in image |
| exporter | Time series CSV export | ❌ Not in image |
| migrator | Cassandra data migration | ❌ Excluded 2026-08-30 |
| lab | Jupyter / Metabase analytics environment | ❌ Excluded 2026-08-30 |
migrator and lab were explicitly removed from the image because «the orchestrator does not call them, there are no units, and no actual processes run» (lab consumed 792MB of image size).
If you need the procedures below, contact webmaster@kopens.com.
Modules included in the data lake container are run from within that container.
cd /opt/kopens/plantpulse-platform-docker/bin
./shell.sh
plantpulse-setup
The following is for reference if you have this module in a separate environment.
Bulk registration of site / asset / OPC / tag models from CSV files.
cd /opt/kopens/plantpulse-platform/plantpulse-setup/bin
./setup.sh \
--host ${PP_HOST_IP} --port 7003 \
--user api --password 'api123!' \
--dir /opt/kopens/plantpulse-platform/plantpulse-setup/model/_example
CSV file order:
1_SITE_LIST.csv— Site list2_ASSET_TREE.csv— Asset hierarchy3_OPC_LIST.csv— OPC server connections4_TAG_LIST.csv— Tag definitions
plantpulse-backup
Integrated backup for PostgreSQL (pgBackRest), Cassandra (Medusa), and files (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 # 보관 정책 정리
./backup.sh --cron-install # 크론 자동 등록
./backup.sh --cron-remove
# 파일 백업
/opt/kopens/plantpulse-platform/plantpulse-backup/etc/run_restic.sh
For details, see Backup and Recovery.
plantpulse-recovery
Reprocess time series data for a specific asset by date range.
cd /opt/kopens/plantpulse-platform/plantpulse-recovery/bin
./recovery.sh ASSET_01032 20260101 20260530
plantpulse-exporter
Time series data CSV export + large-scale dsbulk.
cd /opt/kopens/plantpulse-platform/plantpulse-exporter/bin
# 에셋 단위 CSV 추출
./export.sh ASSET_01032 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
Spark-based Cassandra migration across servers (server replacement / cluster migration).
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
Data replication (HA / DR). Runs in its own container and is tied to the mirror profile, so it does not start by default.
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
Configuration is passed via compose environment variables, the same as other containers.
plantpulse-simulator
Time series data simulator for testing / demo. RANDOM or CSV-based, up to 10,000 MPS.
cd /opt/kopens/plantpulse-platform/plantpulse-simulator/bin
vi run.sh # TYPE, MPS, CSV 설정
./run-daemon.sh
./log-viewer.sh
./stop.sh
Configuration example:
TYPE="RANDOM" # RANDOM | CSV
MPS="10000" # 초당 메시지 수
PROTOCOL="KAFKA"
# CSV 모드
CSV="/home/simul/data/20260530.csv"
SPEED="1.0" # 1.0 실시간, 2.0 2배속
plantpulse-api
PlantPulse REST API client Java library.
plantpulse-api/
├── lib/ # 의존 jar
└── target/
├── plantpulse-api.jar
├── plantpulse-buffer.jar
├── plantpulse-cassandra-3.0.jar
├── plantpulse-cassandra.jar
└── plantpulse-cep-api.jar
Add as a dependency in pom.xml / build.gradle of external Java projects, then use. For detailed usage, see API Usage Guide.
plantpulse-lab
Jupyter and Metabase were not started by the orchestrator and had no actual processes running, so the 792MB they consumed in the image has been removed.
You may still see a Jupyter card in the web console, but that card did not work even before this change. If you need an analytics environment, we recommend standing it up separately externally and connecting via Kyuubi (10000) and PostgreSQL (5432).
Analytics environment for data scientists / developers.
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 are pre-installed for immediate analysis.
Metabase
cd /opt/kopens/plantpulse-platform/plantpulse-lab/metabase/bin
./start.sh
# 기본 포트 3001
Visual BI dashboard for non-developers. Direct connection to PostgreSQL / Kyuubi.