南向采集监控指标 UI 实现文档
概述
根据《南向通道指标监控》设计文档,实现了工业边缘网关南向采集的通信可观测性 UI,包括通道级和设备级的分层监控。
核心组件
1. ChannelMetricsCard.vue - 通道级监控指标卡片
位置:ui/src/components/ChannelMetricsCard.vue
功能特性:
- 质量评分圆形进度条 (100分制)
- ≥90: Excellent (绿色)
- ≥75: Good (蓝色)
- ≥60: Unstable (黄色)
- <60: Poor (红色)
- 会话健康状态显示
- 核心指标展示:成功率、平均RTT、丢包率
- 展开/收起详细指标
- 最近异常记录时间线
评分算法:
score = 100
score -= (1 - successRate) * 40
score -= crcErrorRate * 20
score -= retryRate * 20
score -= rttPenalty // RTT > 100ms开始扣分
2. DeviceMetricsCard.vue - 设备级监控指标卡片
位置:ui/src/components/DeviceMetricsCard.vue
功能特性:
- 设备健康度指示器
- 在线/离线状态显示
- 降级状态标识
- 连续失败次数徽章
- 核心指标:点位成功率、采集耗时、Null值比例
- 恢复中状态提示
健康度算法:
health = 100
health -= consecutiveFailures * 10
health -= abnormalPointRate * 30
health -= timeoutRate * 30
health -= nullValueRate * 20
3. Dashboard.vue 首页增强
位置:ui/src/views/Dashboard.vue
新增功能:
- 通道卡片质量评分显示
- 设备在线/离线总数统计
- 通道成功率趋势
- 错误统计展示 (超时、CRC、重连)
- 最后采集时间显示
4. ChannelList.vue 监控指标入口
位置:ui/src/views/ChannelList.vue
新增功能:
- 每个通道卡片添加监控指标按钮
- 列表视图添加监控指标操作按钮
- 通道监控指标详情对话框
- 质量评分大圆环
- 连接信息展示
- 关键统计数据卡片
- 成功率趋势图表
- 最近异常时间线
API 接口
GET /api/channels/{id}/metrics
响应结构:
{
"qualityScore": 92,
"successRate": 0.99,
"timeoutCount": 3,
"crcError": 0,
"crcErrorRate": 0,
"retryRate": 0.01,
"avgRtt": 12.5,
"maxRtt": 45,
"reconnectCount": 1,
"connectionSeconds": 3600,
"totalRequests": 1000,
"successCount": 990,
"trend": [
{"time": "2026-02-24T10:00:00Z", "rate": 0.99},
{"time": "2026-02-24T10:05:00Z", "rate": 0.98}
],
"recentErrors": [
{"time": "2026-02-24T10:00:00Z", "type": "timeout", "message": "读取超时"}
]
}
设计原则实现
1. 分层展示模型 ✅
- 通道级 (Channel): TCP连接质量、通信统计
- 设备级 (Device): 采集质量、健康度
- 点位级 (Point): 质量码、原始数据 (后续扩展)
2. 通道质量 ≠ 设备质量 ✅
- 通道质量只反映TCP/链路状态
- 设备异常不直接影响通道评分
- UI上可同时看到通道Excellent但设备离线的情况
3. 质量可视化 ✅
- 100分制质量评分
- 颜色编码 (绿/蓝/黄/红)
- 趋势图表
- 异常高亮
4. 运维诊断能力 ✅
- 实时成功率显示
- RTT统计
- 错误类型分类 (超时/CRC/异常响应)
- 最近异常时间线
UI 截图说明
首页通道卡片
┌─────────────────────────────────────┐
│ [图标] 通道名称 [评分] │
│ Modbus TCP | 启用 │
├─────────────────────────────────────┤
│ 设备: 10 在线: 8 离线: 2 │
│ 成功率: 99% │
├─────────────────────────────────────┤
│ [成功率进度条] │
│ RTT: 15ms 超时: 0 CRC: 0 │
└─────────────────────────────────────┘
监控指标详情对话框
┌──────────────────────────────────────────────┐
│ 通道监控指标 - Modbus-TCP-1 [X] │
├──────────────────┬───────────────────────────┤
│ │ 成功率 平均RTT 超时 CRC│
│ [质量评分] │ [99%] [15ms] [0] [0] │
│ 92 │ │
│ Excellent │ [成功率趋势图] │
│ │ │
│ 协议: Modbus TCP │ 最近异常: │
│ 连接: 2h 30m │ • 读取超时 (10:00) │
│ │ • CRC错误 (09:45) │
└──────────────────┴───────────────────────────┘
后续扩展
1. 点位级监控
- 原始寄存器值显示
- 字节序转换演示
- 质量码 (Good/Bad/Uncertain)
2. 高级图表
- 实时成功率折线图
- RTT分布直方图
- 错误类型饼图
3. 通信日志
- 最近50条通信日志
- 原始报文展开
- 请求/响应时间对比
验收标准
| 功能 | 状态 |
|---|---|
| 通道质量评分显示 | ✅ 已完成 |
| 设备健康度显示 | ✅ 已完成 |
| 成功率趋势图表 | ✅ 已完成 |
| 异常记录时间线 | ✅ 已完成 |
| 错误分类统计 | ✅ 已完成 |
| 通道与设备状态隔离 | ✅ 已完成 |
| 实时刷新 (2秒间隔) | ✅ 已完成 |
| 监控指标详情对话框 | ✅ 已完成 |
文件清单
ui/src/components/
├── ChannelMetricsCard.vue # 通道监控指标卡片
└── DeviceMetricsCard.vue # 设备监控指标卡片
ui/src/views/
├── Dashboard.vue # 首页 (已增强)
└── ChannelList.vue # 通道列表 (已增强)
docs/
└── UI_SOUTHBOUND_METRICS.md # 本文档