diff --git a/pkg/monitor/alerting/notifiers/onecloud.go b/pkg/monitor/alerting/notifiers/onecloud.go index 1f2bc70f6b..ebc873c8bf 100644 --- a/pkg/monitor/alerting/notifiers/onecloud.go +++ b/pkg/monitor/alerting/notifiers/onecloud.go @@ -413,9 +413,18 @@ func (oc *OneCloudNotifier) newMeterRemoteMobileContent(config *monitor.Notifica typ = "预算" config.Title = MOBILE_DEFAULT_TOPIC_CN } - customizeConfig := new(monitor.MeterCustomizeConfig) - evalCtx.Rule.CustomizeConfig.Unmarshal(customizeConfig) - return mobileContent(customizeConfig.Name, typ) + var name string + if evalCtx.Rule.CustomizeConfig != nil { + customizeConfig := new(monitor.MeterCustomizeConfig) + if err := evalCtx.Rule.CustomizeConfig.Unmarshal(customizeConfig); err == nil { + name = customizeConfig.Name + } + } + // 兼容旧数据:如果 CustomizeConfig 为 nil 或解析失败,使用 Rule.Name 作为后备值 + if name == "" { + name = evalCtx.Rule.Name + } + return mobileContent(name, typ) } func GetUserLangIdsMap(ids []string) (map[string][]string, error) { diff --git a/pkg/monitor/models/meteralert.go b/pkg/monitor/models/meteralert.go index 2f0a1cce10..ff23f509bf 100644 --- a/pkg/monitor/models/meteralert.go +++ b/pkg/monitor/models/meteralert.go @@ -202,10 +202,14 @@ func (f *sMeterDailyFee) ToAlertCreateInput( level string, ) monitor.AlertCreateInput { freq, _ := time.ParseDuration(input.Window) + customizeConfig := monitor.MeterCustomizeConfig{ + Name: f.GetName(), + } ret := monitor.AlertCreateInput{ - Name: f.GetName(), - Level: level, - Frequency: int64(freq / time.Second), + Name: f.GetName(), + Level: level, + Frequency: int64(freq / time.Second), + CustomizeConfig: jsonutils.Marshal(customizeConfig), Settings: GetMeterAlertSetting(input, "account_daily_resfee", "meter_db", allAccountIds, "sumDate"), @@ -233,10 +237,14 @@ func (f *sMeterMonthFee) ToAlertCreateInput( level string, ) monitor.AlertCreateInput { freq, _ := time.ParseDuration(input.Window) + customizeConfig := monitor.MeterCustomizeConfig{ + Name: f.GetName(), + } ret := monitor.AlertCreateInput{ - Name: f.GetName(), - Level: level, - Frequency: int64(freq / time.Second), + Name: f.GetName(), + Level: level, + Frequency: int64(freq / time.Second), + CustomizeConfig: jsonutils.Marshal(customizeConfig), Settings: GetMeterAlertSetting(input, "account_month_resfee", "meter_db", allAccountIds, "sumMonth"),