Skip to main content

Frequently Asked Questions (FAQ)

Search by symptom or question. Answers are brief; detailed procedures are linked.

Configuration

I edited the sidecar but the changes don't take effect

The container has no sidecar file. Values enter the container as environment variables when compose rebuilds it. docker restart just restarts with the same environment variables.

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

If it still doesn't work: ① check with bin/env.sh --print which file is winning ② verify that compose passes that name to the data lake → Changes not applied

I edited a config file inside the container and it reverted

That's correct behavior. Everything under PP_HOME below conf/ is generated, and pd start rewrites it from the template each time. Edit the host's /etc/kopens/conf/<파일>.template instead → Editing the template

export PP_PG_PASSWORD=… bin/up.sh is silently ignored

If the sidecar already has that name, the sidecar wins. The only way to change values on an installed node is bin/passwd.shChanging passwords · API keys

I pushed a new image but the new config defaults didn't arrive

/etc/kopens/conf is a host file and doesn't change automatically. The deployment tool performs a 3-way merge on each deployment, keeping files edited by operators and reporting changes via [WARN] operator edit kept, but THE IMAGE DEFAULT CHANGED. You must merge that file manually.

docker exec plantpulse-datalake pd config diff --templates # differs / missing 인 파일
TEMPLATE_FORCE_SEED=1 ./restart-datalake.sh # 통째로 이미지 기본값으로 (백업은 도구가 남긴다)

Other boxes (Edge · AI · Worker) can't connect to this data lake

Check that you entered the LAN address of this host in the node file. If left blank, compose uses an address inside its network (10.99.0.100) and integration works only inside the same box.

sudo vi /etc/kopens/platform.node.env # PP_MASTER_IP=<이 호스트의 LAN IP>
./restart-datalake.sh

If only Kafka won't connect, it's an advertised address issue → Node file

Render rejects with exit 8

The advertised address is 127.0.0.1. Put the actual address in the node file's PP_HOST_IP · PP_MASTER_IP · PP_KAFKA_ADVERTISED_HOST. The error message names which field to fix.

Render hangs with exit 3 or exit 4

  • exit 3 — a required secret is empty. The message lists the name. Put it in the sidecar and regenerate.
  • exit 4 — the template's ${PP_*} has no value. The message shows it as 이름@템플릿:줄. Either provide the value in the node file or edit the template.

Can I turn off one component (e.g., Hive)?

pd has a PD_OPTIONS='{"enable-hive": false}' switch, but the current compose stack does not pass this variable to the container. Even if you set it in the sidecar or node file, it won't reach the container, so nothing shuts down. This is tracked as requiring a product-side fix. The old name PP_OPTIONS is not read anywhere.

How do I change the language to Korean?

Add PP_LANG=ko to the sidecar and restart.sh (full restart—this value reaches the app too). The management console is separate; append ?lang=ko to its URL.

Passwords · Accounts

I changed the password and now the platform won't start

Either the server account or the sidecar changed, but not both. Check which value is valid first.

docker exec plantpulse-datalake bash -c 'PGPASSWORD="<구값>" psql -U plantpulse -h 127.0.0.1 -c "SELECT 1;"'
docker exec plantpulse-datalake bash -c 'PGPASSWORD="<신값>" psql -U plantpulse -h 127.0.0.1 -c "SELECT 1;"'

If the old value connects, the server side didn't change. If the new value connects, just update the sidecar. Going forward, use passwd.shChanging passwords · API keys

passwd.sh rejects with "variable not in the registry"

That key is not a rotation target. Only the 11 listed in --list are. The rest require manual procedure. If it's a typo, you'll get suggestions for similar keys.

Rotation failed partway through

Run the same command again exactly. It knows from the journal how far it got and continues from there. There is no rollback. If you see probe=NEITHER or verify 실패, someone must access that component directly to check its state.

I have worker nodes and passwd.sh is rejected

That's intended. If you rotate only the master, workers keep the old value and the cluster is half-broken. Use the manual procedure to change them, then repeat the sidecar update + restart for each worker.

The management console login screen says "not configured"

PP_DATALAKE_ADMIN_PASSWORD is empty. This is not a failure.

bin/passwd.sh PP_DATALAKE_ADMIN_PASSWORD # --list 에 이 키가 있으면
# 없으면 (2026-09-05 이전 패키지) 사이드카에 줄을 적고 ./restart-datalake.sh

Web UI login account

I can't log into the Data Gateway · CEP console

PP_DATA_GATEWAY_WEB_PASSWORD · PP_CEP_WEB_PASSWORD have no defaults, so if they're empty, only that console closes. Add them to the sidecar and restart-datalake.shQuery consoles

I changed the Grafana password and after rebuilding the container it reverted

Known issue. Grafana's data directory is in the image tree, not a volume → Grafana

The SQL tools card disappeared

plantpulse-sql was deprecated on 2026-09-07. SQL now runs in the Data Gateway console (https://<server-ip>:5501/). The management console's tools screen has a Data Gateway card.

Startup · Status

pd status shows one STOPPED, but I just started it

This is the startup window. Kyuubi in analytics is the last to come up; spark-master takes about 54 seconds. Check again in 1 minute. If it persists, see pd logs --lines 100 <서비스>.

docker ps is Up but all services are dead

Suspect memory OOM. PID 1 is systemd, so only Java dies and the container stays alive.

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

Raising the memory limit

pd stop ended with STILL RUNNING (exit 7)

Don't pd start right away. Check what's left with pd kill --dry-run, then pd kill → verify it's empty with pd statuspd start.

pd start rejects with "already running"

It's already up. To start it again, begin with pd stop. Don't use FORCE=1, which tries to start another process on the same port while one is alive.

First boot takes over 10 minutes

First boot can take up to 500 seconds just for Cassandra schema creation on storage. That's why the container startup grace period is 900 seconds. Watch the progress with bin/logs.sh -f plantpulse-datalake.

The console shows "Another job is already running on this node"

This is a symptom of the admin-api image before 2026-09-04. Check IMAGE_BUILT_AT in pd env and if it's old, update.sh. Even in the new image, the "Run inspection" button only accepts one at a time, so try again in a moment.

Running pd on the host gives "command not found"

pd exists only inside the container. Enter it with docker exec plantpulse-datalake pd … or bin/shell.sh and run it there.

Data

Data isn't coming in

The MQTT → Kafka → consumer chain breaks somewhere; find where with pd flow.

docker exec plantpulse-datalake pd flow

A large LAG means the consumer (server · CEP · batch) is slow or stopped. NA means "never been read"—if MEMB is 0, the consumer isn't up; if it's greater than 0 but the topic is empty, that's normal. The management console's Topology screen shows the same thing graphically.

The disk is full / won't shrink

docker exec plantpulse-datalake pd storage # 얼마나 있나 — 볼륨 · WAL · 슬롯 · 스냅샷
docker exec plantpulse-datalake pd retention # 언제 사라지나 — TTL · 토픽 보존 · 콜드 티어
  • If Cassandra's snapshots is large, try pd node cleanup (snapshot deletion — destructive).
  • If you see slot.orphan, a replication slot from a deleted worker is holding WAL — check host ops-check.sh --reclaim.
  • If it's a stuck module's logs, pd clean.
  • pd retention's TTL none is not "no expiration" but "table has no default." Tables where TTL is stamped per row (ts_data_points) expire normally.
  • If cold_tier's last advance hasn't moved in over 48 hours, the archive job is stuck — this is often the real reason hot disk doesn't shrink.

Kafka is DOWN with "advertises 127.0.0.1"

The address in the node file is empty → Node file. The files broker.properties · server.properties inside the container are example files from the Kafka distribution—don't be surprised to see them. The broker reads only kafka.properties.

Time series data disappears after a few days

A time series data point lives for PP_TSE_DATAPOINT_TTL (default 365 days). Before 2026-09-05 this was a 31-day literal. The value is stamped at write time, so raising it won't resurrect rows already written → Variable reference

Backup

How do I know if backups are being taken?

docker exec plantpulse-datalake pd backup schedule # 잡 다섯의 일정 · 마지막 결과
docker exec plantpulse-datalake pd backup list # 세트 목록

The management console's Backup screen shows this → Backup · restore

How do I change the nightly backup time?

docker exec plantpulse-datalake pd backup schedule set --job postgres-diff --calendar "*-*-* 02:45:00"

It survives container rebuilds.

cassandra-full keeps showing fail (exit 120 (medusa))

Images before 2026-09-04 always failed daily because nobody used the Medusa config. Now on Cassandra startup pd rewrites it — check with pd restart storage then pd backup run --engine cassandra --type full.

Logs

Where do I see logs?

On the host, bin/logs.sh plantpulse-datalake (last 200 lines, follow with -f); inside the container, pd logs [서비스]. App container logs are not in pd logs; see them with logs.sh <서비스>Logs and health

I want to know who shut down the service and when

Event journal plantpulse-datalake-admin-api/logs/pd-events.jsonl, or the management console's Events screen. Commands run from the console are recorded in operator:<name>. Config changes made from the console appear in the Audit screen.

See also