Zum Hauptinhalt springen

So ändern Sie Einstellungen

Je nachdem, was Sie ändern, unterscheiden sich die zu bearbeitende Datei und die Art der Übernahme. Suchen Sie Ihren Fall zuerst in der Tabelle unten.

Wenn Sie die Konfigurationsdateien einer Komponente direkt bearbeiten, gehen die Änderungen beim nächsten Start verloren

Der Datensee rendert seine Konfiguration bei jedem Start neu. Er liest die Vorlagen von plantpulse-datalake-cli/config/templates/, füllt ${PP_*} aus und überschreibt dann die Konfigurationsplätze der einzelnen Komponenten (wie plantpulse-storage/db/cassandra/conf/cassandra.yaml). Welche Vorlage wohin gehört, steht auf der einen Seite config/render.map.

Wenn Sie also cassandra.yaml · postgresql.conf · kafka.properties öffnen und ändern, kehrt beim nächsten pd start alles zum Original zurück. Die Stelle zum Ändern ist die Vorlage.

# ❌ 이렇게 고치면 다음 기동에 사라진다
vi /opt/kopens/plantpulse-platform/plantpulse-storage/db/cassandra/conf/cassandra.yaml

# ✅ 템플릿을 고친다 — 호스트의 /etc/kopens/conf 가 템플릿 자리로 마운트돼 있다
vi /etc/kopens/conf/cassandra.yaml.template
docker exec plantpulse-datalake pd config render # 렌더해 보고
docker exec plantpulse-datalake pd config diff # 「지금 도는 설정」과의 차이 (0 = 같다)
docker exec plantpulse-datalake pd restart storage # 해당 서비스만 재시작

Wenn pd config diff nicht 0 ist, bedeutet das: Die Laufzeitdateien weichen von der Vorlage ab – entweder hat sie jemand direkt geändert oder die Darstellung (Rendering) ist noch nicht erfolgt.

Was Sie ändern möchtenBeispielWo Sie es ändernÜbernahme
Passwörter · API-SchlüsselPostgreSQL-Passwort, CEP-API-Schlüsselbin/passwd.shDas Tool startet sogar neu
Adresse · Identität dieser BoxAdresse, unter der andere Boxen sich verbinden, Kafka-Werbeadresse, NAT-öffentliche IP/etc/kopens/platform.node.envbin/restart-datalake.sh
Gemeinsame, nicht geheime Werte aller KnotenSprache · Zeitzone, Backup-Zeitplan-Schalter, Konsolen-Log-Endpunkt/etc/kopens/plantpulse-platform.envbin/restart-datalake.sh
Container-RessourcenSpeicherlimit des Datensees/etc/kopens/platform.node.env (DOCKER_DATALAKE_MEMORY)bin/restart-datalake.sh
«Zeilen» der Engine-Konfigurationpostgresql.conf-Parameter, Kafka-Aufbewahrungsdauer, Aster TSDB-Heap/etc/kopens/conf/<파일>.templatebin/restart-datalake.sh oder im Container pd config render + pd restart <서비스>
Backup-ZeitplanZeitpunkt des nächtlichen BackupsIm Container pd backup schedule setSofort
Öffentliche PortsAuf dem Host geöffnete Portscompose/docker-compose.ymlbin/restart-datalake.sh — Achtung
Die Überprüfung nach der Änderung ist immer gleich
cd /opt/kopens/plantpulse-platform-docker/bin
./status.sh # 0 = 정상
docker exec plantpulse-datalake pd config diff # 런타임 파일 = 렌더 결과인가 (0 = 같다)
docker exec plantpulse-datalake pd doctor # FAIL 0

1. Passwörter · API-Schlüssel​

Öffnen Sie keine Dateien. passwd.sh erledigt in einem einzigen Befehl: Kontowechsel auf der Serverseite → Sidecar aktualisieren → Konfiguration neu rendern → Neustart.

cd /opt/kopens/plantpulse-platform-docker
bin/passwd.sh --list # 바꿀 수 있는 키
bin/passwd.sh PP_PG_PASSWORD # 값은 프롬프트로 (권장)

Details finden Sie unter Passwörter · API-Schlüssel ändern.

2. Adresse und Identität dieser Box – Knotendatei​

