ログとヘルス
ログは三層です。どの層を見ればよいかだけ分かれば十分です。
| 層 | 内容 | 確認方法 |
|---|---|---|
| コンテナログ | コンテナが stdout に出力したもの — 起動ログ + 以下のサービスログすべてに [태그] を付けたもの | ホスト bin/logs.sh plantpulse-datalake |
| サービスログ | 各モジュールが自身の logs/ に書き込むファイル約40個 | コンテナ内 pd logs [서비스] |
| 起動ログ | pd start がサービスランチャーの出力を連結した1ファイル /var/log/plantpulse-datalake.log | pd logs の BOOT タグ、または 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ログ、Aster TSDB 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 · CASSANDRA | plantpulse-storage/db/<엔진>/logs/system.log |
KAFKA · MQTT | plantpulse-messaging/kafka/logs/ · mqtt/logs/ |
CEP-TOMCAT · DGW-TOMCAT | plantpulse-cep/server/logs/catalina.<date>.log など |
TEMPORAL · KESTRA | plantpulse-workflow/temporal/logs/ · kestra/logs/ |
ADMIN-API | plantpulse-datalake-admin-api/logs/admin-api.log |
正確な一覧はボックスごとに異なるため、pd logs --list を信頼してください。
ヘルス — 3つが異なる質問に答えます
| 検査 | 何を見るか | 場所 |
|---|---|---|
| コンテナ HEALTHCHECK | postgres・cassandra が実際のクエリに応答するか + pd のポートがすべて開いているか。20秒ごと、起動猶予900秒、30回連続失敗で unhealthy | docker ps の (healthy) |
pd status | ポート21個が開いているか。サービス名を指定するとそのサービスのヘルススクリプト | コンテナ内 |
/api/health | 管理コンソールバックエンドが収集した総合判定(OK・WARN・FAIL) | https://<server-ip>:4950/api/health |
docker ps が healthy なのに pd status に STOPPED がある場合、起動ウィンドウか一度外れた状態です(再実行すれば 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}
コンソールで実行したコマンドは actor が operator:<name> です。計画外停止(service.down / service.recovered)は人間ではなく pd downtime の記録が書き込みます。
診断パッケージ
障害問い合わせに添付するものを一度にまとめるには、ホストから:
cd /opt/kopens/plantpulse-platform-docker/bin
./ops-check.sh # 헬스 + 최근 critical 로그 + 제거된 워커의 잔여물
./doctor.sh # 진단 tarball — 시크릿 값은 마스킹된다