package com.zdjizhi.etl; import cn.hutool.log.Log; import cn.hutool.log.LogFactory; import com.zdjizhi.common.FlowWriteConfig; import com.zdjizhi.common.DosMetricsLog; import com.zdjizhi.common.DosSketchLog; class TrafficServerIpMetrics { // private static final Logger logger = LoggerFactory.getLogger(TrafficServerIpMetrics.class); private static final Log logger = LogFactory.get(); static DosMetricsLog getOutputMetric(DosSketchLog midResuleLog) { DosMetricsLog dosMetricsLog = new DosMetricsLog(); dosMetricsLog.setSketch_start_time(timeFloor(System.currentTimeMillis()/1000)); dosMetricsLog.setDestination_ip(midResuleLog.getDestination_ip()); dosMetricsLog.setAttack_type(midResuleLog.getAttack_type()); dosMetricsLog.setSession_rate(midResuleLog.getSketch_sessions()); dosMetricsLog.setPacket_rate(midResuleLog.getSketch_packets()); dosMetricsLog.setBit_rate(midResuleLog.getSketch_bytes()); dosMetricsLog.setVsys_id(midResuleLog.getVsys_id()); dosMetricsLog.setPartition_num(getPartitionNumByIp(midResuleLog.getDestination_ip())); logger.debug("metric 结果已加载:{}",dosMetricsLog.toString()); return dosMetricsLog; } private static long timeFloor(long sketchStartTime){ return sketchStartTime / FlowWriteConfig.FLINK_WINDOW_MAX_TIME * FlowWriteConfig.FLINK_WINDOW_MAX_TIME; } private static int getPartitionNumByIp(String destinationIp){ return Math.abs(destinationIp.hashCode()) % FlowWriteConfig.DESTINATION_IP_PARTITION_NUM; } }