修改时长统计逻辑
This commit is contained in:
@@ -7,6 +7,8 @@ import org.apache.flink.configuration.Configuration;
|
||||
import org.apache.flink.streaming.api.functions.windowing.ProcessWindowFunction;
|
||||
import org.apache.flink.streaming.api.windowing.windows.TimeWindow;
|
||||
import org.apache.flink.util.Collector;
|
||||
import org.slf4j.Logger;
|
||||
import org.slf4j.LoggerFactory;
|
||||
|
||||
import java.util.HashMap;
|
||||
import java.util.Map;
|
||||
@@ -17,6 +19,7 @@ public class MetricsCalculate extends ProcessWindowFunction<
|
||||
Tuple4<String, String, Integer, Integer>, // 键类型
|
||||
TimeWindow> { // 窗口类型
|
||||
private final Map<String, String> attackTypeMapping = new HashMap<>();
|
||||
private static Logger logger = LoggerFactory.getLogger(MetricsCalculate.class);
|
||||
|
||||
@Override
|
||||
public void open(Configuration parameters) throws Exception {
|
||||
@@ -33,10 +36,19 @@ public class MetricsCalculate extends ProcessWindowFunction<
|
||||
public void process(Tuple4<String, String, Integer, Integer> key, ProcessWindowFunction<DosSketchLog, DosSketchLog, Tuple4<String, String, Integer,Integer>, TimeWindow>.Context context, Iterable<DosSketchLog> elements, Collector<DosSketchLog> out) throws Exception {
|
||||
|
||||
for (DosSketchLog dosSketchLog: elements){
|
||||
dosSketchLog.setSession_rate(dosSketchLog.getSessions()/ (dosSketchLog.getDuration()/1000) );
|
||||
dosSketchLog.setPacket_rate(dosSketchLog.getPkts()/(dosSketchLog.getDuration()/1000));
|
||||
dosSketchLog.setBit_rate(dosSketchLog.getBytes()/(dosSketchLog.getDuration()/1000));
|
||||
dosSketchLog.setAttack_type(attackTypeMapping.getOrDefault(dosSketchLog.getDecoded_as(),""));
|
||||
try {
|
||||
long duration = dosSketchLog.getEnd_timestamp_ms()-dosSketchLog.getStart_timestamp_ms();
|
||||
if(duration<=0){
|
||||
duration = dosSketchLog.getDuration();
|
||||
dosSketchLog.setEnd_timestamp_ms(dosSketchLog.getStart_timestamp_ms()+duration);
|
||||
}
|
||||
dosSketchLog.setSession_rate(dosSketchLog.getSessions()/ (duration/1000) );
|
||||
dosSketchLog.setPacket_rate(dosSketchLog.getPkts()/(duration/1000));
|
||||
dosSketchLog.setBit_rate(dosSketchLog.getBytes()*8/(duration/1000));
|
||||
dosSketchLog.setAttack_type(attackTypeMapping.getOrDefault(dosSketchLog.getDecoded_as(),""));
|
||||
}catch (RuntimeException e){
|
||||
logger.error(e.toString());
|
||||
}
|
||||
out.collect(dosSketchLog);
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user