Skip to content

v5.0.0 Dashboard 统计在关闭 AlertRecord 时归零,v4.9.2 无此问题 #534

Description

@dashumeiyoumu

版本: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 仪表板完全失效
  • 无法在不记录详情的情况下查看发送统计

根因:

  1. controllers/default.go 第70行:c.Data["Stats"] = stats 替代了 v4.9.2 的 c.Data["ChartsJson"] = ChartsJson
  2. models/AlertRecord.go 的 GetDashboardStats() 仅查询 alert_record 表,无独立计数器
  3. 所有 AddRecord() 调用都被 if beego.AppConfig.String("AlertRecord") == "1" 包裹

建议修复方向:

  1. Dashboard 统计独立于 AlertRecord 开关,使用独立的计数器或单独的统计表
  2. 或恢复 ChartsJson 到 Dashboard 模板的传递,作为实时统计的数据源

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions