系统监控
概览
PlantPulse 的监控由 3 个层级 组成。通过结合使用各层级的工具,可以尽早发现问题并迅速做出响应。
| 层级 | 职责 | 频率 |
|---|---|---|
| L1 主机/栈 | 容器状态·health,资源使用量,运行状态响应 | 每分钟~5分钟 (自动/手动) |
| L2 平台内置 | 各模块业务指标 (吞吐量, lag, 队列深度, JVM) | 实时 |
| L3 外部监控 | 长期趋势,报警,多主机综合视图 | 实时 |
平台服务模块
PlantPulse 由多个以 plantpulse- 为前缀的服务模块组成。模块与容器并非 1:1 关系 — 六个应用程序各有一个容器,其余基础架构模块则共同运行在一个 plantpulse-datalake 容器中。
| 位置 | 模块 |
|---|---|
| 独立容器 | plantpulse-server-web · plantpulse-batch-web · plantpulse-warehouse-web · plantpulse-plugin-opcua · plantpulse-plugin-aasx · plantpulse-ha |
plantpulse-datalake 容器内 | storage · messaging · analytics · timeseries · workflow · cep · data-gateway · sql · monitor · backup |
容器单元的状态在主机上通过 bin/status.sh 查看,数据湖内模块单元的状态则通过容器内的 status.sh 查看。以下 «端口» 是该模块在 容器内 开启的端口,其中一部分会映射到主机 → 端口配置信息
核心服务模块
| 模块 | 端口 | 说明 |
|---|---|---|
plantpulse-server | 80 / 443 | Web 服务器及管理控制台, REST API |
plantpulse-cep | 7400 / 7401 | 复杂事件处理引擎 (Aster CEP) |
plantpulse-batch | 9500 | 批处理服务器 |
plantpulse-data-gateway | 5500 | 数据网关 (基于 HTTP REST 的数据查询) |
plantpulse-datalake-admin-api | 4950 (HTTPS) | 管理控制台 API 兼监控代理。唯一发布到主机的运行状态端口 |
plantpulse-warehouse-web | 9600 | 数据仓库 |
plantpulse-plugin-opcua | 11004 / 11005 | OPC-UA 服务器插件 |
plantpulse-plugin-aasx | (主机未公开) | AASX 服务器插件 |
plantpulse-ha | 10210 | 冗余恢复守护进程 |
plantpulse-proxy | 80 / 443 / 1883 / 1884 | 用户和设备访问的唯一入口 |
消息模块 (plantpulse-messaging)
| 服务 | 端口 | 说明 |
|---|---|---|
| Kafka | 9092 | 分布式消息流 |
| MQTT | 1883 | IoT 轻量级消息协议 |
| MQTT Enterprise | - | MQTT 企业版 |
存储模块 (plantpulse-storage)
| 服务 | 端口 | 说明 |
|---|---|---|
| Cassandra 6.0 | 9042 | 时序数据库 (CQL) |
| PostgreSQL | 5432 | 元数据关系型数据库 |
| Valkey (Redis) | 6379 | 内存缓存 |
| RustFS | 9000 | 对象存储 (S3 兼容) |
| JanusGraph | - | 图数据库 |
| RustFS / WeedFS | - | 分布式文件系统 |
分析模块 (plantpulse-analytics)
| 服务 | 端口 | 说明 |
|---|---|---|
| Spark Master | 7077 | 分布式分析引擎 |
| Spark UI | 4440 | Spark 管理控制台 |
| Kyuubi | 10000 | 分布式 SQL 网关 (JDBC/Thrift) |
| Gravitino | 19001 | 数据目录 |
| Hadoop | - | 分布式文件系统 |
| Hive | - | 数据仓库查询引擎 |
时序模块 (plantpulse-timeseries)
| 服务 | 端口 | 说明 |
|---|---|---|
| 时序引擎 | 7800 | 时序数据处理引擎 |
| 时序 UI | 3000 | 时序数据可视化 UI |
工作流模块 (plantpulse-workflow)
| 服务 | 端口 | 说明 |
|---|---|---|
| Temporal | 7233 | 分布式工作流引擎 (Web UI 8233) |
| Kestra | 8380 | 工作流编排 / 调度器 |
实用工具模块
| 模块 | 说明 |
|---|---|
plantpulse-datalake-cli (pd) | 数据湖启动/停止/重启·配置·节点管理 CLI |
plantpulse-setup | 初始设置工具 (模型, CSV 配置) |
plantpulse-backup | 备份服务 |
plantpulse-recovery | 数据恢复工具 |
plantpulse-exporter | 资产数据导出工具 |
plantpulse-migrator | 数据迁移工具 (基于 Spark) |
plantpulse-mirror-maker | 数据复制工具 |
plantpulse-simulator | 数据模拟器 (测试用) |
plantpulse-api | REST API 客户端库 |
查看服务状态
首先在 主机上 查看整个栈的状态。
cd /opt/kopens/plantpulse-platform-docker/bin
./status.sh # 0 = 정상 / 2 = 비정상
./ops-check.sh # 헬스 + 최근 critical log
基础架构模块的端口级状态在 数据湖容器内 查看。
./shell.sh
/opt/kopens/plantpulse-platform/plantpulse-datalake-cli/bin/pd status
输出示例:
==============================================================================================================
PLANTPULSE PLATFORM - ALL SERVICE STATUS
2026-03-01 12:00:00
==============================================================================================================
<SYSTEM RESOURCE OVERVIEW>
--------------------------------------------------------------------------------------------------------------
포트 서비스 상태
--------------------------------------------------------------------------------------------------------------
9092 PP_MESSAGING[KAFKA] ● RUNNING
1883 PP_MESSAGING[MQTT] ● RUNNING
9042 PP_STORAGE[CASSANDRA] ● RUNNING
5432 PP_STORAGE[POSTGRESQL] ● RUNNING
6379 PP_STORAGE[REDIS] ● RUNNING
9000 PP_STORAGE[MINIO] ● RUNNING
7077 PP_ANALYTICS[SPARK-MASTER] ● RUNNING
4440 PP_ANALYTICS[SPARK-UI] ● RUNNING
10000 PP_ANALYTICS[KYUUBI] ● RUNNING
19001 PP_ANALYTICS[GRAVITINO] ● RUNNING
7233 PP_WORKFLOW[ENGINE] ● RUNNING
8380 PP_WORKFLOW[BATCH] ● RUNNING
7800 PP_TIMESERIES[ENGINE] ● RUNNING
3000 PP_TIMESERIES[UI] ● RUNNING
7400 PP_CEP ● RUNNING
5500 PP_DATA_GATEWAY ● RUNNING
4000 PP_SQL ● RUNNING
4950 PP_MONITOR ● RUNNING
60000 PP_AGENT ● RUNNING
80 PP_SERVER ● RUNNING
9500 PP_BATCH ● RUNNING
9600 PP_WAREHOUSE ● RUNNING
11004 PP_PLUGIN[OPCUA] ● RUNNING
数据湖内的 status.sh 仅查看该容器的模块。即使 PP_SERVER · PP_BATCH · PP_WAREHOUSE · PP_PLUGIN 项显示为 STOPPED 或完全缺失,也不代表发生故障 — 这些应用在各自的容器中运行,其状态由主机的 bin/status.sh 判定。
环境变量
主机侧的值由 /opt/kopens/plantpulse-platform-docker/bin/env.sh 决定,容器实际看到的值由 compose/docker-compose.yml 决定。详细关系和优先级请参阅 环境变量参考。以下是容器内使用的名称。
| 变量 | 说明 | 示例 |
|---|---|---|
PP_SCHEME | 模式名称 | PP |
PP_MODE | 运行模式 | MASTER |
PP_HOST_IP | 内部 IP | 192.168.0.41 |
PP_SERVICE_IP | 服务 IP | 192.168.0.41 |
PP_MASTER_IP | 主节点 IP | 192.168.0.41 |
PP_DATA_DIR | 数据目录 | /data1/pp-data |
PP_TEMP_DIR | 临时目录 | /data1/pp-temp |
PP_BACKUP_DIR | 备份目录 | /data1/pp-backup |
PP_CLUSTER_CORES | 集群 CPU 核心数 | 16 |
PP_CLUSTER_MEMORY_BY_CORE | 每核内存 | 2G |
PP_OPTIONS | 附加选项 (JSON) | {"use-infra":true,"use-app":true} |
监控对象
PlantPulse 平台需要监控的主要对象和项目如下。定期检查这些项目有助于保证稳定运行。
| 对象 | 监控项目 |
|---|---|
| 应用程序服务器 | CPU, 内存, 磁盘, 线程 |
| JVM | 堆内存, GC, 类加载 |
| PostgreSQL | 连接池, 查询性能, 磁盘 |
| Aster TSDB | 集群状态, 延迟, 压缩 |
| Redis | 内存, 命中率, 连接数 |
| 引擎 | 管道吞吐量, 队列深度, 错误率 |
| 网络 | OPC 连接, WebSocket, 延迟 |
Web 控制台监控
系统监控画面
路径: /monitoring/index
以仪表板形式显示实时系统状态。如果各项指标超出下表中的 «正常范围》,可能会导致性能下降,请及时核查。
| 指标 | 说明 | 正常范围 |
|---|---|---|
| CPU 使用率 | 服务器 CPU 负载 | < 70% |
| JVM 堆内存 | 堆使用量/最大值 | < 80% |
| 活动线程 | 运行中的线程数 | < 500 |
| MPS (Messages/sec) | 每秒消息处理数 | 低于设定的速率限制 |
| 管道队列 | 等待中的消息数 | < 10,000 |
| DB 连接 | 活动 DB 连接数 | < 连接池最大值 |
服务器状态
路径: /server/status
| 项目 | 说明 |
|---|---|
| 服务器运行时间 | Uptime |
| 引擎状态 | RUNNING / STOPPED / ERROR |
| 最后启动时间 | 引擎最终启动日期时间 |
| 版本信息 | 平台版本 |
日志监控
日志是记录系统运行状态的文本文件。当问题发生时,查看日志对分析原因非常有帮助。
在主机上 — logs.sh
由于有 8 个容器,在不知道哪个容器出现问题时,不带参数 启动是最快的。
cd /opt/kopens/plantpulse-platform-docker/bin
./logs.sh # 여덟 컨테이너를 시간순으로 한 화면에 (서비스 이름 접두)
./logs.sh plantpulse-server-web -n 200 # 웹 서버 컨테이너
./logs.sh cassandra # 데이터레이크 안 컴포넌트 로그 파일
./logs.sh --list # 볼 수 있는 대상 전체 (그 시점의 실제 목록)
./logs.sh -f plantpulse-server-web # 계속 따라가기 (Ctrl-C 로 종료)
默认行为是 打印最后 N 行(默认 200 行)后退出。如需实时追踪,请附加 -f。
容器内的日志文件
# 웹 서버 — 자기 컨테이너 안에 있습니다
./shell.sh plantpulse-server-web
tail -f /opt/kopens/plantpulse-platform/plantpulse-server/logs/system.log
grep -i "ERROR\|EXCEPTION" /opt/kopens/plantpulse-platform/plantpulse-server/logs/system.log | tail -100
# 인프라 — 데이터레이크 컨테이너 안
./shell.sh
tail -f /opt/kopens/plantpulse-platform/plantpulse-storage/db/cassandra/logs/system.log
若要将日志一次性复制到主机,请使用 ./tools/copy-log-to-local.sh;如需创建支持请求用的诊断包,请使用 ./doctor.sh。
日志级别
| 级别 | 说明 |
|---|---|
| INFO | 正常运行信息 |
| WARN | 警告消息 (如性能下降、重试等情况) |
| ERROR | 发生错误 (如处理失败、连接错误等) |
主要日志模式
如果出现以下日志模式,请采取相应措施:
| 模式 | 含义 |
|---|---|
Engine started successfully | 引擎已正常启动 |
Pipeline queue overflow | 管道队列已超限 — 请检查处理速度 |
Cassandra connection failed | Aster TSDB 连接失败 — 请检查集群状态 |
OPC connection lost | OPC 服务器连接断开 — 请检查网络及 OPC 服务器 |
Rate limit exceeded | 处理率已超限 — 请调整 engine.pipeline.ratelimit 值 |
数据库监控
定期监控数据库状态可预先预防性能下降或故障。
PostgreSQL
# 활성 연결 확인
psql -h HOST -U plantpulse -d pp -c "
SELECT count(*) as active_connections
FROM pg_stat_activity
WHERE state = 'active';"
# 느린 쿼리 확인
psql -h HOST -U plantpulse -d pp -c "
SELECT pid, now() - pg_stat_activity.query_start AS duration, query
FROM pg_stat_activity
WHERE state != 'idle' AND now() - pg_stat_activity.query_start > interval '5 seconds'
ORDER BY duration DESC;"
# 테이블 크기 확인
psql -h HOST -U plantpulse -d pp -c "
SELECT relname, pg_size_pretty(pg_total_relation_size(relid))
FROM pg_catalog.pg_statio_user_tables
ORDER BY pg_total_relation_size(relid) DESC
LIMIT 10;"
Aster TSDB
# 클러스터 상태
nodetool status
# 테이블별 통계
nodetool tablestats pp
# 컴팩션 상태
nodetool compactionstats
# GC 로그 확인
nodetool gcstats
# 지연 히스토그램
nodetool tablehistograms pp tm_tag_point
Aster TSDB 状态代码:
| 状态 | 说明 |
|---|---|
| UN | Up / Normal — 正常状态 |
| DN | Down / Normal — 节点宕机状态 |
| UJ | Up / Joining — 正在加入集群 |
| UL | Up / Leaving — 正在离开集群 |
Redis
# Redis 상태 확인
redis-cli -a 설치-시-변경 INFO
# 메모리 사용량
redis-cli -a 설치-시-변경 INFO memory
# 키 수 확인
redis-cli -a 설치-시-변경 DBSIZE
# 슬로우 로그
redis-cli -a 설치-시-변경 SLOWLOG GET 10
JMX 监控
指南: JMX (Java Management Extensions) 是一项允许从外部监控 Java 应用程序内部状态的技术。PlantPulse 通过 JMX 提供 150 多个属性。
JMX 访问
# JMX 포트 활성화 (setenv.sh에 추가)
export JAVA_OPTS="$JAVA_OPTS \
-Dcom.sun.management.jmxremote \
-Dcom.sun.management.jmxremote.port=9090 \
-Dcom.sun.management.jmxremote.ssl=false \
-Dcom.sun.management.jmxremote.authenticate=false"
JMX MBean
- ObjectName:
plantpulse:name=MBean - 类别: engine, cache, storage, network, pipeline, cep, scheduler, monitoring 等 12 个类别
主要 JMX 属性
| 属性 | 说明 |
|---|---|
| engine.status | 引擎状态 |
| engine.uptime | 运行时间 |
| pipeline.queue.size | 管道队列大小 |
| pipeline.mps | 每秒消息处理数 |
| cache.tag.count | 已缓存标签数 |
| storage.cassandra.status | Aster TSDB 连接状态 |
Codahale Metrics
指南: Codahale Metrics 是一个用于采集应用程序性能指标的库。PlantPulse 采集 70 多个指标,您可以通过
/admin/tool/metrics路径进行查询。
指标类型
| 类型 | 说明 |
|---|---|
| Counter | 累积计数器 (如事件数, 错误数等) |
| Timer | 测量处理时间 (平均值, p95, p99) |
| Histogram | 显示数值分布 (如队列深度, 批次大小) |
| Gauge | 显示当前时刻的数值 (如活动连接, 内存) |
标准运行状态检查 API
Web 应用 / 插件服务提供平台公共规格的运行状态检查端点 GET /api/health。
在主要 Web 应用 (server / batch / cep / sql / data-gateway) 中,此端点表示 ready 含义 — 仅进程 (Context) 存活并不报告 UP,只有当 内部引擎 / 核心依赖正常且准备好接收流量时才返回 UP (2026-06 平台设计决定)。
curl -fsS http://127.0.0.1:9500/api/health
# 준비 완료: 200 {"status":"UP","service":"plantpulse-batch-web","ts":1765500000000,"checks":{"timer":true,"redis":true}}
# 기동 진행 중: 503 {"status":"STARTING",...}
# 기동 후 의존성 다운: 503 {"status":"DEGRADED",...,"checks":{...}}
- ready — 仅在准备就绪时
200 UP。若在启动过程中则503 STARTING,启动完成后若部分依赖项掉线则503 DEGRADED分类报告。 - 无依赖 Ping — checks 仅读取各服务已维护的 内存状态标志 (禁止实时 DB 查询 / 网络 Ping — 避免轮询给数据存储带来负载)。
- 匿名访问 — 无需认证即可调用 (用于运维巡检 / 部署自动化验证)。
- 禁止缓存 — 始终包含
Cache-Control: no-cache系列响应头。 - 响应字段包含
status/service(制品名称) /ts(epoch ms) + ready 升级服务的checks(按服务分类的检查详情)。
| 服务 | 运行状态 URL | 含义 | checks / 备注 |
|---|---|---|---|
| server | http://HOST:80/api/health | ready | engine — 引擎生命周期状态 (仅在前阶段启动完成 RUNNING 时为 UP) |
| batch | http://HOST:9500/api/health | ready | timer (批处理管道运行) / redis (InMemory 连接) |
| cep | http://HOST:7400/api/health | ready | engine (CEP 引擎+消费者+恢复完成) / redis (InMemory 连接) |
| sql | https://HOST:4001/api/health | ready | database_manager (DB 管理器初始化完成) — 通过 HTTPS 提供 |
| data-gateway | http://HOST:5500/api/health | ready | database / inmemory / query_log — 仅此路径在 HTTPS 强制 (CONFIDENTIAL) 中排除,允许 localhost HTTP 探针 |
| warehouse (s3 服务) | http://HOST:9600/api/health | ready | temporal — Temporal 工作线程注册完成情况。未注册则 STARTING + 503 (Web 服务器先启动,工作线程随后启动,故启动直后 503 为正常)。含公共 3 个字段 + 系统/JVM 指标 |
| plugin — AAS V3 | http://HOST:8090/api/health | liveness | 未升级至 ready |
| plugin — OPC-UA Browse UI | http://HOST:12780/api/health | liveness | 端口设置 opc.ua.browser.ui.port (默认 12780) |
用途有两种:
- 运维巡检 — 手动核查, crontab / 外部监控的 ready 探针
- CI 部署自动化验证 —
deploy:dev任务在部署后轮询 (Poll) 此 URL (DEPLOY_HEALTH, 240秒) 以确认启动 (详见配置及部署指南)。由于表示 ready 含义,启动期间 503 为正常,轮询将等待其转换为 UP。
角色区分:
plantpulse-datalake-admin-api(:4950) 是采集并公开主机 / JVM / 模块指标的 基础架构监控代理,而/api/health是各 Web 应用自身提供的 ready 端点。两者并非替代关系,而是互补关系。在容器环境中,每个应用的 ready 状态已被 compose 的 healthcheck 判定,因此运维人员可以通过
bin/status.sh一行命令同时获取 8 个容器的判定结果。
运行状态检查脚本
利用运行状态检查脚本,可以自动核查平台主要服务是否正常运行。
自动运行状态检查
以下是自动巡检主要服务状态的脚本示例:
#!/bin/bash
# healthcheck.sh
# 표준 헬스체크 (GET /api/health)
BODY=$(curl -fsS -m 5 http://localhost/api/health 2>/dev/null)
case "$BODY" in
*'"status":"UP"'*) : ;; # 정상
*) echo "[ALERT] PlantPulse server is not responding: ${BODY:-no response}"
# 알림 발송 로직 추가
;;
esac
# PostgreSQL 체크
pg_isready -h HOST -p 5432 -U plantpulse
if [ $? -ne 0 ]; then
echo "[ALERT] PostgreSQL is not responding"
fi
# Cassandra 체크
nodetool status | grep -q "^UN"
if [ $? -ne 0 ]; then
echo "[ALERT] Cassandra node is down"
fi
# Redis 체크
redis-cli -a 설치-시-변경 ping | grep -q "PONG"
if [ $? -ne 0 ]; then
echo "[ALERT] Redis is not responding"
fi
您可以将其注册在 crontab 中定期执行:
# 5분마다 헬스체크
*/5 * * * * /opt/scripts/healthcheck.sh >> /var/log/plantpulse-healthcheck.log 2>&1
PlantPulse Dashboard 监控仪表板
平台监控通过 PlantPulse Dashboard 提供可视化界面。访问 URL: http://localhost:3000/
指南: PlantPulse Dashboard 是随平台附带的数据可视化工具,以图表形式展示 PlantPulse 的各种指标。PLANTPULSE 文件夹下默认提供 5 个仪表板。
1. PlantPulse - 服务器
核心仪表板,用于一目了然地掌握平台服务器的整体状态。
SUMMARY (摘要)
| 面板 | 类型 | 说明 |
|---|---|---|
| VERSION | Stat | 平台版本信息 |
| 服务器启动日期 | Stat | 引擎首次启动日期时间 |
| CPU 负载 | Gauge | 服务器 CPU 使用率 |
| 内存使用率 | Gauge | 服务器内存使用率 |
| 每秒接收数 | Stat | 每秒消息接收量 (MPS) |
| 总保存数 | Stat | 累积保存数据条数 |
| 网络延迟 | Stat | 消息接收网络延迟 (ms) |
| 诊断 | Stat | 诊断事件状态 |
SERVER-METRICS (服务器指标)
| 面板 | 类型 | 说明 |
|---|---|---|
| CACHE / MQTT / KAFKA / WEBSOCKET / DATABASE / TSE | Stat | 各服务连接状态 |
| 服务器 CPU 使用率 | Graph | CPU 使用率时序趋势 |
| 服务器内存使用量 | Graph | 内存使用量时序趋势 |
| JAVA 堆使用量 | Graph | JVM 堆内存使用量 |
| 数据 DISK R/W 现状 | Graph | 磁盘读写流量 |
| 各协议消息接收数 | Graph | OPC, MQTT, Kafka 等各协议接收量 |
| 消息接收网络延迟 | Graph | 网络延迟时序 |
| 总消息接收量 | Graph | 累积消息接收量 |
| 消息接收数 BY 1SEC | Graph | 每秒消息接收趋势 |
| 管道等待队列 | Graph | 管道队列深度 |
| 管道卸载队列大小 | Graph | RocksDB 卸载队列 |
| 管道验证失败数 | Graph | 有效性验证失败条数 |
| 管道工作线程处理时间 | Graph | Worker 处理耗时 |
| 超时消息备份处理 | Graph | 超时消息备份条数 |
| 管道采集器 | Graph | 采集器运行现状 |
| 存储保存缓冲区 | Graph | 保存缓冲区大小 |
| 流处理条数 | Graph | WebSocket 流处理量 |
| 流运行线程数 | Graph | 流活动线程 |
| 流等待队列数 | Graph | 流队列等待条数 |
| 存储保存数 | Graph | DB 保存条数 |
| 存储批次数 | Graph | 批次保存条数 |
| 存储工作线程数 | Graph | 保存 Worker 数 |
| DDS 处理数 | Graph | Kafka DDS 分发数 |
| 异步线程活动计数 | Graph | 异步执行活动线程 |
| 异步线程池大小 | Graph | 线程池大小 |
| 诊断错误数 | Graph | 诊断错误发生趋势 |
| 日志异常 | Graph | 异常日志发生趋势 |
| GC 时间 | Graph | JVM GC 耗时 |
| DISK 使用量 | Graph | 磁盘使用量趋势 |
2. PlantPulse - 数据湖仓
用于监控数据库及存储层性能和状态的仪表板。
DATA-GATEWAY (数据网关)
| 面板 | 说明 |
|---|---|
| TOTAL_QUERY | 总查询数 |
| QPS | 每秒查询处理量 (Gauge) |
| QUERY_LATENCY | 查询延迟时序 |
| QUERY_LATENCY_MAX | 最大查询延迟 |
| SUCCESS / ERROR | 成功及失败条数 |
CACHE (REDIS)
| 面板 | 说明 |
|---|---|
| CLIENTS | Redis 客户端连接数 |
| ALLOCATOR | 内存分配器状态 |
| KEY_COUNT | 已存储键数 |
| FRAGMENTATION | 内存碎片率 |
CEP
| 面板 | 说明 |
|---|---|
| JAVA_HEAP_USED | CEP 引擎堆内存 |
| EVENT_INGESTION_RATE | 事件入库率 |
| EQL_CPU_TIME | 不显示数值 — CEP 不测量单句 CPU 时间 |
| EQL_MAP_COUNT | 已部署 EQL 语句数 |
| EVENT_INGEST_DIFF | 事件入库偏差 |
| EVENT_DELAY_HISTOGRAM | 事件延迟分布 |
| CEP_STATEMENT_MATCH_RATE | 语句匹配率 |
| EQL_STATEMENT_OUTPUT_RATE | 语句输出率 |
META-STORE (POSTGRES)
| 面板 | 说明 |
|---|---|
| TOTAL_CONNECTIONS | 总连接数 |
| QUERY_LATENCY | 查询延迟 |
| TOTAL_READS_HITS | 读取命中数 |
| TOTAL_DB_SIZE | 总 DB 大小 |
EVENT-STORE (CASSANDRA)
| 面板 | 说明 |
|---|---|
| NATIVE_CLIENT | 原生客户端连接 |
| LATENCY | 读/写延迟 |
| READ_PER_SECONDS / WRITE_PER_SECONDS | 每秒读/写 |
| HEAP / DIRECT_MAPPED_MEMORY | JVM 内存 |
| CACHE / CACHE_HIT_RATE | 缓存及命中率 |
| TOTAL_DATA_SIZE | 总数据大小 |
| MEMTABLE | Memtable 状态 |
| COMPACTION / COMPACTION_BYTES | 压缩现状 |
| TABLE_COMPACTIONS / TABLE_SSTABLE_COUNT | 分表压缩及 SSTable 数 |
| BLOOM_FILTER_FALSE_RATIO | 布隆过滤器误报率 |
| TABLE_READ_LATENCY / TABLE_RANGE_LATENCY / TABLE_WRITE_LATENCY | 分表延迟 |
| PENDINGS / FLUSH / THREAD_POOL | 等待, 刷新, 线程池 |
| STATEMENT / COMMITLOG / EXCEPTION / MUTATION | 内部指标 |
| COMPRESSION / TOTAL_SSTABLE | 压缩及 SSTable 现状 |
TIMESERIES-STORE (TSE)
| 面板 | 说明 |
|---|---|
| TSE_MEMORY | 时序引擎内存 |
| TSE_HTTP_TIME | HTTP 响应时间 |
| TSE_DATASTORE | 数据存储状态 |
| TSE_QUEUE_PROCESS_COUNT | 队列处理条数 |
ANALYTICS-STORE (SPARK)
| 面板 | 说明 |
|---|---|
| MEMORY_USED | Spark 内存使用量 |
| CONNECTION | 连接数 |
| OPERATION | 任务数 |
| REQUEST_RATE | 请求比率 |
3. PlantPulse - 边缘网关
用于监控边缘设备状态、PLC 连接及数据接收状况的仪表板。
摘要面板
| 面板 | 说明 |
|---|---|
| 总边缘网关 | 已注册边缘网关数 |
| 电源 (正常/异常) | 电源状态正常及异常条数 |
| PLC | PLC 连接数 |
| 总数据容量 | 采集的总数据大小 |
| 每秒接收总和数 | 所有边缘每秒接收总和 (Gauge) |
| 数据接收最大延迟 | 最大接收延迟 (ms) (Gauge) |
| 日志 | 日志状态 |
PLC STATUS (PLC 状态)
| 面板 | 说明 |
|---|---|
| PLC Ping 失败数 | PLC 连接 Ping 失败趋势 |
| PLC 已连接 / 已断开 | PLC 连接状态趋势 |
| PLC 值读取成功数 | 数据读取成功趋势 |
| PLC 数据读取失败数 | 数据读取失败趋势 |
| 系统错误数趋势 | 系统错误趋势 |
DATA POINT (数据点)
| 面板 | 说明 |
|---|---|
| 每秒总发送数 SUM(MPS) | 所有边缘每秒发送总和 |
| 传点条数 | 传点条数趋势 |
| 传点字节数 | 传输数据字节 |
| 接收最低/平均/最大延迟 | 接收延迟分布 |
EDGE H/W (边缘硬件)
| 面板 | 说明 |
|---|---|
| CPU | 边缘设备 CPU 使用率 |
| 内存 | 内存使用量 |
| 磁盘 (SSD) | 磁盘使用量 |
| 网络上传/下载 | 网络流量 |
| 温度 | 设备温度 |
4. PlantPulse - 统计
用于追踪日数据增量、系统资源峰值等长期统计信息的仪表板。有助于掌握系统的长期增长趋势。
| 面板 | 说明 |
|---|---|
| 总数据容量 | 总存储数据大小 |
| 日总数据容量 | 日数据容量趋势 |
| 日消息传输量 | 日消息传输条数 |
| 日数据增量 | 日数据增长趋势 |
| 消息接收数 | 消息接收数趋势 |
| 网络延迟平均/最大值 | 网络延迟统计 |
| SSTABLE 增量 | Aster TSDB SSTable 增长趋势 |
| 最大 DB 客户端连接 | DB 连接最大值 |
| 异步线程最大执行数 | 异步处理峰值 |
| JAVA 最大 GC 时间 | GC 最大耗时 |
| CQL 预备最大数 | CQL Prepared Statement 最大值 |
| 最大分区大小 | Aster TSDB 分区最大大小 |
| JAVA 堆最小余量 | JVM 堆余量最小值 |
| 异步线程最大等待数 | 异步队列最大等待 |
| 最大内存缓冲区大小 | 内存缓冲区最大值 |
| 备份消息处理数 | 备份处理条数 |
5. PlantPulse - 消息
用于监控 MQTT, Kafka, WebSocket 消息代理状态的仪表板。
SUMMARY (摘要)
| 面板 | 说明 |
|---|---|
| MQTT / KAFKA / WEBSOCKET | 各代理连接状态 |
| CPU | 服务器 CPU 使用率 |
| JAVA_HEAP | JVM 堆使用量 |
| NETWORK_READ_BYTES | 网络接收字节 |
MQTT
| 面板 | 说明 |
|---|---|
| CPU_USED | MQTT 代理 CPU (Gauge) |
| MEMORY_USED | 内存使用量 |
| CONNECTIONS | 客户端连接数 |
| NETWORK IN/OUT | 网络输入输出 |
| GC_COUNT / GC_TIME_MS | GC 次数及耗时 |
| THREAD_COUNT | 线程数 |
| INCOMMING / OUTGOING | 接收及发送消息数 |
| RETAINED_COUNT | Retained 消息数 |
| SUBSCRIPTIONS | 订阅数 |
| TOTAL_MESSAGE | 总消息数 |
KAFKA
| 面板 | 说明 |
|---|---|
| CPU_USED | Kafka 代理 CPU (Gauge) |
| MEMORY_USED | 内存使用量 |
| GLOBAL_TOPIC | 全局 Topic 现状 |
| NETWORK IN/OUT | 网络输入输出 |
| TOPIC_BYTE_IN/OUT_PER_SEC | Topic 每秒字节数 |
| MESSAGE_PER_SEC_MEAN_RATE / 1M_RATE | 每秒消息处理量 |
| NETWORK_REQUEST_FETCH | Fetch 请求数 |
| OFFLINE_PARTITION_COUNT | 离线分区数 |
| ACTIVE_CONTROLLER_COUNT | 活动控制器数 |
WEBSOCKET
| 面板 | 说明 |
|---|---|
| CPU_USED | WebSocket 服务器 CPU (Gauge) |
| MEMORY_USED | 内存使用量 |
| CONNECTION_COUNT | WebSocket 连接数 |
| ENQUEUE / DEQUEUE | 队列出入数 |
监控工具联动
ELK Stack
可以通过 Filebeat → Logstash → Elasticsearch → Kibana 流水线采集容器日志,构建日志检索及分析环境。若在大型运行环境下希望更高效地管理日志,请考虑引入。容器标准输出通过 docker 日志驱动采集,容器内的文件日志通过主机挂载 (PLANTPULSE_LOG_DIR) 采集。