본문으로 건너뛰기

경로 지도 — 무엇이 어디에 있나

데이터레이크의 파일은 호스트컨테이너 안 두 세계에 나뉘어 있습니다. 어느 쪽 경로인지 헷갈리는 것이 사고의 절반입니다. 이 페이지는 «그 파일이 어디 있지» 에 답하는 한 장짜리 지도입니다.

외울 것은 세 줄입니다
  1. 고치는 파일은 호스트의 /etc/kopens/ 아래에 있습니다.
  2. 컨테이너 안 /opt/kopens/plantpulse-platform/…/conf/ 는 생성물입니다. 고쳐도 다음 기동에 사라집니다.
  3. 데이터 · 백업 · 임시 파일은 Docker 볼륨이라 컨테이너를 다시 만들어도 남습니다.

호스트

운영자가 고치는 파일 — /etc/kopens/

경로무엇고치나박스 간 복사
/etc/kopens/plantpulse-platform.env시크릿 사이드카 — 서비스 비밀번호 · API 키 · TLS 비밀번호. 권한 0600비밀번호는 passwd.sh 로. 비밀 아닌 값은 VAR=값 줄을 직접그대로 복사
/etc/kopens/platform.node.env노드 파일 — 이 박스에만 참인 값(PP_MASTER_IP · PP_KAFKA_ADVERTISED_HOST · DOCKER_PP_EXTERNAL_IP · PP_NODE_ID)직접 편집절대 복사 금지
/etc/kopens/conf/설정 템플릿 33개(*.template). 컨테이너의 plantpulse-datalake-cli/config/templates 로 바인드 마운트직접 편집 → 템플릿 고치기필요하면
/etc/kopens/conf.dist/지난 배포 이미지가 실은 템플릿 기본값(3-way 비교 기준선). 컨테이너에 읽기 전용 마운트손대지 않는다 — 배포마다 도구가 갱신
/etc/kopens/conf.backup/<시각>/템플릿 재시드 때 도구가 남긴 백업참고만
/etc/kopens/ca/박스 간 공유 CA(CA.crt · CA.key)두 번째 박스로 옮길 때만첫 박스 → 다음 박스
/etc/kopens/workers.roster클러스터 워커 명부 <id> <ip>worker-add.sh 계열 도구만
/etc/kopens/rotation.journal비밀번호 회전 진행 기록(0600). 실패한 회전을 이어서 하는 근거손대지 않는다

운영 스크립트 — /opt/kopens/plantpulse-platform-docker/

경로무엇
bin/운영 동사 전부 — up.sh down.sh restart.sh restart-datalake.sh status.sh logs.sh shell.sh passwd.sh rotate-secret.sh update.sh backup.sh doctor.sh ops-check.sh
bin/env.sh호스트 쪽 기본값과 호스트에서 계산되는 값(코어 · 메모리 · 디스크). bin/env.sh --print 가 «지금 이 박스의 유효 값과 출처» 를 찍습니다
compose/docker-compose.yml컨테이너 정의. 데이터레이크가 받는 환경변수 · 공개 포트 · 볼륨 · 메모리 한계
compose/platform.env.example운영자가 여는 그 파일 하나 — 쓸 수 있는 변수 전부가 주석과 함께. 여기서 줄을 골라 사이드카나 노드 파일에 옮겨 적습니다(생성물이라 직접 고치지 않습니다)
compose/platform.node.env.example노드 파일의 틀
bin/env.sh 를 직접 고치지 마세요

옛 안내 중 «env.shexport 를 추가하라» 는 것이 있습니다. 동작은 하지만 설치 트리 안이라 업데이트 · 재설치에 취약합니다. 같은 값을 사이드카나 노드 파일VAR=값 으로 적으면 설치 트리 밖이라 살아남고, 우선순위도 더 높습니다 → 값이 결정되는 순서

Docker 볼륨

호스트의 named volume 입니다. remove.sh 로 컨테이너를 지워도 볼륨은 남습니다.

볼륨컨테이너 안 경로무엇
pp-data/data1/pp-data (PP_DATA_DIR)모든 데이터 — Cassandra · PostgreSQL · Valkey · MinIO · Kafka · Spark 이벤트 로그 · 논리 덤프 · 계획 밖 정지 기록
pp-temp/data1/pp-temp (PP_TEMP_DIR)임시 파일. pd clean 이 비웁니다. 여기에 보관용 파일을 두지 마세요
pp-backup/data1/pp-backup (PP_BACKUP_DIR)물리 백업 저장소(pgbackrest/ · medusa/) · 백업 이력 · 콘솔 설정 리비전
pp-security/var/securityTLS 자재. plantpulse-certs 컨테이너가 만들고 데이터레이크와 앱이 읽습니다

컨테이너 안