/etc/kopens/platform.node.env ist die Datei für Werte, die nur für diese Box gelten. Kopieren Sie sie nicht auf andere Boxen – tatsächlich wurde eine Box, auf die die Datei einer anderen kopiert wurde, stillschweigend mit der falschen Rolle neu installiert.

VariableWann eintragenWenn leer
PP_MASTER_IPWenn andere Boxen (Edge, KI, Worker) sich mit diesem Datensee verbinden müssen – die LAN-Adresse dieses HostsAdresse im Compose-Netzwerk (10.99.0.100) – funktioniert nur innerhalb derselben Box
PP_KAFKA_ADVERTISED_HOSTNur wenn hinter NAT oder über eine zweite Schnittstelle mit Kafka verbunden wirdDas Tool leitet beim Start ab (Betreiberwert > PP_MASTER_IP > Host-Standard-IP). Normalerweise leer lassen
DOCKER_PP_EXTERNAL_IPÖffentliche IP in NAT-Umgebungen. Geht in das SAN des TLS-ZertifikatsLeer lassen – bei falscher IP wird kein einziges Zertifikat erstellt
PP_NODE_IDWenn es mehr als eine Box gibt: der kurze, eindeutige Name dieser BoxWird vom Container-Hostnamen abgeleitet – bei zwei Boxen verdrängen sie sich gegenseitig. Vor dem Anschließen der zweiten Box festlegen
sudo vi /etc/kopens/platform.node.env
# PP_MASTER_IP=192.168.10.20

cd /opt/kopens/plantpulse-platform-docker/bin
./restart-datalake.sh # 데이터레이크만 재생성 + 준비 대기 + 의존 앱 판정
Wenn die Werbeadresse 127.0.0.1 ist, verweigert das Rendering (Exit 8)

Wenn die Adresse, die der Server dem Client gibt («Verbinde dich wieder hierher» – Kafka advertised.listeners, Aster TSDB broadcast_rpc_address, Temporal broadcastAddress), eine Loopback-Adresse ist, funktioniert der Server an Ort und Stelle einwandfrei, aber alle anderen Container laufen auf sich selbst zurück. Es sieht so aus, als wären alle Portprüfungen „UP“, aber kein Client kann sich verbinden. Die Fehlermeldung nennt die zu korrigierenden Namen – das sind PP_HOST_IP · PP_MASTER_IP · PP_KAFKA_ADVERTISED_HOST in der Knotendatei.

3. Gemeinsame, nicht geheime Werte aller Knoten – Sidecar​

Das Sidecar /etc/kopens/plantpulse-platform.env ist nicht nur für Geheimnisse gedacht. Nicht geheime, gemeinsame Werte können Sie auch in einer Zeile VAR=값 eintragen; bin/env.sh liest sie und übergibt sie an Compose. Welche Variablen verfügbar sind, steht vollständig mit Kommentaren in compose/platform.env.example – wählen Sie dort die Zeilen aus und übertragen Sie sie.

Häufig verwendete:

VariableStandardwertBedeutung
PP_LANGenBei koreanischem Betrieb ko
PP_TZAsia/SeoulZeitreihen werden in dieser Zeitzonen-Epoche gespeichert, daher für den koreanischen Betrieb beibehalten
PP_BACKUP_SCHEDULE_ENABLEDtrueBei false protokollieren die fünf Backup-Timer nur noch „skipped“ und enden
PP_DATALAKE_ADMIN_LOGS_ENABLEDtrueBei false wird nur der Protokollbildschirm (Endpunkt) der Konsole heruntergefahren
PP_KEYSPACE · PP_DB_NAME · PP_TOPIC_PREFIXppVom Datensee „erstellte“ und von der App „gelesene“ Bezeichner. Nach der Installation nicht mehr ändern
sudo vi /etc/kopens/plantpulse-platform.env
# PP_LANG=ko

cd /opt/kopens/plantpulse-platform-docker/bin
./restart.sh # 언어 · 타임존은 앱에도 닿으므로 전체 재시작
Die beiden Kopfzeilen des Sidecars nicht anfassen

# generated: und # last rotation: werden vom Tool verwaltet. Die übrigen Zeilen können VAR=값 sein. Auch alte export VAR=값-Zeilen werden gelesen, aber beim nächsten Update wieder im neuen Format geschrieben.

4. Container-Speicher​

