Diagnose und Inspektion
Sammlung von Diagnoseskripten für den Fall, dass eine Störung / ein anomaler Betrieb vermutet wird.
Die folgenden Verfahren gelten für native Boxen (bin/ps.sh, bin/log-viewer.sh). Betrieb im Container-Modus:
bash /opt/kopens/install/bin/status.sh # 한 줄 상태
bash /opt/kopens/install/bin/health.sh # 종합 헬스 (exit 0/1)
bash /opt/kopens/install/bin/logs.sh -f tomcat # 로그 follow
sudo bash /opt/kopens/install/bin/doctor.sh # 진단 일괄 tarball (support escalation)
Details: Betrieb im Container-Modus.
1. Schrittweise Diagnoseverfahren
# 1. 누가 죽었나?
$PE_HOME/bin/ps.sh
# 2. 어디가 시끄러운가?
$PE_HOME/bin/log-viewer.sh
# (실시간 — Ctrl+C 로 빠져나옴)
# 3. Cassandra 의심
$PE_HOME/bin/node-info.sh
# 4. Disk 의심
df -h /data1
du -sh $PE_HOME/*/log/* /data1/* 2>/dev/null | sort -h | tail -20
# 5. 다 안 맞으면 — 안전하게 단계적 재시작
$PE_HOME/bin/restart-app.sh # 1차: 앱(Tomcat)만 — 30~90초
# 그래도 이상 시
$PE_HOME/bin/restart.sh # 2차: 전체 스택 (stop + start 를 한 프로세스로)
# 그래도 이상 시
sudo $PE_HOME/bin/reboot.sh # 3차: OS 재부팅 (최후의 수단)
2. Achtung — log-viewer.sh in nicht-interaktiven Shells nicht aufrufen
log-viewer.sh ist eine Endlosschleife (tail -f). In nicht-interaktiven Umgebungen wie CI / cron führt dies dazu, dass die SSH-Sitzung nicht beendet wird. Verwenden Sie sie nur in einer interaktiven Shell.
3. log-viewer.sh — Integriertes Log-Tailing
$PE_HOME/bin/log-viewer.sh
7 Logs in Echtzeit auf einer Ansicht:
- Tomcat (
server/logs/catalina.out) - timeseries-engine
- Cassandra (
db/logs/system.log) - HiveMQ (
mqtt/log/hivemq.log) - Node-RED (
node/log/node-red.log) - Redis cache
- Sonstige
Mit Ctrl+C beenden. Bei einem Ausfall das erste Werkzeug, das ausgeführt wird.
4. ps.sh
$PE_HOME/bin/ps.sh
Liste der lebenden Java-Prozesse mit dem Schlüsselwort plantpulse. Im normalen Zustand müssen alle folgenden sichtbar sein:
| Prozess | Bedeutung | PID-Umgebungsvariable |
|---|---|---|
apache.cassandra.service.CassandraDaemon | Cassandra | cassandra.pid |
hivemq.jar | MQTT | (keine) |
plantpulse.timeseries.engine.Main | Zeitreihen-Engine | (keine) |
org.apache.catalina.startup.Bootstrap | Tomcat | CATALINA_PID |
node-red (Node.js) | Node-RED | (keine) |
Wenn etwas fehlt, ist die Komponente ausgefallen — mit start.sh oder dem bin/start.sh der betreffenden Sub-Komponente wiederherstellen.
5. node-info.sh — Cassandra-Status
$PE_HOME/bin/node-info.sh
Beispielhafte Ausgabe (nodetool info):
ID : 8a4d...
Gossip active : true
Native Transport active: true
Load : 1.21 GiB
Generation No : 1778176430
Uptime (seconds) : 1234
Heap Memory (MB) : 824.10 / 2048.00
| Prüfpunkt | Bedeutung |
|---|---|
Native Transport active : true | Port 9042 (Client-Port) lauscht |
Heap > 80% | OOM droht — Daten aufräumen / Heap vergrößern |
Load überschreitet 80 % der Festplatte | sstable-Bereinigung (node-cleanup.sh) oder Festplatte erweitern |
6. node-cql.sh — cqlsh interaktiv
$PE_HOME/bin/node-cql.sh
cqlsh -u cassandra -p ... wird automatisch ausgeführt, um eine Verbindung zum Keyspace pe herzustellen. Für manuelle Datenprüfung — direkte INSERT/UPDATE-Operationen im laufenden Betrieb sind nicht empfehlenswert (Cache nicht aktualisiert, Replikation inkonsistent etc.).
Häufig verwendete Abfragebeispiele:
USE pe;
SELECT count(*) FROM app_tag;
SELECT opc_id, opc_type FROM app_opc;
DESCRIBE TABLE app_tag;
7. network-speed-test.sh
$PE_HOME/bin/network-speed-test.sh
product.kopens.io empfängt speedtest.py und führt sie aus, um die Geschwindigkeit des externen Netzwerks zu messen. Bei langsamer Leitung dauert auch das Upgrade länger — Diagnose vor dem Upgrade.
8. Häufige Fallstricke — Gesamtübersicht
| Symptom | Ursache / Lösung |
|---|---|
restart.sh nach OPC-Verbindung 0/N | Seltener Start-Race. restart.sh noch einmal aufrufen |
clean.sh führt zu plötzlichem Abbruch der SSH-Sitzung | /tmp/* beendet auch den SSH-Socket — mit anderer Sitzung neu verbinden |
Download-Fehler während upgrade.sh | Externes Netzwerk / product.kopens.io prüfen. network-speed-test.sh |
start.sh bleibt zu lange stehen ([4] DB START) | Cassandra-Commitlog wird zurückgesetzt — normalerweise 30s+ warten. Falls immer noch nicht fertig, db/logs/system.log prüfen |
| Tomcat stirbt ständig | Mögliches OOM — server/logs/catalina.out der OutOfMemoryError / heapdump-Verzeichnis prüfen |
| Node-RED verschwindet nach dem Deploy | userDir beschädigt. Sollte durch Master-Kopie in $PE_HOME/node/conf wiederherstellbar sein — node/bin/start.sh synchronisiert automatisch |
| Externer Zugriff auf das Gateway nicht möglich | Firewall (firewall-cmd --list-all oder iptables -L) / SELinux-Richtlinie / Router-NAT prüfen |
9. Weitere Informationen
- Bei Speichermangel: Bereinigung und Reinigung
- Szenarien für schrittweise Störungsdiagnose: Betriebsszenarien
- Monitoring (REST-Metriken): Monitoring (Operator/REST)