summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorunknown <[email protected]>2023-09-07 18:20:02 +0800
committerunknown <[email protected]>2023-09-07 18:20:02 +0800
commitc8a2a6b627735a6edfb12000cf71611d8e6f02fd (patch)
tree7ae7730392bbdafb5cffb2a7ded43efcb8c54ced
parent24d70f690e2d1462aeb4386c0be079542262aee8 (diff)
TSG-16920 修复自定义静态阈值满足任意阈值条件均产生告警tsg-23.09
-rw-r--r--src/main/java/com/zdjizhi/etl/DosDetection.java43
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) {