diff --git a/pom.xml b/pom.xml
index 7ee04ac..c55ca23 100644
--- a/pom.xml
+++ b/pom.xml
@@ -6,9 +6,14 @@
com.zdjizhi
flink-dos-detection
- 1.0-SNAPSHOT
+ 23.11
+
+ flink-dos-detection
+ http://www.example.com
+
+ 1.2.1
1.13.1
2.1.1
2.7.1
@@ -152,7 +157,6 @@
org.apache.flink
flink-connector-kafka_2.12
${flink.version}
-
@@ -160,7 +164,7 @@
org.apache.flink
flink-clients_2.12
${flink.version}
-
+ provided
org.apache.hadoop
@@ -203,7 +207,7 @@
org.apache.hbase
hbase-client
2.2.3
-
+ provided
slf4j-log4j12
@@ -258,26 +262,6 @@
5.3.3
-
- com.zdjizhi
- galaxy
- 1.1.3
-
-
- slf4j-log4j12
- org.slf4j
-
-
- log4j-over-slf4j
- org.slf4j
-
-
- com.google.guava
- guava
-
-
-
-
com.alibaba.fastjson2
@@ -354,6 +338,12 @@
+
+
+ com.geedgenetworks
+ galaxy
+ ${galaxy.tools.version}
+
diff --git a/src/main/java/com/zdjizhi/common/CustomFile.java b/src/main/java/com/zdjizhi/common/CustomFile.java
deleted file mode 100644
index 701024c..0000000
--- a/src/main/java/com/zdjizhi/common/CustomFile.java
+++ /dev/null
@@ -1,26 +0,0 @@
-package com.zdjizhi.common;
-
-import java.io.Serializable;
-
-public class CustomFile implements Serializable {
-
- String fileName;
-
- byte[] content;
-
- public String getFileName() {
- return fileName;
- }
-
- public void setFileName(String fileName) {
- this.fileName = fileName;
- }
-
- public byte[] getContent() {
- return content;
- }
-
- public void setContent(byte[] content) {
- this.content = content;
- }
-}
diff --git a/src/main/java/com/zdjizhi/common/DosDetectionThreshold.java b/src/main/java/com/zdjizhi/common/DosDetectionThreshold.java
index 401673a..dc0825b 100644
--- a/src/main/java/com/zdjizhi/common/DosDetectionThreshold.java
+++ b/src/main/java/com/zdjizhi/common/DosDetectionThreshold.java
@@ -9,110 +9,110 @@ import java.util.Objects;
* @author wlh
*/
public class DosDetectionThreshold implements Serializable {
- private long profileId;
- private String attackType;
- private ArrayList serverIpList;
- private String serverIpAddr;
- private long packetsPerSec;
- private long bitsPerSec;
- private long sessionsPerSec;
- private int isValid;
- private int vsysId;
- private Integer[] superiorIds;
+ private long profile_id;
+ private String attack_type;
+ private ArrayList server_ip_list;
+ private String server_ip_addr;
+ private long packets_per_sec;
+ private long bits_per_sec;
+ private long sessions_per_sec;
+ private int is_valid;
+ private int vsys_id;
+ private Integer[] superior_ids;
- public long getProfileId() {
- return profileId;
+ public long getProfile_id() {
+ return profile_id;
}
- public void setProfileId(long profileId) {
- this.profileId = profileId;
+ public void setProfile_id(long profile_id) {
+ this.profile_id = profile_id;
}
- public String getAttackType() {
- return attackType;
+ public String getAttack_type() {
+ return attack_type;
}
- public void setAttackType(String attackType) {
- this.attackType = attackType;
+ public void setAttack_type(String attack_type) {
+ this.attack_type = attack_type;
}
- public ArrayList getServerIpList() {
- return serverIpList;
+ public ArrayList getServer_ip_list() {
+ return server_ip_list;
}
- public void setServerIpList(ArrayList serverIpList) {
- this.serverIpList = serverIpList;
+ public void setServer_ip_list(ArrayList server_ip_list) {
+ this.server_ip_list = server_ip_list;
}
- public String getServerIpAddr() {
- return serverIpAddr;
+ public String getServer_ip_addr() {
+ return server_ip_addr;
}
- public void setServerIpAddr(String serverIpAddr) {
- this.serverIpAddr = serverIpAddr;
+ public void setServer_ip_addr(String server_ip_addr) {
+ this.server_ip_addr = server_ip_addr;
}
- public long getPacketsPerSec() {
- return packetsPerSec;
+ public long getPackets_per_sec() {
+ return packets_per_sec;
}
- public void setPacketsPerSec(long packetsPerSec) {
- this.packetsPerSec = packetsPerSec;
+ public void setPackets_per_sec(long packets_per_sec) {
+ this.packets_per_sec = packets_per_sec;
}
- public long getBitsPerSec() {
- return bitsPerSec;
+ public long getBits_per_sec() {
+ return bits_per_sec;
}
- public void setBitsPerSec(long bitsPerSec) {
- this.bitsPerSec = bitsPerSec;
+ public void setBits_per_sec(long bits_per_sec) {
+ this.bits_per_sec = bits_per_sec;
}
- public long getSessionsPerSec() {
- return sessionsPerSec;
+ public long getSessions_per_sec() {
+ return sessions_per_sec;
}
- public void setSessionsPerSec(long sessionsPerSec) {
- this.sessionsPerSec = sessionsPerSec;
+ public void setSessions_per_sec(long sessions_per_sec) {
+ this.sessions_per_sec = sessions_per_sec;
}
- public int getIsValid() {
- return isValid;
+ public int getIs_valid() {
+ return is_valid;
}
- public void setIsValid(int isValid) {
- this.isValid = isValid;
+ public void setIs_valid(int is_valid) {
+ this.is_valid = is_valid;
}
- public int getVsysId() {
- return vsysId;
+ public int getVsys_id() {
+ return vsys_id;
}
- public void setVsysId(int vsysId) {
- this.vsysId = vsysId;
+ public void setVsys_id(int vsys_id) {
+ this.vsys_id = vsys_id;
}
- public Integer[] getSuperiorIds() {
- return superiorIds;
+ public Integer[] getSuperior_ids() {
+ return superior_ids;
}
- public void setSuperiorIds(Integer[] superiorIds) {
- this.superiorIds = superiorIds;
+ public void setSuperior_ids(Integer[] superior_ids) {
+ this.superior_ids = superior_ids;
}
@Override
public String toString() {
return "DosDetectionThreshold{" +
- "profileId='" + profileId + '\'' +
- ", attackType='" + attackType + '\'' +
- ", serverIpList=" + serverIpList +
- ", serverIpAddr='" + serverIpAddr + '\'' +
- ", packetsPerSec=" + packetsPerSec +
- ", bitsPerSec=" + bitsPerSec +
- ", sessionsPerSec=" + sessionsPerSec +
- ", isValid=" + isValid +
- ", vsysId=" + vsysId +
- ", superiorIds=" + Arrays.toString(superiorIds) +
+ "profile_id=" + profile_id +
+ ", attack_type='" + attack_type + '\'' +
+ ", server_ip_list=" + server_ip_list +
+ ", server_ip_addr='" + server_ip_addr + '\'' +
+ ", packets_per_sec=" + packets_per_sec +
+ ", bits_per_sec=" + bits_per_sec +
+ ", sessions_per_sec=" + sessions_per_sec +
+ ", is_valid=" + is_valid +
+ ", vsys_id=" + vsys_id +
+ ", superior_ids=" + Arrays.toString(superior_ids) +
'}';
}
}
diff --git a/src/main/java/com/zdjizhi/common/DosVsysId.java b/src/main/java/com/zdjizhi/common/DosVsysId.java
index 0369f69..b5465f2 100644
--- a/src/main/java/com/zdjizhi/common/DosVsysId.java
+++ b/src/main/java/com/zdjizhi/common/DosVsysId.java
@@ -4,7 +4,7 @@ import java.util.Arrays;
public class DosVsysId {
private Integer id;
- private Integer[] superiorIds;
+ private Integer[] superior_ids;
public Integer getId() {
return id;
@@ -14,19 +14,19 @@ public class DosVsysId {
this.id = id;
}
- public Integer[] getSuperiorIds() {
- return superiorIds;
+ public Integer[] getSuperior_ids() {
+ return superior_ids;
}
- public void setSuperiorIds(Integer[] superiorIds) {
- this.superiorIds = superiorIds;
+ public void setSuperior_ids(Integer[] superior_ids) {
+ this.superior_ids = superior_ids;
}
@Override
public String toString() {
return "DosVsysId{" +
"id=" + id +
- ", superiorIds=" + Arrays.toString(superiorIds) +
+ ", superior_ids=" + Arrays.toString(superior_ids) +
'}';
}
}
diff --git a/src/main/java/com/zdjizhi/common/CommonConfig.java b/src/main/java/com/zdjizhi/common/FlowWriteConfig.java
similarity index 72%
rename from src/main/java/com/zdjizhi/common/CommonConfig.java
rename to src/main/java/com/zdjizhi/common/FlowWriteConfig.java
index 9bb50c6..a93496f 100644
--- a/src/main/java/com/zdjizhi/common/CommonConfig.java
+++ b/src/main/java/com/zdjizhi/common/FlowWriteConfig.java
@@ -7,12 +7,11 @@ import org.jasypt.encryption.pbe.StandardPBEStringEncryptor;
* @author wlh
* @date 2021/1/6
*/
-public class CommonConfig {
+public class FlowWriteConfig {
/**
* 定位库默认分隔符
*/
- public static final String LOCATION_SEPARATOR = ".";
private static StandardPBEStringEncryptor encryptor = new StandardPBEStringEncryptor();
@@ -51,7 +50,6 @@ public class CommonConfig {
public static final int DESTINATION_IP_PARTITION_NUM = CommonConfigurations.getIntProperty("destination.ip.partition.num");
public static final int DATA_CENTER_ID_NUM = CommonConfigurations.getIntProperty("data.center.id.num");
- public static final String IP_MMDB_PATH = CommonConfigurations.getStringProperty("ip.mmdb.path");
public static final String BIFANG_SERVER_URI = CommonConfigurations.getStringProperty("bifang.server.uri");
public static final String BIFANG_SERVER_ENCRYPTPWD_PATH = CommonConfigurations.getStringProperty("bifang.server.encryptpwd.path");
@@ -74,37 +72,20 @@ public class CommonConfig {
public static final int SASL_JAAS_CONFIG_FLAG = CommonConfigurations.getIntProperty("sasl.jaas.config.flag");
- public static final String NACOS_SERVER_ADDR = CommonConfigurations.getStringProperty("nacos.server.addr");
+ public static final String NACOS_SERVER = CommonConfigurations.getStringProperty("nacos.server.addr");
public static final String NACOS_USERNAME = CommonConfigurations.getStringProperty("nacos.username");
- public static final String NACOS_PASSWORD = CommonConfigurations.getStringProperty("nacos.password");
- public static final String NACOS_NAMESPACE = CommonConfigurations.getStringProperty("nacos.namespace");
- public static final String NACOS_DATA_ID = CommonConfigurations.getStringProperty("nacos.data.id");
- public static final String NACOS_GROUP = CommonConfigurations.getStringProperty("nacos.group");
- public static final int NACOS_READ_TIMEOUT = CommonConfigurations.getIntProperty("nacos.read.timeout");
+ public static final String NACOS_PIN = CommonConfigurations.getStringProperty("nacos.password");
+ public static final String NACOS_PUBLIC_NAMESPACE = CommonConfigurations.getStringProperty("nacos.namespace");
+ public static final String NACOS_KNOWLEDGEBASE_DATA_ID = CommonConfigurations.getStringProperty("nacos.data.id");
+ public static final String NACOS_PUBLIC_GROUP = CommonConfigurations.getStringProperty("nacos.group");
+ public static final Integer NACOS_CONNECTION_TIMEOUT = CommonConfigurations.getIntProperty("nacos.connection.timeout");
- public static final String HOS_TOKEN = CommonConfigurations.getStringProperty("hos.token");
- public static final String CLUSTER_OR_SINGLE = CommonConfigurations.getStringProperty("cluster.or.single");
+ public static final String NACOS_DOS_NAMESPACE = CommonConfigurations.getStringProperty("nacos.dos.namespace");
+ public static final String NACOS_DOS_DATA_ID = CommonConfigurations.getStringProperty("nacos.dos.data.id");
+ public static final String NACOS_DOS_GROUP = CommonConfigurations.getStringProperty("nacos.dos.group");
- public static final String HDFS_URI_NS1 = CommonConfigurations.getStringProperty("hdfs.uri.nn1");
- public static final String HDFS_URI_NS2 = CommonConfigurations.getStringProperty("hdfs.uri.nn2");
- public static final String HDFS_PATH = CommonConfigurations.getStringProperty("hdfs.path");
- public static final String HDFS_USER = CommonConfigurations.getStringProperty("hdfs.user");
+ public static final Integer HTTP_SOCKET_TIMEOUT = CommonConfigurations.getIntProperty("http.socket.timeout");
- public static final String DOWNLOAD_PATH = CommonConfigurations.getStringProperty("download.path");
-
- public static void main(String[] args) {
- StandardPBEStringEncryptor encryptor = new StandardPBEStringEncryptor();
- // 配置加密解密的密码/salt值
- encryptor.setPassword("galaxy");
- // 对"raw_password"进行加密:S5kR+Y7CI8k7MaecZpde25yK8NKUnd6p
-// String password = "galaxy2019";
- String password = "nacos";
- String encPwd = encryptor.encrypt(password);
- System.out.println(encPwd);
- // 再进行解密:raw_password
- String rawPwd = encryptor.decrypt(encPwd);
- System.out.println(rawPwd);
- }
}
diff --git a/src/main/java/com/zdjizhi/common/KnowledgeLog.java b/src/main/java/com/zdjizhi/common/pojo/KnowlegeBaseMeta.java
similarity index 52%
rename from src/main/java/com/zdjizhi/common/KnowledgeLog.java
rename to src/main/java/com/zdjizhi/common/pojo/KnowlegeBaseMeta.java
index d72f7df..1701367 100644
--- a/src/main/java/com/zdjizhi/common/KnowledgeLog.java
+++ b/src/main/java/com/zdjizhi/common/pojo/KnowlegeBaseMeta.java
@@ -1,14 +1,24 @@
-package com.zdjizhi.common;
+package com.zdjizhi.common.pojo;
-public class KnowledgeLog {
- public String id;
- public String name;
- public String path;
- public Long size;
- public String format;
- public String sha256;
- public String version;
- public String updateTime;
+import java.io.Serializable;
+
+/**
+ *
+ */
+public class KnowlegeBaseMeta implements Serializable {
+ private String id;
+ private String name;
+ private String sha256;
+ private String format;
+ private String path;
+
+ public KnowlegeBaseMeta(String id, String name, String sha256, String format, String path) {
+ this.id = id;
+ this.name = name;
+ this.sha256 = sha256;
+ this.format = format;
+ this.path = path;
+ }
public String getId() {
return id;
@@ -26,20 +36,12 @@ public class KnowledgeLog {
this.name = name;
}
- public String getPath() {
- return path;
+ public String getSha256() {
+ return sha256;
}
- public void setPath(String path) {
- this.path = path;
- }
-
- public Long getSize() {
- return size;
- }
-
- public void setSize(Long size) {
- this.size = size;
+ public void setSha256(String sha256) {
+ this.sha256 = sha256;
}
public String getFormat() {
@@ -50,42 +52,23 @@ public class KnowledgeLog {
this.format = format;
}
- public String getSha256() {
- return sha256;
+ public String getPath() {
+ return path;
}
- public void setSha256(String sha256) {
- this.sha256 = sha256;
+ public void setPath(String path) {
+ this.path = path;
}
- public String getVersion() {
- return version;
- }
-
- public void setVersion(String version) {
- this.version = version;
- }
-
- public String getUpdateTime() {
- return updateTime;
- }
-
- public void setUpdateTime(String updateTime) {
- this.updateTime = updateTime;
- }
-
-
@Override
public String toString() {
- return "KnowledgeLog{" +
+ return "KnowlegeBaseMeta{" +
"id='" + id + '\'' +
", name='" + name + '\'' +
- ", path='" + path + '\'' +
- ", size=" + size +
- ", format='" + format + '\'' +
", sha256='" + sha256 + '\'' +
- ", version='" + version + '\'' +
- ", updateTime='" + updateTime + '\'' +
+ ", format='" + format + '\'' +
+ ", path='" + path + '\'' +
'}';
}
}
+
diff --git a/src/main/java/com/zdjizhi/etl/DosDetection.java b/src/main/java/com/zdjizhi/etl/DosDetection.java
index c8d68d1..87cb76a 100644
--- a/src/main/java/com/zdjizhi/etl/DosDetection.java
+++ b/src/main/java/com/zdjizhi/etl/DosDetection.java
@@ -1,17 +1,19 @@
package com.zdjizhi.etl;
-import cn.hutool.core.math.MathUtil;
import cn.hutool.log.Log;
import cn.hutool.log.LogFactory;
+import com.geedgenetworks.utils.DateUtils;
+import com.geedgenetworks.utils.StringUtil;
import com.zdjizhi.common.*;
import com.zdjizhi.utils.*;
+import com.zdjizhi.utils.connections.nacos.NacosUtils;
import inet.ipaddr.IPAddress;
import inet.ipaddr.IPAddressString;
import org.apache.commons.lang3.StringUtils;
import org.apache.commons.lang3.concurrent.BasicThreadFactory;
import org.apache.flink.configuration.Configuration;
import org.apache.flink.shaded.guava18.com.google.common.collect.TreeRangeMap;
-import org.apache.flink.streaming.api.functions.co.BroadcastProcessFunction;
+import org.apache.flink.streaming.api.functions.ProcessFunction;
import org.apache.flink.util.Collector;
import java.math.BigDecimal;
@@ -24,12 +26,12 @@ import java.util.concurrent.TimeUnit;
/**
* @author wlh
*/
-public class DosDetection extends BroadcastProcessFunction, DosEventLog> {
+public class DosDetection extends ProcessFunction {
private static final Log logger = LogFactory.get();
private static Map> baselineMap = new HashMap<>();
private final static NumberFormat PERCENT_INSTANCE = NumberFormat.getPercentInstance();
- private HashMap>> thresholdRangeMap;
+ private HashMap>> thresholdRangeMap;
private final static int BASELINE_SIZE = 144;
private final static int STATIC_CONDITION_TYPE = 1;
@@ -42,22 +44,20 @@ public class DosDetection extends BroadcastProcessFunction thresholdRangeMap = ParseStaticThreshold.createStaticThreshold(), 0,
- CommonConfig.STATIC_THRESHOLD_SCHEDULE_MINUTES, TimeUnit.MINUTES);
+ FlowWriteConfig.STATIC_THRESHOLD_SCHEDULE_MINUTES, TimeUnit.MINUTES);
executorService.scheduleAtFixedRate(() -> baselineMap = ParseBaselineThreshold.readFromHbase(), 0,
- CommonConfig.BASELINE_THRESHOLD_SCHEDULE_DAYS, TimeUnit.DAYS);
+ FlowWriteConfig.BASELINE_THRESHOLD_SCHEDULE_DAYS, TimeUnit.DAYS);
} catch (Exception e) {
logger.error("定时器任务执行失败", e);
}
@@ -65,7 +65,7 @@ public class DosDetection extends BroadcastProcessFunction out) {
+ public void processElement(DosSketchLog value, Context ctx, Collector out) throws Exception {
DosEventLog finalResult = null;
try {
String destinationIp = value.getDestination_ip();
@@ -75,13 +75,13 @@ public class DosDetection extends BroadcastProcessFunction value, Context ctx, Collector out) throws Exception {
- if (!value.isEmpty()){
- IpUtils.updateIpLook(value);
- }
- }
private DosEventLog getDosEventLogBySensitivityThreshold(DosSketchLog value) {
long sketchSessions = value.getSketch_sessions();
Integer staticSensitivityThreshold = NacosUtils.getIntProperty("static.sensitivity.threshold");
long diff = sketchSessions - staticSensitivityThreshold;
- return getDosEventLog(value, staticSensitivityThreshold, diff,0, SENSITIVITY_CONDITION_TYPE, SESSIONS_TAG);
+ return getDosEventLog(value, staticSensitivityThreshold, diff, 0, SENSITIVITY_CONDITION_TYPE, SESSIONS_TAG);
}
- private DosEventLog getDosEventLogByBaseline(DosSketchLog value,String key) {
+ private DosEventLog getDosEventLogByBaseline(DosSketchLog value, String key) {
String attackType = value.getAttack_type();
long sketchSessions = value.getSketch_sessions();
DosBaselineThreshold dosBaselineThreshold = baselineMap.get(key).get(attackType);
Integer base = getBaseValue(dosBaselineThreshold, value);
long diff = sketchSessions - base;
- return getDosEventLog(value, base, diff, 0,BASELINE_CONDITION_TYPE, SESSIONS_TAG);
+ return getDosEventLog(value, base, diff, 0, BASELINE_CONDITION_TYPE, SESSIONS_TAG);
}
private DosEventLog getDosEventLogByStaticThreshold(DosSketchLog value, DosDetectionThreshold threshold) throws CloneNotSupportedException {
- long sessionBase = threshold.getSessionsPerSec();
- long pktBase=threshold.getPacketsPerSec();
- long bitBase=threshold.getBitsPerSec();
+ long sessionBase = threshold.getSessions_per_sec();
+ long pktBase = threshold.getPackets_per_sec();
+ long bitBase = threshold.getBits_per_sec();
long diffSession = value.getSketch_sessions() - sessionBase;
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=0.0;
- double diffPktPercent=0.0;
- double diffBitPercent=0.0;
- if (sessionBase != 0 && sessionBase > 0){
- diffSessionPercent = getDiffPercent(diffSession, sessionBase)*100;
+ double diffSessionPercent = 0.0;
+ double diffPktPercent = 0.0;
+ double diffBitPercent = 0.0;
+ //todo 代码Review发现该部分存在bug,23.11版本做修复,需测试。
+ if (sessionBase > 0) {
+ diffSessionPercent = getDiffPercent(diffSession, sessionBase) * 100;
}
- else if (pktBase != 0 && pktBase > 0){
- diffPktPercent = getDiffPercent(diffPkt, pktBase)*100;
+ if (pktBase > 0) {
+ diffPktPercent = getDiffPercent(diffPkt, pktBase) * 100;
}
- else if (bitBase != 0 && bitBase > 0){
- diffBitPercent = getDiffPercent(diffByte, bitBase)*100;
+ if (bitBase > 0) {
+ diffBitPercent = getDiffPercent(diffByte, bitBase) * 100;
}
long profileId = 0;
- DosEventLog result =null;
+ DosEventLog result = null;
- if (diffSessionPercent >= diffPktPercent && diffSessionPercent >= diffBitPercent){
- profileId = threshold.getProfileId();
- result= getDosEventLog(value, sessionBase, diffSession, profileId, STATIC_CONDITION_TYPE, SESSIONS_TAG);
- }else if (diffPktPercent >= diffSessionPercent && diffPktPercent >= diffBitPercent){
- profileId = threshold.getProfileId();
- result = getDosEventLog(value, pktBase, diffPkt,profileId, STATIC_CONDITION_TYPE, PACKETS_TAG);
- }else if (diffBitPercent >= diffPktPercent && diffBitPercent >= diffSessionPercent){
- profileId = threshold.getProfileId();
+ if (diffSessionPercent >= diffPktPercent && diffSessionPercent >= diffBitPercent) {
+ profileId = threshold.getProfile_id();
+ result = getDosEventLog(value, sessionBase, diffSession, profileId, STATIC_CONDITION_TYPE, SESSIONS_TAG);
+ } else if (diffPktPercent >= diffSessionPercent && diffPktPercent >= diffBitPercent) {
+ profileId = threshold.getProfile_id();
+ result = getDosEventLog(value, pktBase, diffPkt, profileId, STATIC_CONDITION_TYPE, PACKETS_TAG);
+ } else if (diffBitPercent >= diffPktPercent && diffBitPercent >= diffSessionPercent) {
+ profileId = threshold.getProfile_id();
result = getDosEventLog(value, bitBase, diffByte, profileId, STATIC_CONDITION_TYPE, BITS_TAG);
}
return result;
@@ -175,15 +166,15 @@ public class DosDetection extends BroadcastProcessFunction " +
base + " " +
- tag + "/s" + "(>"+condition+"%)";
+ tag + "/s" + "(>" + condition + "%)";
case BASELINE_CONDITION_TYPE:
return tag + " > " +
percent + " of baseline";
@@ -276,8 +267,8 @@ public class DosDetection extends BroadcastProcessFunction countrySet = new HashSet<>();
for (String ip : ipArr) {
- String country = IpUtils.ipLookup.countryLookup(ip);
- if (StringUtil.isNotBlank(country)){
+ String country = IpLookupUtils.getCountryLookup(ip);
+ if (StringUtil.isNotBlank(country)) {
countrySet.add(country);
}
}
@@ -304,19 +295,13 @@ public class DosDetection extends BroadcastProcessFunction endTime ? newSketchLog.getSketch_start_time() : endTime;
duration = endTime - startTime == 0 ? 5 : endTime - startTime;
}else {
- if (sourceIpSet.size() < CommonConfig.SOURCE_IP_LIST_LIMIT){
+ if (sourceIpSet.size() < FlowWriteConfig.SOURCE_IP_LIST_LIMIT){
sourceIpSet.add(sourceIp);
}
}
}
String sourceIpList = StringUtils.join(sourceIpSet, ",");
- return Tuple6.of(sessions/CommonConfig.FLINK_WINDOW_MAX_TIME,packets/CommonConfig.FLINK_WINDOW_MAX_TIME,
- bytes*8/CommonConfig.FLINK_WINDOW_MAX_TIME,sourceIpList,startTime,duration);
+ return Tuple6.of(sessions/ FlowWriteConfig.FLINK_WINDOW_MAX_TIME,packets/ FlowWriteConfig.FLINK_WINDOW_MAX_TIME,
+ bytes*8/ FlowWriteConfig.FLINK_WINDOW_MAX_TIME,sourceIpList,startTime,duration);
}catch (Exception e){
logger.error("聚合中间结果集失败 {}",e);
}
diff --git a/src/main/java/com/zdjizhi/etl/ParseBaselineThreshold.java b/src/main/java/com/zdjizhi/etl/ParseBaselineThreshold.java
index dc37bdf..8d5b9ca 100644
--- a/src/main/java/com/zdjizhi/etl/ParseBaselineThreshold.java
+++ b/src/main/java/com/zdjizhi/etl/ParseBaselineThreshold.java
@@ -2,9 +2,9 @@ package com.zdjizhi.etl;
import cn.hutool.log.Log;
import cn.hutool.log.LogFactory;
-import com.zdjizhi.common.CommonConfig;
+import com.geedgenetworks.utils.DateUtils;
+import com.zdjizhi.common.FlowWriteConfig;
import com.zdjizhi.common.DosBaselineThreshold;
-import com.zdjizhi.utils.DateUtils;
import com.zdjizhi.utils.HbaseUtils;
import org.apache.hadoop.hbase.HBaseConfiguration;
import org.apache.hadoop.hbase.HConstants;
@@ -17,7 +17,7 @@ import java.util.*;
public class ParseBaselineThreshold {
-// private static final Logger logger = LoggerFactory.getLogger(ParseBaselineThreshold.class);
+
private static final Log logger = LogFactory.get();
private static ArrayList floodTypeList = new ArrayList<>();
@@ -34,23 +34,23 @@ public class ParseBaselineThreshold {
private static void prepareHbaseEnv() throws IOException {
org.apache.hadoop.conf.Configuration config = HBaseConfiguration.create();
- config.set("hbase.zookeeper.quorum", CommonConfig.HBASE_ZOOKEEPER_QUORUM);
+ config.set("hbase.zookeeper.quorum", FlowWriteConfig.HBASE_ZOOKEEPER_QUORUM);
config.set("hbase.client.retries.number", "3");
config.set("hbase.bulkload.retries.number", "3");
config.set("zookeeper.recovery.retry", "3");
config.set("hbase.defaults.for.version", "2.2.3");
config.set("hbase.defaults.for.version.skip", "true");
- config.setInt(HConstants.HBASE_CLIENT_OPERATION_TIMEOUT, CommonConfig.HBASE_CLIENT_OPERATION_TIMEOUT);
- config.setInt(HConstants.HBASE_CLIENT_SCANNER_TIMEOUT_PERIOD, CommonConfig.HBASE_CLIENT_SCANNER_TIMEOUT_PERIOD);
+ config.setInt(HConstants.HBASE_CLIENT_OPERATION_TIMEOUT, FlowWriteConfig.HBASE_CLIENT_OPERATION_TIMEOUT);
+ config.setInt(HConstants.HBASE_CLIENT_SCANNER_TIMEOUT_PERIOD, FlowWriteConfig.HBASE_CLIENT_SCANNER_TIMEOUT_PERIOD);
- TableName tableName = TableName.valueOf(CommonConfig.HBASE_BASELINE_TABLE_NAME);
+ TableName tableName = TableName.valueOf(FlowWriteConfig.HBASE_BASELINE_TABLE_NAME);
Connection conn = ConnectionFactory.createConnection(config);
table = conn.getTable(tableName);
long currentTimeMillis = System.currentTimeMillis();
scan = new Scan()
.setAllowPartialResults(true)
- .setTimeRange(DateUtils.getSomeDate(new Date(currentTimeMillis), Math.negateExact(CommonConfig.HBASE_BASELINE_TTL)).getTime(), currentTimeMillis)
- .setLimit(CommonConfig.HBASE_BASELINE_TOTAL_NUM);
+ .setTimeRange(DateUtils.getSomeDate(new Date(currentTimeMillis), Math.negateExact(FlowWriteConfig.HBASE_BASELINE_TTL)).getTime(), currentTimeMillis)
+ .setLimit(FlowWriteConfig.HBASE_BASELINE_TOTAL_NUM);
logger.info("连接hbase成功,正在读取baseline数据");
}
@@ -84,29 +84,4 @@ public class ParseBaselineThreshold {
}
return baselineMap;
}
-
- public static void main(String[] args) {
- long currentTimeMillis = System.currentTimeMillis();
- long p200D = DateUtils.getSomeDate(new Date(currentTimeMillis), Math.negateExact(CommonConfig.HBASE_BASELINE_TTL)).getTime();
- System.out.println(p200D);
- System.out.println(currentTimeMillis);
- System.out.println(currentTimeMillis - p200D);
-
-
- Map> baselineMap = readFromHbase();
- Set keySet = baselineMap.keySet();
- for (String key : keySet) {
- Map stringTuple2Map = baselineMap.get(key);
- Set strings = stringTuple2Map.keySet();
- for (String s:strings){
- DosBaselineThreshold dosBaselineThreshold = stringTuple2Map.get(s);
- System.out.println(key+"---"+s+"---"+dosBaselineThreshold);
- }
- }
- System.out.println(baselineMap.size());
- }
-
-
-
-
}
diff --git a/src/main/java/com/zdjizhi/etl/ParseSketchLog.java b/src/main/java/com/zdjizhi/etl/ParseSketchLog.java
index 6731beb..5f31300 100644
--- a/src/main/java/com/zdjizhi/etl/ParseSketchLog.java
+++ b/src/main/java/com/zdjizhi/etl/ParseSketchLog.java
@@ -1,13 +1,11 @@
package com.zdjizhi.etl;
import com.alibaba.fastjson2.JSONObject;
-import com.fasterxml.jackson.databind.JavaType;
-import com.zdjizhi.common.CommonConfig;
+import com.geedgenetworks.utils.StringUtil;
+import com.zdjizhi.common.FlowWriteConfig;
import com.zdjizhi.common.DosSketchLog;
import com.zdjizhi.source.DosSketchSource;
import com.zdjizhi.utils.FlinkEnvironmentUtils;
-//import com.zdjizhi.utils.JsonMapper;
-import com.zdjizhi.utils.StringUtil;
import org.apache.flink.api.common.eventtime.WatermarkStrategy;
import org.apache.flink.api.common.functions.FlatMapFunction;
import org.apache.flink.streaming.api.datastream.SingleOutputStreamOperator;
@@ -24,22 +22,19 @@ import java.util.*;
public class ParseSketchLog {
private static Logger logger = LoggerFactory.getLogger(ParseSketchLog.class);
-// private static JsonMapper jsonMapperInstance = JsonMapper.getInstance();
-// private static JavaType hashmapJsonType = jsonMapperInstance.createCollectionType(HashMap.class, String.class, Object.class);
-// private static JavaType listType = jsonMapperInstance.createCollectionType(ArrayList.class, HashMap.class);
- public static SingleOutputStreamOperator getSketchSource(){
+ public static SingleOutputStreamOperator getSketchSource() {
return flatSketchSource().assignTimestampsAndWatermarks(createWatermarkStrategy());
}
- private static SingleOutputStreamOperator flatSketchSource(){
+ private static SingleOutputStreamOperator flatSketchSource() {
return DosSketchSource.createDosSketchSource().flatMap(new FlatSketchLog());
}
- private static WatermarkStrategy createWatermarkStrategy(){
+ private static WatermarkStrategy createWatermarkStrategy() {
return WatermarkStrategy
- .forBoundedOutOfOrderness(Duration.ofSeconds(CommonConfig.FLINK_WATERMARK_MAX_ORDERNESS))
+ .forBoundedOutOfOrderness(Duration.ofSeconds(FlowWriteConfig.FLINK_WATERMARK_MAX_ORDERNESS))
.withTimestampAssigner((event, timestamp) -> event.getSketch_start_time() * 1000);
}
@@ -47,17 +42,15 @@ public class ParseSketchLog {
@Override
public void flatMap(String s, Collector collector) {
try {
- if (StringUtil.isNotBlank(s)){
+ if (StringUtil.isNotBlank(s)) {
HashMap sketchSource = JSONObject.parseObject(s, HashMap.class);
-// HashMap sketchSource = jsonMapperInstance.fromJson(s, hashmapJsonType);
long sketchStartTime = Long.parseLong(sketchSource.get("sketch_start_time").toString());
long sketchDuration = Long.parseLong(sketchSource.get("sketch_duration").toString());
String attackType = sketchSource.get("attack_type").toString();
int vsysId = Integer.parseInt(sketchSource.getOrDefault("common_vsys_id", 1).toString());
String report_ip_list = JSONObject.toJSONString(sketchSource.get("report_ip_list"));
ArrayList> reportIpList = JSONObject.parseObject(report_ip_list, ArrayList.class);
-// ArrayList> reportIpList = jsonMapperInstance.fromJson(jsonMapperInstance.toJson(sketchSource.get("report_ip_list")), listType);
- for (HashMap obj : reportIpList) {
+ for (HashMap obj : reportIpList) {
DosSketchLog dosSketchLog = new DosSketchLog();
dosSketchLog.setSketch_start_time(sketchStartTime);
dosSketchLog.setSketch_duration(sketchDuration);
@@ -74,19 +67,12 @@ public class ParseSketchLog {
dosSketchLog.setSketch_packets(sketchPackets);
dosSketchLog.setSketch_bytes(sketchBytes);
collector.collect(dosSketchLog);
- logger.debug("数据解析成功:{}",dosSketchLog.toString());
+ logger.debug("数据解析成功:{}", dosSketchLog.toString());
}
}
} catch (Exception e) {
- logger.error("数据解析错误:{} \n{}",s,e);
+ logger.error("数据解析错误:{} \n{}", s, e);
}
}
}
-
-
- public static void main(String[] args) throws Exception {
- flatSketchSource().print();
- FlinkEnvironmentUtils.streamExeEnv.execute();
- }
-
}
diff --git a/src/main/java/com/zdjizhi/etl/ParseStaticThreshold.java b/src/main/java/com/zdjizhi/etl/ParseStaticThreshold.java
index 5fd4fa3..1edf2b4 100644
--- a/src/main/java/com/zdjizhi/etl/ParseStaticThreshold.java
+++ b/src/main/java/com/zdjizhi/etl/ParseStaticThreshold.java
@@ -5,16 +5,18 @@ import cn.hutool.log.LogFactory;
import com.alibaba.fastjson2.JSON;
import com.alibaba.fastjson2.JSONObject;
//import com.fasterxml.jackson.databind.JavaType;
-import com.zdjizhi.common.CommonConfig;
+import com.zdjizhi.common.FlowWriteConfig;
import com.zdjizhi.common.DosDetectionThreshold;
import com.zdjizhi.common.DosVsysId;
import com.zdjizhi.utils.HttpClientUtils;
//import com.zdjizhi.utils.JsonMapper;
-import com.zdjizhi.utils.NacosUtils;
+
+import com.zdjizhi.utils.connections.nacos.NacosUtils;
import inet.ipaddr.IPAddress;
import inet.ipaddr.IPAddressString;
import org.apache.flink.shaded.guava18.com.google.common.collect.Range;
import org.apache.flink.shaded.guava18.com.google.common.collect.TreeRangeMap;
+
import org.apache.http.client.utils.URIBuilder;
import org.apache.http.message.BasicHeader;
@@ -28,15 +30,9 @@ import java.util.Map;
* @author wlh
*/
public class ParseStaticThreshold {
-// private static Logger logger = LoggerFactory.getLogger(ParseStaticThreshold.class);
private static final Log logger = LogFactory.get();
private static String encryptpwd;
-// private static JsonMapper jsonMapperInstance = JsonMapper.getInstance();
-// private static JavaType hashmapJsonType = jsonMapperInstance.createCollectionType(HashMap.class, String.class, Object.class);
-// private static JavaType thresholdType = jsonMapperInstance.createCollectionType(ArrayList.class, DosDetectionThreshold.class);
-// private static JavaType vsysIDType = jsonMapperInstance.createCollectionType(ArrayList.class, DosVsysId.class);
-
static {
//加载加密登录密码
encryptpwd = getEncryptpwd();
@@ -48,20 +44,18 @@ public class ParseStaticThreshold {
private static String getEncryptpwd() {
String psw = HttpClientUtils.ERROR_MESSAGE;
try {
- URIBuilder uriBuilder = new URIBuilder(CommonConfig.BIFANG_SERVER_URI);
+ URIBuilder uriBuilder = new URIBuilder(FlowWriteConfig.BIFANG_SERVER_URI);
HashMap parms = new HashMap<>();
parms.put("password", "admin");
- HttpClientUtils.setUrlWithParams(uriBuilder, CommonConfig.BIFANG_SERVER_ENCRYPTPWD_PATH, parms);
+ HttpClientUtils.setUrlWithParams(uriBuilder, FlowWriteConfig.BIFANG_SERVER_ENCRYPTPWD_PATH, parms);
String resposeJsonStr = HttpClientUtils.httpGet(uriBuilder.build());
if (!HttpClientUtils.ERROR_MESSAGE.equals(resposeJsonStr)) {
HashMap resposeMap = JSONObject.parseObject(resposeJsonStr, HashMap.class);
-// HashMap resposeMap = jsonMapperInstance.fromJson(resposeJsonStr, hashmapJsonType);
boolean success = (boolean) resposeMap.get("success");
String msg = resposeMap.get("msg").toString();
if (success) {
HashMap data = JSONObject.parseObject(JSONObject.toJSONString(resposeMap.get("data")), HashMap.class);
-// HashMap data = jsonMapperInstance.fromJson(jsonMapperInstance.toJson(resposeMap.get("data")), hashmapJsonType);
psw = data.get("encryptpwd").toString();
} else {
logger.error(msg);
@@ -75,40 +69,6 @@ public class ParseStaticThreshold {
return psw;
}
- /**
- * 登录bifang服务,获取token
- *
- * @return token
- */
- private static String loginBifangServer() {
- String token = HttpClientUtils.ERROR_MESSAGE;
- try {
- if (!HttpClientUtils.ERROR_MESSAGE.equals(encryptpwd)) {
- URIBuilder uriBuilder = new URIBuilder(CommonConfig.BIFANG_SERVER_URI);
- HashMap parms = new HashMap<>();
- parms.put("username", "admin");
- parms.put("password", encryptpwd);
- HttpClientUtils.setUrlWithParams(uriBuilder, CommonConfig.BIFANG_SERVER_LOGIN_PATH, parms);
- String resposeJsonStr = HttpClientUtils.httpPost(uriBuilder.build(), null);
- if (!HttpClientUtils.ERROR_MESSAGE.equals(resposeJsonStr)) {
- HashMap resposeMap = JSONObject.parseObject(resposeJsonStr, HashMap.class);
-// HashMap resposeMap = jsonMapperInstance.fromJson(resposeJsonStr, hashmapJsonType);
- boolean success = (boolean) resposeMap.get("success");
- String msg = resposeMap.get("msg").toString();
- if (success) {
- HashMap data = JSONObject.parseObject(JSONObject.toJSONString(resposeMap.get("data")), HashMap.class);
-// HashMap data = jsonMapperInstance.fromJson(jsonMapperInstance.toJson(resposeMap.get("data")), hashmapJsonType);
- token = data.get("token").toString();
- } else {
- logger.error(msg);
- }
- }
- }
- } catch (Exception e) {
- logger.error("登录失败,未获取到token ", e);
- }
- return token;
- }
/**
* 获取vsysId配置列表
@@ -118,12 +78,12 @@ public class ParseStaticThreshold {
private static ArrayList getVsysId() {
ArrayList vsysIdList = null;
try {
- URIBuilder uriBuilder = new URIBuilder(CommonConfig.BIFANG_SERVER_URI);
+ URIBuilder uriBuilder = new URIBuilder(FlowWriteConfig.BIFANG_SERVER_URI);
HashMap parms = new HashMap<>();
- parms.put("pageSize", -1);
+ parms.put("page_size", -1);
// parms.put("orderBy", "vsysId desc");
parms.put("type", 1);
- HttpClientUtils.setUrlWithParams(uriBuilder, CommonConfig.BIFANG_SERVER_POLICY_VSYSID_PATH, parms);
+ HttpClientUtils.setUrlWithParams(uriBuilder, FlowWriteConfig.BIFANG_SERVER_POLICY_VSYSID_PATH, parms);
String token = NacosUtils.getStringProperty("bifang.server.token");
if (!HttpClientUtils.ERROR_MESSAGE.equals(token)) {
BasicHeader authorization = new BasicHeader("Authorization", token);
@@ -131,21 +91,15 @@ public class ParseStaticThreshold {
String resposeJsonStr = HttpClientUtils.httpGet(uriBuilder.build(), authorization, authorization1);
if (!HttpClientUtils.ERROR_MESSAGE.equals(resposeJsonStr)) {
HashMap resposeMap = JSONObject.parseObject(resposeJsonStr, HashMap.class);
-// HashMap resposeMap = jsonMapperInstance.fromJson(resposeJsonStr, hashmapJsonType);
boolean success = (boolean) resposeMap.get("success");
String msg = resposeMap.get("msg").toString();
if (success) {
HashMap data = JSONObject.parseObject(JSONObject.toJSONString(resposeMap.get("data")), HashMap.class);
-// HashMap data = jsonMapperInstance.fromJson(jsonMapperInstance.toJson(resposeMap.get("data")), hashmapJsonType);
- Object list = data.get("list");
+ Object list = data.get("list");
if (list != null) {
- String s = JSONObject.toJSONString(list);
List dosVsysIds = JSON.parseArray(JSONObject.toJSONString(list), DosVsysId.class);
-// vsysIdList= JSONObject.parseObject(JSONObject.toJSONString(list), DosVsysId.class);
vsysIdList= (ArrayList)dosVsysIds;
-
-// vsysIdList = jsonMapperInstance.fromJson(jsonMapperInstance.toJson(list), vsysIDType);
- logger.info("获取到vsysId {}条", vsysIdList.size());
+ logger.info("获取到vsysId {}条", vsysIdList.size());
} else {
logger.warn("vsysIdList为空");
}
@@ -172,35 +126,37 @@ public class ParseStaticThreshold {
if (vsysIds != null) {
for (DosVsysId dosVsysId : vsysIds) {
Integer vsysId = dosVsysId.getId() == null ? 1 : dosVsysId.getId();
- Integer[] superiorIds = dosVsysId.getSuperiorIds();
- URIBuilder uriBuilder = new URIBuilder(CommonConfig.BIFANG_SERVER_URI);
+ Integer[] superiorIds = dosVsysId.getSuperior_ids();
+ URIBuilder uriBuilder = new URIBuilder(FlowWriteConfig.BIFANG_SERVER_URI);
HashMap parms = new HashMap<>();
- parms.put("pageSize", -1);
- parms.put("orderBy", "profileId asc");
- parms.put("isValid", 1);
- parms.put("vsysId", vsysId);
- HttpClientUtils.setUrlWithParams(uriBuilder, CommonConfig.BIFANG_SERVER_POLICY_THRESHOLD_PATH, parms);
+ parms.put("page_size", -1);
+ parms.put("order_by", "profileId asc");
+ parms.put("is_valid", 1);
+ parms.put("vsys_id", vsysId);
+ HttpClientUtils.setUrlWithParams(uriBuilder, FlowWriteConfig.BIFANG_SERVER_POLICY_THRESHOLD_PATH, parms);
String token = NacosUtils.getStringProperty("bifang.server.token");
if (!HttpClientUtils.ERROR_MESSAGE.equals(token)) {
BasicHeader authorization = new BasicHeader("Authorization", token);
BasicHeader authorization1 = new BasicHeader("Content-Type", "application/x-www-form-urlencoded");
String resposeJsonStr = HttpClientUtils.httpGet(uriBuilder.build(), authorization, authorization1);
if (!HttpClientUtils.ERROR_MESSAGE.equals(resposeJsonStr)) {
-// HashMap resposeMap = jsonMapperInstance.fromJson(resposeJsonStr, hashmapJsonType);
+
HashMap resposeMap = JSONObject.parseObject(resposeJsonStr,HashMap.class);
+
+
boolean success = (boolean) resposeMap.get("success");
String msg = resposeMap.get("msg").toString();
if (success) {
-// HashMap data = jsonMapperInstance.fromJson(jsonMapperInstance.toJson(resposeMap.get("data")), hashmapJsonType);
- HashMap data = JSONObject.parseObject(JSONObject.toJSONString(resposeMap.get("data")), HashMap.class);
+ HashMap data = JSONObject.parseObject(JSONObject.toJSONString(resposeMap.get("data")), HashMap.class);
Object list = data.get("list");
+
if (list != null) {
-// ArrayList thresholds = jsonMapperInstance.fromJson(jsonMapperInstance.toJson(list), thresholdType);
-// ArrayList thresholds = JSONObject.parseObject(JSONObject.toJSONString(list), ArrayList.class);
- List dosDetectionThresholds = JSON.parseArray(JSONObject.toJSONString(list), DosDetectionThreshold.class);
+ System.out.println(list);
+ List dosDetectionThresholds = JSON.parseArray(JSONObject.toJSONString(list), DosDetectionThreshold.class);
+ System.out.println(dosDetectionThresholds);
ArrayList thresholds = (ArrayList)dosDetectionThresholds;
for (DosDetectionThreshold dosDetectionThreshold : thresholds) {
- dosDetectionThreshold.setSuperiorIds(superiorIds);
+ dosDetectionThreshold.setSuperior_ids(superiorIds);
vsysThresholds.add(dosDetectionThreshold);
}
logger.info("获取到vsys id是{}静态阈值配置{}条", vsysId, thresholds.size());
@@ -217,7 +173,6 @@ public class ParseStaticThreshold {
} catch (Exception e) {
logger.error("获取静态阈值配置失败,请检查bifang服务或登录配置信息 ", e);
}
-
return vsysThresholds;
}
@@ -230,14 +185,19 @@ public class ParseStaticThreshold {
HashMap>> thresholdRangeMap = new HashMap<>(4);
try {
ArrayList dosDetectionThreshold = getDosDetectionThreshold();
+
if (dosDetectionThreshold != null && !dosDetectionThreshold.isEmpty()) {
for (DosDetectionThreshold threshold : dosDetectionThreshold) {
- String attackType = threshold.getAttackType();
- int vsysId = threshold.getVsysId();
+
+ String attackType = threshold.getAttack_type();
+ int vsysId = threshold.getVsys_id();
HashMap> rangeMap = thresholdRangeMap.getOrDefault(vsysId, new HashMap<>());
TreeRangeMap treeRangeMap = rangeMap.getOrDefault(attackType, TreeRangeMap.create());
- ArrayList serverIpList = threshold.getServerIpList();
+
+
+ ArrayList serverIpList = threshold.getServer_ip_list();
+
for (String sip : serverIpList) {
IPAddressString ipAddressString = new IPAddressString(sip);
if (ipAddressString.isIPAddress()) {
@@ -279,33 +239,38 @@ public class ParseStaticThreshold {
return thresholdRangeMap;
}
- public static void main(String[] args) {
- /*
- ArrayList dosDetectionThreshold = getDosDetectionThreshold();
-// dosDetectionThreshold.forEach(System.out::println);
- getVsysId().forEach(System.out::println);
- System.out.println("------------------------");
- */
- HashMap>> staticThreshold = createStaticThreshold();
- System.out.println("------------------------");
- for (Integer integer : staticThreshold.keySet()) {
- HashMap> stringTreeRangeMapHashMap = staticThreshold.get(integer);
- for (String type : stringTreeRangeMapHashMap.keySet()) {
- Map, DosDetectionThreshold> asMapOfRanges = stringTreeRangeMapHashMap.get(type).asMapOfRanges();
- for (Range range : asMapOfRanges.keySet()) {
- DosDetectionThreshold threshold = asMapOfRanges.get(range);
- System.out.println(integer + "---" + type + "---" + range + "---" + threshold);
+ /**
+ * 登录bifang服务,获取token
+ *
+ * @return token
+ */
+ private static String loginBifangServer() {
+ String token = HttpClientUtils.ERROR_MESSAGE;
+ try {
+ if (!HttpClientUtils.ERROR_MESSAGE.equals(encryptpwd)) {
+ URIBuilder uriBuilder = new URIBuilder(FlowWriteConfig.BIFANG_SERVER_URI);
+ HashMap parms = new HashMap<>();
+ parms.put("username", "admin");
+ parms.put("password", encryptpwd);
+ HttpClientUtils.setUrlWithParams(uriBuilder, FlowWriteConfig.BIFANG_SERVER_LOGIN_PATH, parms);
+ String resposeJsonStr = HttpClientUtils.httpPost(uriBuilder.build(), null);
+ if (!HttpClientUtils.ERROR_MESSAGE.equals(resposeJsonStr)) {
+ HashMap resposeMap = JSONObject.parseObject(resposeJsonStr, HashMap.class);
+ boolean success = (boolean) resposeMap.get("success");
+ String msg = resposeMap.get("msg").toString();
+ if (success) {
+ HashMap data = JSONObject.parseObject(JSONObject.toJSONString(resposeMap.get("data")), HashMap.class);
+ token = data.get("token").toString();
+ } else {
+ logger.error(msg);
+ }
}
- System.out.println("------------------------");
}
-
+ } catch (Exception e) {
+ logger.error("登录失败,未获取到token ", e);
}
-// String s = loginBifangServer();
-// System.out.println(s);
-
+ return token;
}
-
-
}
diff --git a/src/main/java/com/zdjizhi/etl/TrafficServerIpMetrics.java b/src/main/java/com/zdjizhi/etl/TrafficServerIpMetrics.java
index 8206cff..a4e5bdd 100644
--- a/src/main/java/com/zdjizhi/etl/TrafficServerIpMetrics.java
+++ b/src/main/java/com/zdjizhi/etl/TrafficServerIpMetrics.java
@@ -2,7 +2,7 @@ package com.zdjizhi.etl;
import cn.hutool.log.Log;
import cn.hutool.log.LogFactory;
-import com.zdjizhi.common.CommonConfig;
+import com.zdjizhi.common.FlowWriteConfig;
import com.zdjizhi.common.DosMetricsLog;
import com.zdjizhi.common.DosSketchLog;
@@ -26,16 +26,11 @@ class TrafficServerIpMetrics {
}
private static long timeFloor(long sketchStartTime){
- return sketchStartTime / CommonConfig.FLINK_WINDOW_MAX_TIME * CommonConfig.FLINK_WINDOW_MAX_TIME;
+ return sketchStartTime / FlowWriteConfig.FLINK_WINDOW_MAX_TIME * FlowWriteConfig.FLINK_WINDOW_MAX_TIME;
}
private static int getPartitionNumByIp(String destinationIp){
- return Math.abs(destinationIp.hashCode()) % CommonConfig.DESTINATION_IP_PARTITION_NUM;
- }
-
- public static void main(String[] args) {
- System.out.println(getPartitionNumByIp("146.177.223.43"));
- System.out.println("146.177.223.43".hashCode());
+ return Math.abs(destinationIp.hashCode()) % FlowWriteConfig.DESTINATION_IP_PARTITION_NUM;
}
}
diff --git a/src/main/java/com/zdjizhi/sink/DosEventSink.java b/src/main/java/com/zdjizhi/sink/DosEventSink.java
index 18694ba..87795e6 100644
--- a/src/main/java/com/zdjizhi/sink/DosEventSink.java
+++ b/src/main/java/com/zdjizhi/sink/DosEventSink.java
@@ -1,7 +1,7 @@
package com.zdjizhi.sink;
import com.alibaba.fastjson2.JSONObject;
-import com.zdjizhi.common.CommonConfig;
+import com.zdjizhi.common.FlowWriteConfig;
import com.zdjizhi.common.DosEventLog;
//import com.zdjizhi.utils.JsonMapper;
import com.zdjizhi.utils.KafkaUtils;
@@ -16,8 +16,8 @@ class DosEventSink {
.filter(Objects::nonNull)
// .map(JsonMapper::toJsonString)
.map(JSONObject::toJSONString)
- .addSink(KafkaUtils.getKafkaSink(CommonConfig.KAFKA_OUTPUT_EVENT_TOPIC_NAME))
- .setParallelism(CommonConfig.KAFKA_OUTPUT_EVENT_PARALLELISM);
+ .addSink(KafkaUtils.getKafkaSink(FlowWriteConfig.KAFKA_OUTPUT_EVENT_TOPIC_NAME))
+ .setParallelism(FlowWriteConfig.KAFKA_OUTPUT_EVENT_PARALLELISM);
}
}
diff --git a/src/main/java/com/zdjizhi/sink/OutputStreamSink.java b/src/main/java/com/zdjizhi/sink/OutputStreamSink.java
index f6ebeb0..35db54f 100644
--- a/src/main/java/com/zdjizhi/sink/OutputStreamSink.java
+++ b/src/main/java/com/zdjizhi/sink/OutputStreamSink.java
@@ -3,18 +3,14 @@ package com.zdjizhi.sink;
import cn.hutool.log.Log;
import cn.hutool.log.LogFactory;
import com.alibaba.nacos.api.PropertyKeyConst;
-import com.zdjizhi.common.CommonConfig;
+import com.zdjizhi.common.FlowWriteConfig;
import com.zdjizhi.common.DosEventLog;
import com.zdjizhi.common.DosMetricsLog;
import com.zdjizhi.common.DosSketchLog;
import com.zdjizhi.etl.DosDetection;
import com.zdjizhi.etl.EtlProcessFunction;
import com.zdjizhi.etl.ParseSketchLog;
-import com.zdjizhi.source.DosSketchSource;
import com.zdjizhi.utils.FlinkEnvironmentUtils;
-import org.apache.flink.api.common.state.MapStateDescriptor;
-import org.apache.flink.api.common.typeinfo.TypeInformation;
-import org.apache.flink.api.common.typeinfo.Types;
import org.apache.flink.api.java.functions.KeySelector;
import org.apache.flink.api.java.tuple.Tuple3;
import org.apache.flink.streaming.api.datastream.*;
@@ -22,7 +18,6 @@ import org.apache.flink.streaming.api.windowing.assigners.TumblingEventTimeWindo
import org.apache.flink.streaming.api.windowing.time.Time;
import org.apache.flink.util.OutputTag;
-import java.util.Map;
import java.util.Properties;
/**
@@ -39,44 +34,24 @@ public class OutputStreamSink {
SingleOutputStreamOperator middleStream = getMiddleStream();
DosEventSink.dosEventOutputSink(getEventSinkStream(middleStream));
TrafficServerIpMetricsSink.sideOutputMetricsSink(middleStream);
- FlinkEnvironmentUtils.streamExeEnv.execute(CommonConfig.STREAM_EXECUTION_JOB_NAME);
+ FlinkEnvironmentUtils.streamExeEnv.execute(FlowWriteConfig.STREAM_EXECUTION_JOB_NAME);
} catch (Exception e) {
logger.error("任务启动失败 {}",e);
}
}
private static SingleOutputStreamOperator getEventSinkStream(SingleOutputStreamOperator middleStream){
- DataStreamSource