メインコンテンツまでスキップ

pd — データレイク CLI

pd(PlantPulse DataLake)は データレイク コンテナ内で8個のサービスを起動・停止・診断し、設定をレンダリングし、バックアップを取得する 単一エントリーポイント コマンドです。管理コンソールが表示するほぼすべてのものがこのコマンドの --json 出力です。

項目
モジュールplantpulse-datalake-cli
場所コンテナ内 /opt/kopens/plantpulse-platform/plantpulse-datalake-cli/bin/pd (PATH に含まれる)
ホスト上にはありません — 必ず docker exec plantpulse-datalake pd …
docker exec plantpulse-datalake pd status # 하나만 칠 때
/opt/kopens/plantpulse-platform-docker/bin/shell.sh # 여러 개 칠 때 — 셸을 열고 pd … 만 친다
オペレータの最初のエントリーポイントはここではありません

プラットフォーム全体の起動・停止・再起動は ホストの /opt/kopens/plantpulse-platform-docker/bin/ で行います — up.sh · down.sh · restart.sh · restart-datalake.sh · status.sh です。pd はそのレイヤー下で、コンテナ のサービスを扱うツールです。コンテナ自体も起動時に pd start、停止時に pd stop を実行するため、オペレータが pd start を手で実行することはめったにありません。 ほとんどが「ステータス確認」と「単一サービスの再起動」です。

30秒サマリー

セーフティレベル:読取 = 何も変更しない · 変更 = 状態を変更する · 破壊的 = データまたはプロセスを削除する。

動詞説明レベル
pd status [서비스] [--wait]ポートテーブル。すべての行が RUNNING の場合のみ exit 0読取
pd doctor環境・シークレット・テンプレート・ランタイム ツリーを検査 (PASS / FAIL / N/A)読取
pd envこのノードのディレクトリ・イメージ アイデンティティ — 宣言のみ、測定なし読取
pd logs [--list] [--lines N] [서비스…]サービス ログを追跡読取
pd storageボリューム・WAL・レプリケーション スロット・ストレージ サイズ・Kafka リテンション読取
pd retentionテーブル TTL・トピック リテンション・コールド ティア・アーカイブ ジョブ読取
pd flowKafka コンシューマ グループ ラグ読取
pd downtime予期しないダウン期間 — 再起動するだけ読取
pd config list · diff · diff --templatesテンプレート → パス テーブル · ランタイム vs レンダ · ホスト テンプレート vs イメージ デフォルト読取
pd node status · info · cql · psqlCassandra / PostgreSQL クエリとシェル読取
pd backup list · schedule · status物理バックアップ セット・タイマー・実行中のもの読取
pd backup restore … --dry-runリストア計画のみ読取
pd start [서비스] · stop · restart [--clean]順序起動・逆順停止(停止証明)・両方変更
pd config render設定成果物を実際に書き込む変更
pd secret rotate VAR=값認証情報をローテーション — ホストの passwd.sh が呼び出します。 直接実行しないでください変更
pd backup · pd backup run --engine E --type full|diff論理ダンプ・物理バックアップ 1回変更
pd backup schedule set|resetバックアップ タイマー スケジュール変更
pd node add · repair · compact · flush · drainCassandra メンテナンス変更
pd clean停止したモジュールのログ・一時ファイルを削除破壊的(ログ)
pd kill [--dry-run]PP_HOME の下のすべてのプロセスに SIGKILL破壊的
pd recover [파일]pp DB を DROP して論理ダンプからリストア破壊的
pd backup restore … --yesデータ ディレクトリを物理バックアップにロールバック破壊的
pd node cleanup · remove <host-id>スナップショット削除・リングからノード削除破壊的

オプション セットはすべての動詞で同じ意味を持ちます。

オプション意味
--json人間可読テーブルの代わりに 1つの JSON ドキュメント。コンソール読み取り形式。受け入れる動詞が決まっており、他の動詞に付与すると exit 2 で 拒否
--show-secretsconfig diff のみ。パスワードを *** でマスクしない。--json と併用不可
PD_DEBUG=1DEBUG ログ。PD_DEBUG=1 pd start のように前に付加

サービスと起動順序

8個のサービスは 定められた順序で起動します。ソースは services/order.txt 1つです。pd start は上から下へ、pd stop は逆順です。

