Skip to main content

Utility Modules

Supporting modules for Platform operations. These are run on demand, not continuously.

Not all modules are included in the current container release

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.

ModulePurposeCurrent Release
backupIntegrated backup (PostgreSQL / Cassandra / files)✅ Included in data lake container
mirror-makerData replication (HA / DR)✅ Separate container — mirror profile, off by default
apiREST API client library✅ Library for external Java projects (independent of container)
setupBulk initial model registration (CSV)❌ Not in image
recoveryData recovery❌ Not in image
exporterTime series CSV export❌ Not in image
migratorCassandra data migrationExcluded 2026-08-30
labJupyter / Metabase analytics environmentExcluded 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

Not included in the current container image

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. 1_SITE_LIST.csv — Site list
  2. 2_ASSET_TREE.csv — Asset hierarchy
  3. 3_OPC_LIST.csv — OPC server connections
  4. 4_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

Not included in the current container image

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

Not included in the current container image

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

Excluded from image on 2026-08-30

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

Not included in the current container image

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

Excluded from image on 2026-08-30

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.