Das Speicherlimit des Datensee-Containers ist DOCKER_DATALAKE_MEMORY. Standard ist 96G, und das ist das Minimum — 64G ist keine unterstützte Größe. Es wird auf 90% des Host-RAMs gekappt; ein Host mit weniger als 107G kann daher keine 96G vergeben und liegt unter der Spezifikation (Systemanforderungen). Zum Erhöhen tragen Sie den Wert in die Knotendatei ein.

sudo vi /etc/kopens/platform.node.env
# DOCKER_DATALAKE_MEMORY=128g

cd /opt/kopens/plantpulse-platform-docker/bin
./restart-datalake.sh
Zu klein vergeben führt zum Zustand „Up, aber tot“

PID 1 im Container ist systemd. Daher wird nur der Java-Prozess per cgroup OOM-killed, während docker ps weiterhin Up anzeigt. Die Kill-Protokolle stehen nur unter dmesg des Hosts. Am 2026-09-04 ist das tatsächlich bei einem Limit von 64g passiert (gemessener Peak 63.9G); der Standardwert wurde daraufhin auf 80G erhöht. Am 2026-10-04 wurde er erneut auf 96G erhöht. Am 2026-10-29 erreichte der Container das 96G-Limit, und Kafka fiel mit einem Speicherzuweisungsfehler (ENOMEM) aus — senken Sie den Wert nicht unter 96G.

dmesg -T | grep -i "memory cgroup"
docker inspect plantpulse-datalake --format '{{.State.OOMKilled}}'

5. «Zeilen» der Engine-Konfiguration – Vorlagen​

Wenn Sie Parameter zu postgresql.conf hinzufügen oder die Aufbewahrungsdauer von Kafka ändern – also Zeilen statt Werte ändern –, bearbeiten Sie die Vorlagen auf dem Host. Welche Vorlage zu welcher Datei wird, finden Sie in der Vorlagenliste.

# 1. 호스트에서 템플릿 편집
sudo vi /etc/kopens/conf/postgresql.conf.template

# 2-a. 데이터레이크 전체 재시작 — 기동 때 자동 렌더
cd /opt/kopens/plantpulse-platform-docker/bin
./restart-datalake.sh

# 2-b. 또는 서비스 하나만 — 컨테이너 안에서
docker exec plantpulse-datalake pd config diff # 무엇이 바뀔지 먼저 본다
docker exec plantpulse-datalake pd config render # 생성물을 실제로 쓴다
docker exec plantpulse-datalake pd restart storage # 그 서비스만 재기동

# 3. 확인
docker exec plantpulse-datalake pd config diff # 0 = 런타임이 렌더 결과와 같다

Nur pd config render einzugeben und nicht neu zu starten, ist keine „Übernahme“. Es wurde nur die Datei geändert. Erst pd restart <서비스> gehört zum vollständigen Ablauf.

Wenn das Image neue Standardwerte mitbringt – 3-Wege-Seeding​

/etc/kopens/conf ist eine Host-Datei und wird nicht automatisch geändert, selbst wenn das Image neue Standardwerte mitbringt. Deshalb vergleicht das Start-Tool bei jeder Bereitstellung die Dateien auf Dateiebene: die Standardwerte dieses Images, die Standardwerte der letzten Bereitstellung (/etc/kopens/conf.dist) und die Host-Datei.

FallWas das Tool tut
Vom Betreiber nicht geänderte Datei, Standardwerte geändertDurch neue Standardwerte ersetzen
Vom Betreiber geänderte Datei, Standardwerte geändertBetreiberdatei beibehalten + [WARN] operator edit kept, but THE IMAGE DEFAULT CHANGED + Diff der Standardwertänderungen ausgeben
Vom Betreiber geänderte Datei, Standardwerte unverändertBeibehalten (still)
Neues Vorlagen-ImageInstallieren
Image entfernt VorlageHost-Datei behalten und warnen

Wenn Sie in der Ausgabe von restart.sh · update.sh die Zeile [WARN] operator edit kept sehen, müssen Sie Ihre Bearbeitung und die neuen Standardwerte manuell zusammenführen. Die Position der neuen Standardwertdatei wird in derselben Zeile angegeben.

Wo Ihre Vorlage von den Image-Standardwerten abweicht, sehen Sie im Container.

docker exec plantpulse-datalake pd config diff --templates
# same — 같다
# differs — 호스트 사본이 다르다 (렌더는 이쪽을 쓴다)
# local — 운영자가 추가한 파일
# missing — 이미지엔 있는데 호스트엔 없다

