Dashboard 功能
可用性监控
可用性监控页面为管理员提供了一个集中化的视图,用于实时监控所有供应商的健康状态和服务可用性。该页面基于请求日志数据,自动计算各供应商的可用性指标,并通过直观的热力图展示历史趋势。
访问权限
可用性监控页面仅对管理员开放。普通用户访问时会看到权限受限提示。
页面概览
可用性监控页面主要由以下几个部分组成:
- 系统总览卡片 - 展示整体可用性指标和供应商状态统计
- 时间范围与排序控件 - 控制数据查询范围和展示顺序
- 可用性热力图 - 以时间序列展示各供应商的可用性趋势
- 图例说明 - 解释热力图颜色含义
系统总览卡片
页面顶部展示四个统计卡片,帮助管理员快速了解系统整体健康状况:
系统可用性
显示所有供应商的加权平均可用性百分比。该指标基于各供应商的请求数量进行加权计算,请求量大的供应商对整体可用性影响更大。
健康供应商
显示当前状态为"正常"(绿色)的供应商数量。状态判定基于最近时间桶内的请求成功率:
- 成功率 >= 50% 判定为健康
异常供应商
显示当前状态为"异常"(红色)的供应商数量:
- 成功率 < 50% 判定为异常
未知状态供应商
显示没有足够数据判断状态的供应商数量。当供应商在查询时间范围内没有任何请求记录时,会显示为"未知"状态。
诚实展示原则
系统严格遵循"无数据即未知"的原则。没有请求记录的供应商不会被默认标记为健康,而是会诚实地显示为"未知"状态,避免误导管理员。
控件区域
时间范围选择
支持以下时间范围选项:
| 选项 | 说明 |
|---|---|
| 最近 15 分钟 | 查看近期的实时状态 |
| 最近 1 小时 | 适合排查近期问题 |
| 最近 6 小时 | 观察半天内的趋势 |
| 最近 24 小时 | 默认选项,查看全天概况 |
| 最近 7 天 | 长期趋势分析 |
系统会根据选择的时间范围自动计算合适的时间桶大小,确保热力图始终显示约 60 个数据点以获得最佳可视化效果。
排序方式
支持三种排序方式:
- 按可用性 - 默认选项,可用性高的供应商排在前面,未知状态排在最后
- 按名称 - 按供应商名称字母顺序排序
- 按请求数 - 按请求数量降序排序,活跃度高的供应商排在前面
刷新按钮
点击"刷新"按钮可手动触发数据更新。刷新过程中按钮会显示旋转动画和"刷新中..."文字。
可用性热力图
热力图是页面的核心组件,以直观的方式展示各供应商在时间维度上的可用性变化。
热力图结构
每行代表一个供应商,包含以下元素:
- 供应商名称 - 显示在最左侧
- 状态徽章 - 显示当前状态(正常/异常/未知)
- 热力条 - 由多个时间桶组成的颜色条带
- 汇总数据 - 显示在最右侧,包括可用性百分比和总请求数
颜色含义
热力图使用以下颜色编码:
| 颜色 | 可用性范围 | 说明 |
|---|---|---|
| 绿色 | >= 95% | 优秀,服务稳定 |
| 黄绿色 | 80% - 95% | 良好,偶有异常 |
| 橙色 | 50% - 80% | 警告,需要关注 |
| 红色 | < 50% | 严重,服务不稳定 |
| 灰色 | 无数据 | 该时间段内没有请求 |
时间桶详情
将鼠标悬停在任意热力块上,会显示该时间桶的详细信息:
- 时间 - 时间桶的起始时间
- 请求数 - 该时间段内的总请求数
- 可用性 - 计算得出的可用性百分比
- 平均延迟 - 请求的平均响应时间
- 成功/失败数 - 具体的成功和失败请求数量
状态判定逻辑
请求分类规则
系统采用简单明确的二分类规则:
- 成功(绿色) - HTTP 状态码为 2xx 或 3xx 的请求
- 失败(红色) - HTTP 状态码为 4xx 或 5xx,或发生网络错误的请求
可用性计算
可用性得分 = 成功请求数 / 总请求数
例如:10 个请求中有 8 个成功,可用性为 80%。
当前状态判定
供应商的当前状态基于最近 3 个时间桶的平均可用性:
- 平均可用性 >= 50% 显示为"正常"
- 平均可用性 < 50% 显示为"异常"
- 没有数据显示为"未知"
熔断器机制说明
可用性监控与系统的熔断器机制相关联。熔断器是一种保护机制,当某个供应商连续失败达到阈值时会自动触发:
熔断器状态
| 状态 | 说明 |
|---|---|
| CLOSED | 正常状态,请求正常转发到该供应商 |
| OPEN | 熔断打开,请求将跳过该供应商 |
| HALF-OPEN | 半开状态,允许少量请求测试供应商是否恢复 |
默认熔断配置
- 失败阈值 - 连续失败 5 次后触发熔断
- 熔断持续时间 - 熔断状态持续 30 分钟
- 恢复阈值 - 半开状态下成功 2 次后关闭熔断器
配置自定义
熔断器的阈值参数可以在供应商管理页面为每个供应商单独配置。详见供应商管理文档。
使用建议
日常监控
建议每日检查可用性监控页面,关注以下指标:
- 系统整体可用性是否保持在合理水平
- 是否有供应商频繁出现异常
- 异常是否集中在特定时间段
问题排查
当发现供应商异常时:
- 观察热力图中的红色区域,确定问题发生的时间范围
- 悬停查看具体时间桶的失败数量和错误详情
- 切换到请求日志页面,筛选该供应商的失败请求进行详细分析
趋势分析
选择"最近 7 天"时间范围,可以发现:
- 是否存在周期性的可用性下降
- 不同供应商的稳定性对比
- 系统整体可用性的变化趋势
技术说明
数据来源
可用性数据来自 message_request 表中的请求日志记录。系统会根据每条请求的 HTTP 状态码进行分类统计。
查询限制
为防止内存溢出,单次查询最多加载 100,000 条请求记录。如果数据量超过此限制,系统会记录警告日志,返回的结果可能不完整。
时间桶大小
时间桶大小根据查询时间范围自动计算,目标是生成约 60 个数据点:
| 时间范围 | 大约桶大小 |
|---|---|
| 15 分钟 | 15 秒 |
| 1 小时 | 1 分钟 |
| 6 小时 | 6 分钟 |
| 24 小时 | 24 分钟 |
| 7 天 | 约 2.8 小时 |
页面上会显示实际使用的时间桶大小,方便理解数据粒度。
