Utility-Module
Eine Sammlung von Hilfsmodulen zur Unterstützung des Platform-Betriebs. Diese werden nicht permanent ausgeführt, sondern bei Bedarf gestartet.
Die in das Container-Image aufgenommenen Module sind festgelegt; viele der in der folgenden Tabelle aufgeführten Module sind nicht im aktuellen Image enthalten. Wenn Sie nach diesen Pfaden innerhalb des Containers suchen, werden Sie diese nicht finden.
| Modul | Verwendungszweck | Aktuelle Auslieferung |
|---|---|---|
| backup | Integriertes Backup (PG / Aster TSDB / Datei) | ✅ In Datalake-Container enthalten |
| mirror-maker | Datenreplikation (HA / DR) | ✅ Separater Container — mirror Profil standardmäßig deaktiviert |
| api | REST API Client-Bibliothek | ✅ Bibliothek für externe Java-Projekte (unabhängig vom Container) |
| setup | Stapelregistrierung initialer Modelle (CSV) | ✅ Erhält ein eigenes Image (2026.09) — Java/Build nicht erforderlich |
| recovery | Datenwiederherstellung | ❌ Nicht im Image enthalten |
| exporter | Export von Zeitreihen als CSV | ❌ Nicht im Image enthalten |
| migrator | Aster TSDB Datenmigration | ❌ Seit 2026-08-30 ausgeschlossen |
| lab | Jupyter / Metabase Analyseumgebung | ❌ Seit 2026-08-30 ausgeschlossen |
migrator und lab wurden explizit aus dem Image entfernt, da «der Orchestrator sie nicht aufruft, es keine Units gibt und keine Prozesse tatsächlich laufen» (lab nahm 792 MB des Images ein).
Falls Sie die folgenden Verfahren benötigen, kontaktieren Sie bitte webmaster@kopens.com.
Module, die im Datalake-Container enthalten sind, werden innerhalb des Containers ausgeführt.
cd /opt/kopens/plantpulse-platform-docker/bin
./shell.sh
plantpulse-setup
Ermöglicht die Stapelregistrierung von Site-, Asset-, OPC- und Tag-Modellen auf Basis von CSV-Dateien.
Ab 2026.09 wird dies als eigenes Container-Image bereitgestellt — es ist weder eine Java-Installation noch ein Build-Prozess erforderlich.
# 내 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
| Punkt | Wert |
|---|---|
| Image | docker.kopens.io/pp/plantpulse-setup:<릴리즈 태그> · :latest |
| CSV-Übermittlung | Host-Verzeichnis mounten und den Pfad innerhalb des Containers in --dir angeben |
| Kodierung | Standard $MS949$. Bei UTF-8 -e CSV_CHARSET=UTF-8 |
| Erforderliche Argumente | --host · --port · --user · --password · --dir (keine Standardwerte) |
| Protokoll | Nur HTTP — 80 in --port angeben |
--port 7003 in älteren Beispielen sind nicht mehr korrektDer API-Connector 7003 wurde am 2026-09-14 entfernt. Die Verbindung erfolgt nun über 80, analog zum Web. Wenn Sie weiterhin 7003 verwenden, wird keine Verbindung hergestellt.
🔴 443 ist ebenfalls nicht verwendbar. Dieses Tool kommuniziert ausschließlich über Plaintext-HTTP (im Quellcode fixiert). Bei Angabe von 443 wird Plaintext an einen TLS-Port gesendet, was zum Verbindungsabbruch führt — dies ist die gleiche Art von Fehler wie bei 7003 (Installation abgeschlossen, aber keine Verbindung).
Reihenfolge der CSV-Dateien:
1_SITE_LIST.csv— Site-Liste2_ASSET_TREE.csv— Asset-Hierarchie3_OPC_LIST.csv— OPC-Server-Verbindungen4_TAG_LIST.csv— Tag-Definitionen
plantpulse-backup
Integriertes Backup für PostgreSQL (pgBackRest), Aster TSDB (Medusa) und Dateien (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
Die Zeitplanung wird nicht von diesem Tool verwaltet. --cron-install · --cron-remove · --schedule-install · --schedule-remove wurden am 2026-09-08 eingestellt und führen nun zu einem Fehler mit dem Exit-Code 2. Die Zeitpläne befinden sich in der Tabelle backup_schedule der Datalake-DB und werden von Quartz ausgelöst — diese werden über pd backup schedule eingesehen und über pd backup schedule set geändert.
Die einzige Funktion, die dieses Tool noch besitzt, ist ein globaler Stopp-Schalter — PP_BACKUP_SCHEDULE_ENABLED=false (der Zeitplan bleibt erhalten, nur die Auslösung wird gestoppt).
Der Status wird über ./backup.sh --schedule-show abgefragt.
Details siehe Backup und Wiederherstellung.
plantpulse-recovery
Neuverarbeitung von Zeitreihendaten eines bestimmten Assets für einen definierten Zeitraum.
cd /opt/kopens/plantpulse-platform/plantpulse-recovery/bin
./recovery.sh EQUIPMENT_000001 20260101 20260530
plantpulse-exporter
Export von Zeitreihendaten als CSV + Bulk-Export mittels 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
Spark-basierte Migration zwischen Aster TSDB-Servern (Serveraustausch / Cluster-Umzug).
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
Datenreplikation (HA / DR). Wird als eigener Container gestartet und ist an das mirror Profil gebunden, sodass er standardmäßig nicht startet.
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
Die Konfiguration erfolgt analog zu anderen Containern über die Umgebungsvariablen in der Compose-Datei.
plantpulse-simulator
Zeitreihendaten-Simulator für Test- und Demozwecke. Verfügbar in zwei Modi: RANDOM (liest Tag-Liste und wählt N Werte pro Sekunde zufällig aus) oder CSV (spielt Dateien mit Zeitstempeln in der vorgegebenen Reihenfolge ab). Ab 2026.09 als Container-Image verfügbar.
# 무작위 부하
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
Ohne API_HOST · API_TOKEN · PP_MQ_USER · PP_MQ_PASSWORD startet der Container nicht — dies verhindert einen Zustand, in dem der Container ohne Token läuft und keine Daten sendet.
plantpulse-api
Java-Client-Bibliothek für die PlantPulse REST API.
plantpulse-api/
├── lib/ # 의존 jar
└── target/
├── plantpulse-api.jar
├── plantpulse-buffer.jar
├── plantpulse-cassandra-3.0.jar
├── plantpulse-cassandra.jar
└── plantpulse-cep-api.jar
Nach dem Hinzufügen der Abhängigkeiten zu pom.xml / build.gradle in einem externen Java-Projekt verwendbar. Weitere Informationen finden Sie im API-Benutzerhandbuch.
plantpulse-lab
Jupyter und Metabase wurden aus dem Image entfernt, da sie nicht vom Orchestrator gestartet wurden, keine Units vorhanden waren und keine Prozesse tatsächlich liefen, während sie 792 MB Speicherplatz beanspruchten.
Die Jupyter-Karte ist in der Web-Konsole möglicherweise noch sichtbar, aber diese Karte funktionierte bereits vor dieser Änderung nicht. Wenn Sie eine Analyseumgebung benötigen, wird empfohlen, diese extern bereitzustellen und eine Verbindung über Kyuubi(10000) oder PostgreSQL(5432) herzustellen.
Analyseumgebung für Data Scientists und Entwickler.
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 und psycopg2 sind vorinstalliert, sodass eine sofortige Analyse möglich ist.
Metabase
cd /opt/kopens/plantpulse-platform/plantpulse-lab/metabase/bin
./start.sh
# 기본 포트 3001
Visuelles BI-Dashboard für Nicht-Entwickler. Direkte Verbindung zu PostgreSQL / Kyuubi.