系统监控
概述
PlantPulse 的监控由 3 个层级 组成。结合使用各层级的工具,可以及早发现问题并快速响应。
| 层级 | 职责 | 频率 |
|---|---|---|
| L1 主机/栈 | 容器状态·健康、资源使用、健康检查响应 | 每分~5分钟 (自动/手动) |
| L2 平台内置 | 模块级业务指标 (吞吐量、lag、队列深度、JVM) | 实时 |
| L3 外部监控 | 长期趋势、告警、多主机集成视图 | 实时 |
平台服务模块
PlantPulse 由多个以 plantpulse- 开头的服务模块组成。模块与容器不是 1:1 对应 — 应用层六个各有专属容器,其余基础设施模块共存于 plantpulse-datalake 容器中。
| 位置 | 模块 |
|---|---|
| 各自容器 | plantpulse-server-web · plantpulse-batch-web · plantpulse-warehouse · plantpulse-plugin-opcua-server · plantpulse-plugin-aasx-server · plantpulse-ha |
plantpulse-datalake 容器内 | storage · messaging · analytics · timeseries · workflow · cep · data-gateway · sql · monitor · backup |
容器级状态从主机检查 bin/status.sh,基础设施模块级状态从容器内 status.sh 检查。下表中的«端口»是该模块 在容器内 开放的端口,只有部分暴露到主机 → 端口配置信息
核心服务模块
| 模块 | 端口 | 说明 |
|---|---|---|
plantpulse-server | 80 / 443 / 7443 | Web 服务器及管理控制台、REST API |
plantpulse-cep | 7400 / 7401 | 复杂事件处理引擎 (Esper) |
plantpulse-batch | 9500 | 批处理服务器 |
plantpulse-data-gateway | 5500 | 数据网关 (基于 HTTP REST 的数据查询) |
plantpulse-sql | 4000 | SQL 查询工具 |
plantpulse-monitor | 4950 (HTTPS) | 系统监控代理。发布到主机的唯一健康检查端口 |
plantpulse-warehouse | 9600 | 数据仓库 |
plantpulse-plugin-opcua-server | 11004 / 11005 | OPC-UA 服务器插件 |
plantpulse-plugin-aasx-server | (主机不公开) | 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 | 内存缓存 |
| MinIO | 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 | 连接池、查询性能、磁盘 |
| Cassandra | 集群状态、延迟、压实 |
| Redis | 内存、命中率、连接数 |
| 引擎 | 管道吞吐量、队列深度、错误率 |
| 网络 | OPC 连接、WebSocket、延迟 |
Web 控制台监控
系统监控界面
路径:/monitoring/index
以仪表板形式展示实时系统状态。如果各指标超出下表的"正常范围",可能导致性能下降,请注意检查。
| 指标 | 说明 | 正常范围 |
|---|---|---|
| CPU 使用率 | 服务器 CPU 负载 | < 70% |
| JVM 堆内存 | 堆使用量/最大值 | < 80% |
| 活跃线程 | 运行中的线程数 | < 500 |
| MPS (Messages/sec) | 每秒消息处理数 | 低于配置的 rate limit |
| 管道队列 | 等待中的消息数 | < 10,000 |
| DB 连接 | 活跃 DB 连接数 | < 池最大值 |
服务器状态
路径:/server/status
| 项 | 说明 |
|---|---|
| 服务器运行时间 | Uptime |
| 引擎状态 | RUNNING / STOPPED / ERROR |
| 最后启动时间 | 引擎最后启动的日期时间 |
| 版本信息 | 平台版本 |
日志监控
日志是记录系统运作状态的文本文件。发生问题时查看日志可以很好地帮助定位原因。
在主机上 — logs.sh
由于有八个容器,当 不清楚问题出在哪个容器时,无参启动是最快的。
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 | Cassandra 连接失败 — 请检查集群状态 |
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;"
Cassandra
# 클러스터 상태
nodetool status
# 테이블별 통계
nodetool tablestats pp
# 컴팩션 상태
nodetool compactionstats
# GC 로그 확인
nodetool gcstats
# 지연 히스토그램
nodetool tablehistograms pp tm_tag_point
Cassandra 状态代码:
| 状态 | 说明 |
|---|---|
| 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 | Cassandra 连接状态 |
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),该端点具有 就绪性 的含义 —
不仅进程(上下文)活跃就报告 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":{...}}
- 就绪性 — 仅在准备完毕时返回
200 UP。启动进行中则为503 STARTING,启动完成后若部分依赖故障则为503 DEGRADED的细分报告。 - 无依赖 ping — checks 只读取各服务已维护的 内存状态标志 (禁止实时 DB 查询 / 网络 ping — 轮询不给数据存储增加负担)。
- 匿名访问 — 无需认证即可调用 (运维检查 / 部署自动验证)。
- 禁止缓存 — 总是包含
Cache-Control: no-cache系列响应头。 - 响应字段为
status/service(工件名) /ts(epoch ms) + 晋升服务的checks(服务逐项检查详情)。
| 服务 | 健康检查 URL | 含义 | checks / 备注 |
|---|---|---|---|
| server | http://HOST:80/api/health | 就绪性 | engine — 引擎生命周期状态 (全阶段启动完成时 RUNNING 才为 UP) |
| batch | http://HOST:9500/api/health | 就绪性 | timer(批管道运行) / redis(InMemory 连接) |
| cep | http://HOST:7400/api/health | 就绪性 | engine(CEP 引擎+消费者+恢复完成) / redis(InMemory 连接) |
| sql | https://HOST:4001/api/health | 就绪性 | database_manager(DB 管理器初始化完成) — 通过 HTTPS 提供 |
| data-gateway | http://HOST:5500/api/health | 就绪性 | database / inmemory / query_log — 此路径唯一豁免 HTTPS 强制(CONFIDENTIAL),允许本地 HTTP 探测 |
| warehouse (s3 服务) | http://HOST:9600/api/health | 就绪性 | temporal — Temporal Worker 注册完成与否。未注册时返回 STARTING + 503 (Web 服务器先启动,Worker 随后,故启动直后的 503 属正常)。公共 3 个字段 + 系统/JVM 指标包含 |
| 插件 — AAS V3 | http://HOST:8090/api/health | 活性 | 未晋升就绪性 |
| 插件 — OPC-UA Browse UI | http://HOST:12780/api/health | 活性 | 端口由 opc.ua.browser.ui.port 配置 (默认 12780) |
用途有两种。
- 运维检查 — 手动确认、crontab / 外部监控的就绪性探测
- CI 部署自动验证 —
deploy:dev任务在部署后轮询此 URL (DEPLOY_HEALTH,240 秒) 以确认启动 (见配置及部署指南)。就绪性语义,故启动中的 503 属正常,轮询等待 UP 转换。
角色区分:
plantpulse-monitor(:4950) 是收集·暴露主机 / JVM / 模块指标的 基础设施监控代理,/api/health是各 Web 应用自身提供的 就绪性端点。两者非替代关系,而是互补关系。在容器环境中,每个应用的就绪性已由 compose 的 healthcheck 判定,故运维人员用
bin/status.sh一条命令即可得到八个容器的统一判定。
健康检查脚本
使用健康检查脚本可以自动检验平台主要服务是否正常运作。
自动健康检查
以下是自动检查主要服务状态的脚本示例:
#!/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
Grafana 监控仪表板
平台监控通过 Grafana 以可视化方式提供。访问 URL: http://localhost:3000/
说明: Grafana 是开源数据可视化工具,用图表和图形展示 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 读写现况 | 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 (ESPER)
| 面板 | 说明 |
|---|---|
| JAVA_HEAP_USED | CEP 引擎堆内存 |
| EVENT_INGESTION_RATE | 事件摄取速率 |
| EQL_CPU_TIME | EPL 查询 CPU 时间 |
| EQL_MAP_COUNT | EPL 映射计数 |
| 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 增长量 | Cassandra SSTable 增长趋势 |
| 最大 DB 客户端连接 | DB 连接最大值 |
| 异步线程最大执行数 | 异步处理峰值 |
| JAVA 最大 GC 时间 | GC 最大耗时 |
| CQL 准备最大数 | CQL 预编译语句最大值 |
| 最大分区大小 | Cassandra 分区最大大小 |
| 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 | 保留消息数 |
| SUBSCRIPTIONS | 订阅数 |
| TOTAL_MESSAGE | 全部消息数 |
KAFKA
| 面板 | 说明 |
|---|---|
| CPU_USED | Kafka 代理 CPU (Gauge) |
| MEMORY_USED | 内存使用量 |
| GLOBAL_TOPIC | 全局主题现况 |
| NETWORK IN/OUT | 网络入出 |
| TOPIC_BYTE_IN/OUT_PER_SEC | 主题别每秒字节 |
| 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) 采集。