跳到主要内容

诊断与巡检

用于怀疑发生故障/异常运行时的诊断脚本集。

2026.05+ 容器模式以 pe-doctor 为标准

以下流程适用于原生盒子(bin/ps.sh、bin/log-viewer.sh)。容器模式:

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)

详情:容器模式运维。


1. 分阶段诊断流程​

# 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. 注意 — 在非交互式 Shell 中禁止调用 log-viewer.sh​

log-viewer.sh 是无限的 tail -f。在 CI/cron 等非交互式环境中调用时,ssh 会话将无法结束。请仅在交互式 Shell中才使用。


3. log-viewer.sh — 集成日志 tail​

$PE_HOME/bin/log-viewer.sh

7 个日志实时显示在一个屏幕上:

  • 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
  • 其他

用 Ctrl+C 结束。发生故障时最先执行的工具。


4. ps.sh​

$PE_HOME/bin/ps.sh

通过 plantpulse 关键字列出存活的 Java 进程。正常状态下应全部显示以下内容:

进程含义PID 环境变量
apache.cassandra.service.CassandraDaemonCassandracassandra.pid
hivemq.jarMQTT(无)
plantpulse.timeseries.engine.Main时序引擎(无)
org.apache.catalina.startup.BootstrapTomcatCATALINA_PID
node-red (Node.js)Node-RED(无)

如有缺失,表示该组件已停止 — 通过 start.sh 或对应子组件的 bin/start.sh 来恢复。


5. node-info.sh — Cassandra 状态​

$PE_HOME/bin/node-info.sh

典型输出(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
巡检点含义
Native Transport active : true9042 客户端端口处于监听状态
Heap > 80%OOM 临近 — 清理数据/加大堆内存
Load 超过磁盘的 80%sstable 清理(node-cleanup.sh)或扩容磁盘

6. node-cql.sh — cqlsh 交互式​

$PE_HOME/bin/node-cql.sh

cqlsh -u cassandra -p ... 会自动执行并连接到 keyspace pe。用于手动数据检查 — 不建议在运行中直接执行 INSERT/UPDATE(缓存未刷新、副本不一致等)。

常用查询示例:

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 获取 speedtest.py 并执行,以测量外部网络速度。如果线路较慢,升级也会耗时较长 — 此工具用于升级前的诊断。


8. 常见陷阱 — 综合​

症状原因/解决方法
restart.sh 后 OPC 显示 0/N 连接偶尔出现的启动竞争问题。再次调用一次 restart.sh
clean.sh 后 ssh 会话突然断开/tmp/* 同时清除了 ssh socket — 通过其他会话重新连接
upgrade.sh 过程中下载失败检查外部网络 / product.kopens.io。network-speed-test.sh
start.sh 停滞过久([4] DB START)Cassandra commitlog 回收 — 通常需等待 30 秒以上。若仍未结束,检查 db/logs/system.log
Tomcat 频繁崩溃可能存在 OOM — 检查 server/logs/catalina.out 的 OutOfMemoryError / heapdump 目录
Node-RED 在 Deploy 后消失userDir 损坏。设计为可通过 $PE_HOME/node/conf 的主副本恢复 — node/bin/start.sh 会自动同步
从外部无法访问网关防火墙(firewall-cmd --list-all 或 iptables -L)/ SELinux 策略 / 路由器 NAT 检查

9. 了解更多​