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

ログとヘルス

ログは3層です。どの層を見るかを知っていれば十分です。

内容見方
コンテナログコンテナが stdout に出力したもの — ブートログ + 以下のサービスログ全体に [태그] を付けたものホスト bin/logs.sh plantpulse-datalake
サービスログ各モジュールが自分の logs/ に書くファイル約40個コンテナ内 pd logs [서비스]
ブートログpd start がサービスランチャーの出力を連結した単一ファイル /var/log/plantpulse-datalake.logpd logsBOOT タグ、またはスのtail

ホストから — logs.sh

cd /opt/kopens/plantpulse-platform-docker/bin

./logs.sh # 모든 컨테이너의 마지막 200줄, 1회 출력
./logs.sh plantpulse-datalake # 데이터레이크 컨테이너만
./logs.sh -f plantpulse-datalake # 계속 따라간다 (Ctrl+C)
./logs.sh --list # 서비스 · 컴포넌트 이름 목록
./logs.sh cassandra # 컴포넌트 이름을 주면 데이터레이크 안 그 로그 파일

2026-09-02 以降、デフォルトは1回出力です。追従するには -f を付けます。アプリコンテナ(サーバ・バッチ・ウェアハウス・HA・OPC-UA・AASX)のログも同じコマンドで見ます — そちらは pd logs にありません。

コンテナ内から — pd logs

docker exec plantpulse-datalake pd logs --list # 따라갈 파일 <태그> <path> 목록만
docker exec plantpulse-datalake pd logs --lines 50 cep # cep 만, 마지막 50줄부터
docker exec plantpulse-datalake pd logs --lines 3 admin-api
docker exec -it plantpulse-datalake pd logs storage messaging # 여러 서비스, 계속 따라감 (Ctrl+C)
オプション意味
--listファイルリストを出力して終了する
--lines Nファイルごとに既存の内容をN行表示してから開始(デフォルト10)。0 の場合は今から書き込まれるものだけ
--no-boot-logブートログを除外する
서비스 …このサービスのみ

pd logsサービスが宣言したファイルのみ追従します。まだ存在しないファイルは5秒ごとに再確認され、作成されると即座に最初の行から追従します。意図的に追従しないものもあります — ローテーション済みコピー、JVM GCログ、Cassandra debug.log(代わりに pd node errors)、HiveMQ event.log(メッセージ単位の監査、数十MB)、Kafkaリクエスト監査ログ。

よく見るタグとファイル:

タグファイル(PP_HOME 基準)
BOOT/var/log/plantpulse-datalake.log
VALKEY/data1/pp-data/valkey/logs/system.log — データボリューム配下
POSTGRES · CASSANDRAplantpulse-storage/db/<엔진>/logs/system.log
KAFKA · MQTTplantpulse-messaging/kafka/logs/ · mqtt/logs/
CEP-TOMCAT · DGW-TOMCATplantpulse-cep/server/logs/catalina.<date>.log など
TEMPORAL · KESTRAplantpulse-workflow/temporal/logs/ · kestra/logs/
ADMIN-APIplantpulse-datalake-admin-api/logs/admin-api.log

正確なリストはボックスごとに異なるため、pd logs --list を参照してください。

ヘルス — 3つが異なる質問に答えます

チェック何を見るかどこで
コンテナ HEALTHCHECKpostgres · cassandra が実際のクエリに応答するか + pd の全ポートが開いているか。20秒ごと、起動猶予900秒、30回連続失敗で unhealthydocker ps(healthy)
pd status21個のポート開いているか。サービス名を指定するとそのサービスのヘルススクリプトコンテナ内
/api/health管理コンソールバックエンドが収集した総合判定(OK・WARN・FAIL)https://<server-ip>:4950/api/health

docker ps は healthy だが pd status に STOPPED があれば起動ウィンドウか1回の失敗です(再実行で RUNNING)。逆に unhealthy だが pd status は全て RUNNING なら、ポートは開いているがクエリに応答できない状態です — pd logs storage を確認してください。

Kafka は特別です。9092はブロカーがリクエストを処理する10秒前に開くため、pd はポート代わりに«ブロカーがアドバタイズしたアドレスに ApiVersions リクエストを送って応答を受け取るか»を見ます。messaging のヘルス行に UP (advertised 10.99.0.100:9092 answered ApiVersions) のような理由が付く理由です。

docker inspect --format '{{json .State.Health.Log}}' plantpulse-datalake | jq # 최근 헬스체크 결과
docker exec plantpulse-datalake pd status messaging # 서비스 하나의 헬스 줄

イベントジャーナル — 誰が、いつ、何をしたか

pd start · stop · restart · backup が JSON 1行ずつを plantpulse-datalake-admin-api/logs/pd-events.jsonl に記録します。管理コンソールのイベント画面がこれをタイムラインとして表示します。

{"at":"2026-09-03T10:11:53+09:00","kind":"service.stop","subject":"datalake","severity":"info","message":"pd stop","actor":"pd","exit_code":0}

コンソールから実行したコマンドは actoroperator:<name> です。計画外の停止(service.down / service.recovered)は人ではなく pd downtime の記録が書き込みます。

診断バンドル

トラブルシューティング問い合わせに添付するものをまとめるには、ホストから:

cd /opt/kopens/plantpulse-platform-docker/bin
./ops-check.sh # 헬스 + 최근 critical 로그 + 제거된 워커의 잔여물
./doctor.sh # 진단 tarball — 시크릿 값은 마스킹된다

関連文書