版本:v5.0.0(v4.9.2 正常)
问题描述:
v4.9.2 中,Dashboard 仪表板的「今日/本月告警数」「发送渠道统计」等数据来自全局内存计数器 ChartsJson,每次告警到达时无条件累加,与 AlertRecord(告警记录开关)无关。即使关闭告警记录,Dashboard 统计依然正常增长。
v5.0.0 重构了 Dashboard 统计逻辑,改为从 alert_record 表实时查询(GetDashboardStats())。但 AlertRecord 开关控制是否写入 alert_record 表。当 AlertRecord=0 时,不再有新的记录写入 alert_record,导致 Dashboard 所有统计数字不再增长,变为 0。
同时 v5.0.0 中 ChartsJson 仍然在累加,但已不再传给 Dashboard 模板,成为死代码。
影响:
- 用户关闭告警历史记录(节省存储空间)后,Dashboard 仪表板完全失效
- 无法在不记录详情的情况下查看发送统计
根因:
controllers/default.go 第70行:c.Data["Stats"] = stats 替代了 v4.9.2 的 c.Data["ChartsJson"] = ChartsJson
models/AlertRecord.go 的 GetDashboardStats() 仅查询 alert_record 表,无独立计数器
- 所有
AddRecord() 调用都被 if beego.AppConfig.String("AlertRecord") == "1" 包裹
建议修复方向:
- Dashboard 统计独立于
AlertRecord 开关,使用独立的计数器或单独的统计表
- 或恢复
ChartsJson 到 Dashboard 模板的传递,作为实时统计的数据源
版本:v5.0.0(v4.9.2 正常)
问题描述:
v4.9.2 中,Dashboard 仪表板的「今日/本月告警数」「发送渠道统计」等数据来自全局内存计数器
ChartsJson,每次告警到达时无条件累加,与AlertRecord(告警记录开关)无关。即使关闭告警记录,Dashboard 统计依然正常增长。v5.0.0 重构了 Dashboard 统计逻辑,改为从
alert_record表实时查询(GetDashboardStats())。但AlertRecord开关控制是否写入alert_record表。当AlertRecord=0时,不再有新的记录写入alert_record,导致 Dashboard 所有统计数字不再增长,变为 0。同时 v5.0.0 中
ChartsJson仍然在累加,但已不再传给 Dashboard 模板,成为死代码。影响:
根因:
controllers/default.go第70行:c.Data["Stats"] = stats替代了 v4.9.2 的c.Data["ChartsJson"] = ChartsJsonmodels/AlertRecord.go的GetDashboardStats()仅查询alert_record表,无独立计数器AddRecord()调用都被if beego.AppConfig.String("AlertRecord") == "1"包裹建议修复方向:
AlertRecord开关,使用独立的计数器或单独的统计表ChartsJson到 Dashboard 模板的传递,作为实时统计的数据源