跳到主要内容

日志与健康

日志分为三层。只需知道该看哪一层即可。

层内容查看方式
容器日志容器输出到 stdout 的内容——启动日志加上下述所有服务日志,并追加[태그]主机 bin/logs.sh plantpulse-datalake
服务日志各模块写入自身logs/ 的约40个文件容器内pd logs [서비스]
启动日志pd start 将服务启动器的输出拼接成的一个文件/var/log/plantpulse-datalake.logpd 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起,默认仅输出一次。如需持续跟踪,请附加-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 · 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 为准。

健康——三者回答不同的问题​

检查检查内容位置
容器 HEALTHCHECKpostgres、cassandra 是否能响应实际查询 + pd 的所有端口是否开放。每20秒一次,启动宽限期900秒,连续30次失败则判定为不健康docker ps 的 (healthy)
pd status21个端口是否开放。若指定服务名称,则执行该服务的健康脚本容器内
/api/health管理控制台后端收集的综合判定(OK、WARN、FAIL)https://<server-ip>:4950/api/health

若docker ps 显示健康,但pd status 中存在 STOPPED,则可能正处于启动窗口或曾出错(再次启动后变为 RUNNING)。反之,如果不健康但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 记录写入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 — 시크릿 값은 마스킹된다

相关文档​