컨테이너에 들어가는 방법은 둘입니다. 명령 하나만 칠 때는 docker exec, 여러 개 칠 때는 셸을 엽니다.

docker exec plantpulse-datalake pd status # 하나만
/opt/kopens/plantpulse-platform-docker/bin/shell.sh # 셸 열기 (= docker exec -it … bash)

런타임 트리 — PP_HOME=/opt/kopens/plantpulse-platform

경로무엇
plantpulse-datalake-cli/pd 자신. bin/pd · cmd/ · lib/ · services/order.txt · config/defaults.env · config/render.map
plantpulse-datalake-cli/config/templates/호스트 /etc/kopens/conf마운트된 자리. 컨테이너 안에서 보이는 것은 호스트 사본입니다
plantpulse-datalake-cli/config/templates.dist/호스트 /etc/kopens/conf.dist 가 읽기 전용으로 마운트된 자리
plantpulse-storage/cache/valkey · db/postgres · db/cassandra · object/minio저장소 넷. 각각 bin/ conf/ logs/
plantpulse-analytics/spark · hive · gravitino · kyuubi분석 넷
plantpulse-messaging/kafka · mqtt브로커 둘
plantpulse-timeseries/engine · dashboard시계열 엔진과 Grafana
plantpulse-cep/ · plantpulse-data-gateway/Tomcat 위의 웹 모듈. 설정은 config/, 로그는 server/logs/
plantpulse-workflow/temporal · kestra워크플로우 엔진 둘
plantpulse-datalake-admin-api/관리 콘솔 백엔드. webapp/ 이 화면, logs/pd-events.jsonl 이 이벤트 저널
plantpulse-backup/물리 백업 툴킷(bin/backup.sh)과 systemd 타이머

pd env 가 이 목록을 이 노드의 실제 값으로 찍어 줍니다. 경로를 외우지 말고 이 명령을 쓰세요.

docker exec plantpulse-datalake pd env

생성물 — 고치면 사라지는 것

pd start 가 매번 템플릿을 렌더해 아래 위치에 씁니다. 첫 줄이 # GENERATED by pd from <템플릿> - edit /etc/kopens/plantpulse-platform.env instead 입니다.

생성물원본 템플릿(호스트 /etc/kopens/conf/)
plantpulse-storage/db/postgres/conf/postgresql.conf · pg_hba.confpostgresql.conf.template · pg_hba.conf.template
plantpulse-storage/db/cassandra/conf/cassandra.yaml · jvm-server.optionscassandra.yaml.template · jvm-server.options.template
plantpulse-storage/cache/valkey/conf/valkey.confvalkey.conf.template
plantpulse-messaging/kafka/config/kafka.properties · jaas.confkafka.properties.template · kafka-jaas.conf.template
plantpulse-messaging/mqtt/conf/config.xml · auth.propertieshivemq.xml.template · plantpulse-mq-auth.properties.template
plantpulse-cep/config/plantpulse-cep.propertiesplantpulse-cep.properties.template
plantpulse-data-gateway/config/plantpulse-jdbc.properties · plantpulse-data-gateway.propertiesplantpulse-jdbc.properties.template · plantpulse-data-gateway.properties.template

전체 대응표는 설정 파일은 어디 있나 — 템플릿 목록에 있습니다.

로그

무엇어디보는 법
부팅 로그 — pd start 가 서비스 런처 출력을 이어 붙인 것/var/log/plantpulse-datalake.logpd logs (BOOT 태그)
컨테이너 관점의 부팅 사본/var/log/plantpulse-boot.logtail
서비스 로그 40여 개각 모듈의 logs/ — 목록은 pd logs --listpd logs [서비스]
위 전부를 합친 컨테이너 로그Docker호스트에서 bin/logs.sh plantpulse-datalake
이벤트 저널 — 누가 언제 start/stop/backup 했나plantpulse-datalake-admin-api/logs/pd-events.jsonl콘솔 이벤트 화면, tail
계획 밖 정지 기록/data1/pp-data/pd/downtime/pd downtime

그 밖의 위치

무엇어디
TLS 자재/var/security/plantpulse/ (.certs_generated 가 생성 기록)
PostgreSQL 논리 덤프/data1/pp-data/postgres/dump/
물리 백업 저장소 · 이력 · 락/data1/pp-backup/ (pgbackrest/ · medusa/ · history.jsonl · pd-backup.lock)
백업 도구 설정 — 비밀번호가 들어 있으니 붙여 넣지 마세요/etc/pgbackrest/pgbackrest.conf · /etc/medusa/medusa.ini (기동 때 pd 가 씁니다)
백업 스케줄 오버라이드/data1/pp-data/backup/schedule.json
이미지 정체/etc/plantpulse-image.env · /etc/plantpulse-modules.json

관련 문서