@@ -394,9 +394,6 @@ func UpdateTrafficStats(serverID uint64, inTransfer, outTransfer uint64) {
394394 return
395395 }
396396
397- // 流量总计
398- totalTransfer := inTransfer + outTransfer
399-
400397 // 遍历所有报警规则,只更新包含此服务器的规则
401398 for _ , alert := range Alerts {
402399 if ! alert .Enabled () {
@@ -425,9 +422,25 @@ func UpdateTrafficStats(serverID uint64, inTransfer, outTransfer uint64) {
425422 }
426423 }
427424
428- // 服务器在规则监控范围内,更新流量数据
425+ // 服务器在规则监控范围内,根据规则类型更新相应的流量数据
426+ var transferValue uint64
427+ switch alert .Rules [j ].Type {
428+ case "transfer_in_cycle" :
429+ // 只计算入站流量
430+ transferValue = inTransfer
431+ case "transfer_out_cycle" :
432+ // 只计算出站流量
433+ transferValue = outTransfer
434+ case "transfer_all_cycle" :
435+ // 计算总流量
436+ transferValue = inTransfer + outTransfer
437+ default :
438+ // 默认使用总流量(向后兼容)
439+ transferValue = inTransfer + outTransfer
440+ }
441+
429442 // 不论大小如何,总是更新最新值
430- stats .Transfer [serverID ] = totalTransfer
443+ stats .Transfer [serverID ] = transferValue
431444
432445 // 更新服务器名称
433446 if serverName != "" {
@@ -452,7 +465,7 @@ func UpdateTrafficStats(serverID uint64, inTransfer, outTransfer uint64) {
452465 serverCopy .Host = server .Host
453466 }
454467 ServerLock .RUnlock ()
455- checkTrafficThresholds (alert , serverCopy , & alert .Rules [j ], totalTransfer )
468+ checkTrafficThresholds (alert , serverCopy , & alert .Rules [j ], transferValue )
456469 } else {
457470 ServerLock .RUnlock ()
458471 }
0 commit comments