diff options
| author | unknown <[email protected]> | 2023-09-07 18:20:02 +0800 |
|---|---|---|
| committer | unknown <[email protected]> | 2023-09-07 18:20:02 +0800 |
| commit | c8a2a6b627735a6edfb12000cf71611d8e6f02fd (patch) | |
| tree | 7ae7730392bbdafb5cffb2a7ded43efcb8c54ced | |
| parent | 24d70f690e2d1462aeb4386c0be079542262aee8 (diff) | |
TSG-16920 修复自定义静态阈值满足任意阈值条件均产生告警tsg-23.09
| -rw-r--r-- | src/main/java/com/zdjizhi/etl/DosDetection.java | 43 |
1 files changed, 23 insertions, 20 deletions
diff --git a/src/main/java/com/zdjizhi/etl/DosDetection.java b/src/main/java/com/zdjizhi/etl/DosDetection.java index 74c4bdf..c8d68d1 100644 --- a/src/main/java/com/zdjizhi/etl/DosDetection.java +++ b/src/main/java/com/zdjizhi/etl/DosDetection.java @@ -131,9 +131,22 @@ public class DosDetection extends BroadcastProcessFunction<DosSketchLog,Map<Stri long diffPkt = value.getSketch_packets() - pktBase; long diffByte = value.getSketch_bytes() - bitBase; - Double diffSessionPercent = getDiffPercent(diffSession, sessionBase)*100; - Double diffPktPercent = getDiffPercent(diffPkt, pktBase)*100; - Double diffBitPercent = getDiffPercent(diffByte, bitBase)*100; +// Double diffSessionPercent = getDiffPercent(diffSession, sessionBase)*100; +// Double diffPktPercent = getDiffPercent(diffPkt, pktBase)*100; +// Double diffBitPercent = getDiffPercent(diffByte, bitBase)*100; + + double diffSessionPercent=0.0; + double diffPktPercent=0.0; + double diffBitPercent=0.0; + if (sessionBase != 0 && sessionBase > 0){ + diffSessionPercent = getDiffPercent(diffSession, sessionBase)*100; + } + else if (pktBase != 0 && pktBase > 0){ + diffPktPercent = getDiffPercent(diffPkt, pktBase)*100; + } + else if (bitBase != 0 && bitBase > 0){ + diffBitPercent = getDiffPercent(diffByte, bitBase)*100; + } long profileId = 0; DosEventLog result =null; @@ -148,22 +161,6 @@ public class DosDetection extends BroadcastProcessFunction<DosSketchLog,Map<Stri profileId = threshold.getProfileId(); result = getDosEventLog(value, bitBase, diffByte, profileId, STATIC_CONDITION_TYPE, BITS_TAG); } - - /* - ArrayList<DosEventLog> dosEventLogs = new ArrayList<>(); - if (result != null){ - dosEventLogs.add(result); - Integer[] superiorIds = threshold.getSuperiorIds(); - if (superiorIds != null && superiorIds.length > 0){ - for (Integer integer:superiorIds){ - DosEventLog clone = (DosEventLog) result.clone(); - clone.setVsys_id(integer); - clone.setLog_id(SnowflakeId.generateId()); - dosEventLogs.add(clone); - } - } - } - */ return result; } @@ -316,7 +313,13 @@ public class DosDetection extends BroadcastProcessFunction<DosSketchLog,Map<Stri } private Double getDiffPercent(long diff, long base) { - return BigDecimal.valueOf((float) diff / base).setScale(4, BigDecimal.ROUND_HALF_UP).doubleValue(); + try { + return BigDecimal.valueOf((float) diff / base).setScale(4, BigDecimal.ROUND_HALF_UP).doubleValue(); + }catch (Exception e){ + logger.info("当前阈值为0,进行下一阈值条件判断",e); + return 0.0; + } + } private Severity judgeSeverity(double diffPercent) { |
