Protokolle und Health
Protokolle sind dreifach unterteilt. Sie müssen nur wissen, welche Ebene Sie betrachten.
| Ebene | Was | So anzeigen |
|---|---|---|
| Containerprotokolle | Was der Container über stdout ausgibt — Startprotokolle + alle unten aufgeführten Dienstprotokolle mit [태그] versehen | Host bin/logs.sh plantpulse-datalake |
| Dienstprotokolle | Etwa 40 Dateien, die jedes Modul in sein eigenes logs/ schreibt | pd logs [서비스] im Container |
| Startprotokolle | Eine Datei /var/log/plantpulse-datalake.log, in der pd start die Ausgabe des Dienststarters zusammenfasst | BOOT-Tag von pd logs oder tail |
Auf dem Host — 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 # 컴포넌트 이름을 주면 데이터레이크 안 그 로그 파일
Seit dem 02.09.2026 ist die Standardausgabe einmalig. Um sie zu verfolgen, hängen Sie -f an. Die Protokolle der App-Container (Server · Batch · Warehouse · HA · OPC-UA · AASX) werden ebenfalls mit demselben Befehl angezeigt — diese befinden sich nicht in pd logs.
Im Container — 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)
| Option | Bedeutung |
|---|---|
--list | Listet die Dateien auf und beendet sich dann sofort |
--lines N | Zeigt pro Datei die letzten N Zeilen des vorhandenen Inhalts (Standard: 10). Bei 0 nur das, was ab jetzt geschrieben wird |
--no-boot-log | Ohne Startprotokolle |
서비스 … | Nur diese Dienste |
pd logs verfolgt nur die vom Dienst deklarierten Dateien. Noch nicht vorhandene Dateien werden alle 5 Sekunden erneut gesucht und ab dem ersten Auftreten ab der ersten Zeile verfolgt. Einige werden absichtlich nicht verfolgt — Rotationskopien, JVM-GC-Protokolle, Aster-TSDB-debug.log (stattdessen pd node errors), HiveMQ-event.log (nachrichtenbasiertes Audit, mehrere zehn MB), Kafka-Anfrage-Auditprotokolle.
Häufig verwendete Tags und Dateien:
| Tag | Datei (bezogen auf PP_HOME) |
|---|---|
BOOT | /var/log/plantpulse-datalake.log |
VALKEY | /data1/pp-data/valkey/logs/system.log — unter dem Datenvolumen |
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 usw. |
TEMPORAL · KESTRA | plantpulse-workflow/temporal/logs/ · kestra/logs/ |
ADMIN-API | plantpulse-datalake-admin-api/logs/admin-api.log |
Die genaue Liste variiert je nach Box, daher vertrauen Sie pd logs --list.
Health — drei Prüfungen beantworten unterschiedliche Fragen
| Prüfung | Was wird geprüft | Wo |
|---|---|---|
| Container HEALTHCHECK | Beantworten postgres · cassandra tatsächliche Abfragen? + Sind alle Ports von pd offen? Alle 20 Sekunden, Startverzögerung 900 Sekunden, unhealthy bei 30 aufeinanderfolgenden Fehlern | (healthy) von docker ps |
pd status | Sind 21 Ports offen? Bei Angabe des Dienstnamens das Health-Skript dieses Dienstes | Im Container |
/api/health | Gesamtergebnis (OK · WARN · FAIL), vom Backend der Verwaltungskonsole erfasst | https://<server-ip>:4950/api/health |
Wenn docker ps healthy ist, aber pd status STOPPED zeigt, liegt ein Startfenster oder ein einmaliger Aussetzer vor (erneut ausführen → RUNNING). Umgekehrt, wenn unhealthy ist, aber pd status alle RUNNING zeigt, sind die Ports offen, aber Abfragen werden nicht beantwortet — pd logs storage.
Kafka ist besonders. Port 9092 wird 10 Sekunden bevor der Broker Anfragen verarbeitet, geöffnet, daher prüft pd statt des Ports, ob «ApiVersions-Anfrage an die vom Broker beworbene Adresse gesendet und eine Antwort erhalten wird». Aus diesem Grund wird in der Health-Zeile von messaging ein Grund wie UP (advertised 10.99.0.100:9092 answered ApiVersions) angegeben.
docker inspect --format '{{json .State.Health.Log}}' plantpulse-datalake | jq # 최근 헬스체크 결과
docker exec plantpulse-datalake pd status messaging # 서비스 하나의 헬스 줄
Ereignisprotokoll — wer hat wann was getan
pd start · stop · restart · backup schreiben jeweils eine JSON-Zeile in plantpulse-datalake-admin-api/logs/pd-events.jsonl. Die Ereignis-Ansicht der Verwaltungskonsole zeigt diese als Zeitachse.
{"at":"2026-09-03T10:11:53+09:00","kind":"service.stop","subject":"datalake","severity":"info","message":"pd stop","actor":"pd","exit_code":0}
Für in der Konsole ausgeführte Befehle ist actor gleich operator:<name>. Ungeplante Stopps (service.down / service.recovered) werden nicht von Menschen, sondern vom Protokoll von pd downtime geschrieben.
Diagnosebündel
Um alles für eine Störungsanfrage gesammelt zu haben, führen Sie auf dem Host aus:
cd /opt/kopens/plantpulse-platform-docker/bin
./ops-check.sh # 헬스 + 최근 critical 로그 + 제거된 워커의 잔여물
./doctor.sh # 진단 tarball — 시크릿 값은 마스킹된다
Verwandte Dokumente
- Systemüberwachung — Readiness-Healthcheck-API der einzelnen Web-Apps
- Verwaltungskonsole — Protokoll-, Ereignis- und Diagnoseansichten
- FAQ