順序サービスMASTERWORKER内部コンポーネントpd status 行(ポート)
1storagevalkey → postgres → cassandra → minio(MASTER のみ)6379 · 5432 · 9042 · 9000
2analyticsspark-master → hive → gravitino → kyuubi (WORKER は spark-worker · kyuubi)7077 · 4440 · 9083 · 19001 · 10000
3messagingkafka · mqtt(HiveMQ)9092 · 1883
4timeseriesengine(TSE) · dashboard(Grafana)7800 · 3000
5cepTomcat7400
6workflowtemporal → kestra7233 · 8233 · 8380
7data-gatewayTomcat5500
8admin-api管理コンソール バックエンド4949
  • 各サービス起動後、ヘルスチェックが UP を返すまで待機してから次に進みます(上限:storage 1800秒、analytics 600秒、その他 300秒)。
  • storageanalyticsゲートキーパーです。起動しなければ次を試さず exit 5。残りは警告して継続(最終的に exit 6)。
  • timeseries は 2026-09-05 から MASTER 専用です。plantpulse-sql は 2026-09-07 に廃止され、リストから削除されました。

ライフサイクル

pd status # 전체 표 — 마지막 줄 "0 STOPPED" 면 정상
pd status storage # 서비스 하나의 헬스체크
pd status storage --wait # UP 이 될 때까지 대기

pd start cep # 죽은 서비스 하나 다시 띄우기
pd stop cep # 서비스 하나 내리기 — «멈췄다» 를 증명한다 (30초 + SIGTERM 15초 + SIGKILL 10초)
pd restart cep # stop → (정지가 증명되면) 5초 → start
pd restart cep --clean # 사이에 pd clean
pd restart # 전부 — 몇 분 걸린다. storage 가 먼저 돌아온다

pd status の状態は 4つです。

状態意味
RUNNINGポートが開いている
STOPPEDポートが閉じている。起動直後の数十秒はウィンドウなので、1分後に再確認
UNKNOWN測定不可 — ポート測定ツールがない場合。停止したわけではない
DISABLEDPD_OPTIONS で停止した。終了コードは変更されない
pd stop が exit 7 の場合、直ちに pd start しないでください

STILL RUNNING は停止の証明に失敗したことを意味します。残存プロセスの上に起動すると、ポート競合・データ破損が発生します。pd kill --dry-run で何が残っているか確認した後、pd kill · pd status で空いていることを確認してから pd startFORCE=1 pd start は使用しないでください。

コンテナ自体の Docker HEALTHCHECK は pd status を呼び出しません(遅く、ときどき変動するため)。代わりに postgres · cassandra が 実際のクエリに応答するかとすべてのポートが開いているかを確認します。したがって「docker ps は healthy なのに pd status は STOPPED」は起動ウィンドウまたは1回の失敗で、「unhealthy なのに pd status がすべて RUNNING」はポートは開いているがクエリに応答できない状態です(pd logs storage)。

診断

pd doctor # 여섯 절 검사. 마지막 줄 FAIL 0 이면 된다
pd env # 디렉터리 · 이미지 정체 (0.25초)
pd logs --list # 따라갈 파일 목록만
pd logs --lines 50 cep # cep 만, 마지막 50줄부터
pd storage # 볼륨 90% 이상이면 FAIL
pd retention # 왜 안 줄어드나 — TTL · 토픽 보존 · 콜드 티어
pd flow # 데이터가 안 들어온다 — 컨슈머 lag
pd downtime # 자꾸 죽는 것 같다 — 계획 밖 정지 기록

pd doctor の6セクション:[1] inputs(シークレット・ノード ファイル・イメージ)·[2] tools·[3] config templates(すべてレンダされるか)·[4] runtime tree·[5] TLS material·[6] core portsN/A は「ここでは測定できない」で、括弧内に理由があります。コンテナ内でサイドカー ファイルがないことは正常です — 値は環境変数から来ます。

pd flowNA は「遅れている」ではなく**「読み取ったことがない」という意味です。MEMB 列が 0 ならコンシューマが起動していない、0 より大きくてトピックが空ならば正常(読むものがない)、0 より大きくてトピックにデータがあれば本当に疑わしい信号**です。

設定

pd config list # 이 모드의 템플릿 → 경로 표
pd config diff # 런타임 파일 vs 지금 렌더하면 나올 것 (0 같음 / 1 다름 / 3 시크릿 없음 / 4 렌더 실패)
pd config diff --templates # 호스트 템플릿 vs 이미지 기본값 (same / differs / local / missing)
pd config render # 실제로 쓴다 — 그 뒤 pd restart <서비스> 까지가 한 세트

値を変更する手順と「どこを変更すべきか」は 設定を変更する方法 にあります。コンテナ内の生成物を直接編集しないでください — 次の pd start で消えます。