Um das Host-Verzeichnis vollständig auf die Image-Standardwerte zurückzusetzen (das Tool legt ein Backup unter /etc/kopens/conf.backup/<시각>/ an):

cd /opt/kopens/plantpulse-platform-docker/bin
TEMPLATE_FORCE_SEED=1 ./restart-datalake.sh

6. Backup-Zeitplan​

Keine Datei wird geändert. Im Container schreiben pd backup schedule set in die Tabelle backup_schedule der datalake-Datenbank einen Quartz-Cron. Der Scheduler in plantpulse-datalake-admin-api liest und führt diese Tabelle aus. Der «Schedule editor» auf dem Backup-Bildschirm der Verwaltungskonsole ruft denselben Befehl auf.

docker exec plantpulse-datalake pd backup schedule # 지금 일정
docker exec plantpulse-datalake pd backup schedule set --job postgres-diff --calendar "*-*-* 02:45:00"
docker exec plantpulse-datalake pd backup schedule set --job purge --enabled false
docker exec plantpulse-datalake pd backup schedule reset --job postgres-diff # 기본값으로

Es gibt fünf Jobnamen – postgres-diff · postgres-full · cassandra-diff · cassandra-full · purge. Die Kalender folgen der systemd-Syntax (*-*-* 02:45:00 täglich, Sun *-*-* 01:00:00 Sonntag). Fehlerhafte Ausdrücke werden abgelehnt, ohne etwas zu schreiben. Die Auswahl bleibt in /data1/pp-data/backup/schedule.json erhalten und übersteht auch das Neuerstellen des Containers → Backup · Wiederherstellung

7. Öffentliche Ports​

Die auf dem Host geöffneten Ports bestimmt der Dienst ports: in plantpulse-datalake von compose/docker-compose.yml. Achten Sie beim Ändern auf zwei Dinge.

  • Den Port, auf dem der Container lauscht, legen defaults.env (PP_*_PORT) und die Vorlage fest. Nur den veröffentlichten Port zu ändern führt zu Diskrepanzen wie „Container bindet auf 6379, Compose veröffentlicht 6399“. Beides muss zusammenpassen.
  • 1883 / 1884 (MQTT) werden nicht vom Datensee, sondern vom Proxy-Container veröffentlicht. Wenn Sie dem Datensee denselben Port hinzufügen, schlägt der Start wegen eines Bind-Konflikts fehl.

Die vollständige Portliste und die Firewall finden Sie unter Ports und Dienste verwalten.

Wenn die Übernahme nicht funktioniert – der Reihe nach prüfen​

PrüfungInhalt
① Welche Datei gewinnt?Die Spalte # source: in bin/env.sh --print. Knotendatei > Sidecar > Shell > Standardwerte
② Ist es ein Name, der den Container erreicht?Namen, die Compose nicht schreibt, kommen nicht an → Variablen-Referenz
③ Wurde der Container neu erstellt?Werte aus Sidecar und Knotendatei werden nur bei der Container-Neuerstellung übernommen. docker restart reicht nicht – verwenden Sie restart-datalake.sh
④ Wurde gerendert?Ist pd config diff gleich 0? Wenn 1, dann pd config render und neu starten
⑤ Ist es ein Passwort?Durch Dateibearbeitung nicht änderbar → passwd.sh
⑥ Ist die Vorlage veraltet?pd config diff --templates mit differs · missing → siehe oben 3-Wege-Seeding

Was Sie nicht tun sollten​

  • Bearbeiten Sie nicht PP_HOME/…/conf/* im Container. Beim nächsten Start verschwindet es, und bis dahin weiß niemand, welche Version die echte ist.
  • Versuchen Sie nicht, Wertänderungen mit docker restart plantpulse-datalake umzusetzen. Umgebungsvariablen werden beim Neuerstellen des Containers festgelegt. restart-datalake.sh erledigt das.
  • Verwenden Sie FORCE=1 pd start nicht. Es startet einen weiteren Prozess auf demselben Port über den laufenden.
  • Ändern Sie PP_KEYSPACE · PP_DB_NAME · PP_TOPIC_PREFIX nicht nach der Installation. Es entsteht ein neuer, leerer Speicher mit neuem Namen, und die alten Daten bleiben unter dem alten Namen zurück.

Verwandte Dokumente​