@@ -1638,7 +1638,7 @@ func validateMonitorData() {
16381638 log .Println ("开始验证监控配置数据完整性..." )
16391639
16401640 if ServiceSentinelShared == nil {
1641- log .Println ("ServiceSentinel未初始化 ,跳过监控数据验证" )
1641+ log .Println ("ServiceSentinel正在异步初始化中 ,跳过监控数据验证" )
16421642 return
16431643 }
16441644
@@ -1701,8 +1701,32 @@ func validateAlertRuleData() {
17011701 log .Printf ("警告:报警规则 %s (ID:%d) 的第 %d 个子规则缺少类型" , alert .Name , alert .ID , i + 1 )
17021702 invalidCount ++
17031703 }
1704- if rule .Max <= 0 && ! rule .IsTransferDurationRule () {
1705- log .Printf ("警告:报警规则 %s (ID:%d) 的第 %d 个子规则阈值不合理" , alert .Name , alert .ID , i + 1 )
1704+
1705+ // 检查阈值合理性 - 不同类型有不同的阈值字段
1706+ hasValidThreshold := false
1707+ switch rule .Type {
1708+ case "offline" :
1709+ // offline类型不需要max/min阈值,只需要duration
1710+ hasValidThreshold = rule .Duration > 0
1711+ case "cpu" , "memory" , "swap" , "disk" :
1712+ // 系统资源类型需要max或min阈值
1713+ hasValidThreshold = rule .Max > 0 || rule .Min > 0
1714+ case "load1" , "load5" , "load15" :
1715+ // 负载类型需要max阈值
1716+ hasValidThreshold = rule .Max > 0
1717+ case "process_count" :
1718+ // 进程数量类型需要max或min阈值
1719+ hasValidThreshold = rule .Max > 0 || rule .Min > 0
1720+ case "transfer_in" , "transfer_out" , "transfer_total" :
1721+ // 流量类型需要max阈值
1722+ hasValidThreshold = rule .Max > 0
1723+ default :
1724+ // 其他类型默认检查max
1725+ hasValidThreshold = rule .Max > 0
1726+ }
1727+
1728+ if ! hasValidThreshold {
1729+ log .Printf ("警告:报警规则 %s (ID:%d) 的第 %d 个子规则(%s)阈值不合理" , alert .Name , alert .ID , i + 1 , rule .Type )
17061730 invalidCount ++
17071731 }
17081732 }
0 commit comments