Cassandra · PostgreSQL ノード操作

pd node status # nodetool status — UN 이 정상, DN 이면 죽은 노드
pd node status --json # + PostgreSQL 복제 · Valkey 복제 · 워커 명부
pd node info # 노드 상세
pd node cql # cqlsh (cassandra 계정)
pd node psql # psql (postgres OS 사용자)
pd node errors # cassandra debug.log 의 최근 WARN/ERROR
pd node topic # kafka 토픽 "event" describe
pd node tpstats | compactionstats | proxyhistograms | table-stats [ks] | table-histograms <ks> <tbl> | sstable-size <ks> <tbl> | disk
変更動詞レベル説明
pd node add変更ライブ ノード数に合わせてキースペース RF を上げ(最大 3)、repair。ワーカー接続後、マスターで 1回
pd node repair · repair-table <ks> <tbl>変更(重い)ノード間データ不一致を修復
pd node flush · drain変更メモリの書き込みをディスクに。drain は以降の書き込みを拒否するため、停止直前のみ
pd node compact [ks] [tbl]変更(重い)SSTable マージ
pd node cleanup破壊的すべてのスナップショット削除 + このノードがもう所有しないデータ削除
pd node remove <host-id>破壊的停止ノードをリングから削除。ライブ ノードで実行しないこと
pd node upgrade · init-cms · train-zstd · cache-clear変更インストール手順・アップグレード・OS ページ キャッシュ クリア

バックアップ・リストア

pd backup # PostgreSQL 논리 덤프 → /data1/pp-data/postgres/dump/
pd backup list | schedule | status
pd backup run --engine postgres --type diff
pd backup restore --engine postgres --set <세트> --dry-run # 계획 먼저
pd recover [덤프파일] # pp DB 하나를 논리 덤프로 되돌림 (파괴적)

手順は バックアップ・リストア にあります。

終了コード

コード意味
0成功。status はすべて RUNNING、doctor は FAIL 0、config diff は差異なし
1一般的な失敗・「異なる」・「問題あり」
2使用法エラー — 不明な動詞・サービス・オプション、--json 拒否、PP_HOME 未指定
3必須シークレット不足 — メッセージにすべての名前。backup run · restore では「別のバックアップが実行中」
4レンダ失敗 — 置き換えられていない ${PP_*}、すべての名前がリスト表示
5ゲートキーパー サービス(storage · analytics)が起動しなかったため起動中止
6起動は完了したが、一部サービスが準備完了していない
7停止の証明に失敗(STILL RUNNING)
8アドバタイズ アドレスがループバック(127.0.0.1) — レンダ拒否

ログ形式とジャーナル

pd が出力するすべてのラインは 1つの形式です — [시각] [DATALAKE-CLI] [레벨] [동사] 메시지。INFO は stdout へ、それ以外は stderr へ出力されます。

pd start · stop · restart · backup は JSON を 1行ずつイベント ジャーナル plantpulse-datalake-admin-api/logs/pd-events.jsonl に記録し、コンソールがそれをイベント タイムラインとして表示します。コンソールから実行されたコマンドは actoroperator:<name> として記録します。

旧名前マッピング テーブル

plantpulse-startup のスクリプト コレクションは 2026-09-03 に pd に統合され、旧ディレクトリはイメージに存在しません。

旧スクリプト現在
start-daemon.sh · start.shpd start
stop.shpd stop
restart.sh · restart-<module>.shpd restart [서비스]
restart-monitor.shpd restart admin-api
status.shpd status
kill.sh · clean.shpd kill · pd clean
configure.shpd config render
log-viewer.shpd logs
node-<동사>.sh · node-added.sh · node-error.shpd node <동사> · pd node add · pd node errors
secrets/rotate.shpd secret rotate (ホストの passwd.sh が呼び出す)
env.sh · env-reset.sh · env-validate.sh廃止されました — 値はホストのサイドカー・ノード ファイルと compose により調整されます
prepare-ssl.shplantpulse-certs コンテナが処理します → セキュリティ設定
PP_OPTIONSPD_OPTIONS (2026-09-07)。旧名は読み取られません
アプリ再起動スクリプトをコンテナ内で探さないでください

Server · Batch · Warehouse · OPC-UA · AASX はそれぞれ独自のコンテナで処理されます。データレイク コンテナにはそれらのモジュールはありません。アプリはホストから再起動してください。

cd /opt/kopens/plantpulse-platform-docker/bin
./restart-server.sh # 또는 restart-batch.sh · restart-warehouse.sh · restart-one.sh <서비스>

関連ドキュメント