diff options
| author | renkaige <[email protected]> | 2019-01-10 11:21:29 +0600 |
|---|---|---|
| committer | renkaige <[email protected]> | 2019-01-10 11:21:29 +0600 |
| commit | 99d3b87e1a037f949430d97e37a96b46136adcba (patch) | |
| tree | 5a3d6fd4f6639915d1e86d89be60c35b787e4050 | |
| parent | b38a3652dd0a18ec976adc13b989df232c3849db (diff) | |
1:修改线上配置文件applicationContext-redis.xml.astana中哨兵的名称masterName,及jdbc中mysql的地址
2:修改ip范围统计的sql,及解决ip范围统计使用linkedlist速度很慢的原因
3:新增asn统计接口(ntcAsnRecord)从mysql查询,老的接口(从clickhouse中查询)改为ntcAsnRecordold
| -rw-r--r-- | src/main/java/com/nis/domain/restful/dashboard/TrafficAsnStatistic.java (renamed from src/main/java/com/nis/domain/restful/NtcAsnRecord.java) | 28 | ||||
| -rw-r--r-- | src/main/java/com/nis/web/controller/restful/DashboardServiceController.java | 100 | ||||
| -rw-r--r-- | src/main/java/com/nis/web/controller/restful/NtcLogSearchController.java | 6 | ||||
| -rw-r--r-- | src/main/java/com/nis/web/dao/dashboard/TrafficAsnStatisticDao.java | 13 | ||||
| -rw-r--r-- | src/main/java/com/nis/web/dao/dashboard/TrafficAsnStatisticDao.xml | 34 | ||||
| -rw-r--r-- | src/main/java/com/nis/web/dao/impl/LocalLogJDBCByDruid.java | 13 | ||||
| -rw-r--r-- | src/main/java/com/nis/web/service/LogDataService.java | 4 | ||||
| -rw-r--r-- | src/main/java/com/nis/web/service/restful/DashboardService.java | 9 | ||||
| -rw-r--r-- | src/main/java/com/nis/web/task/GetIpRangeTask.java | 5 | ||||
| -rw-r--r-- | src/main/resources/applicationContext-redis.xml.astana | 2 | ||||
| -rw-r--r-- | src/main/resources/jdbc.properties.astana | 4 |
11 files changed, 198 insertions, 20 deletions
diff --git a/src/main/java/com/nis/domain/restful/NtcAsnRecord.java b/src/main/java/com/nis/domain/restful/dashboard/TrafficAsnStatistic.java index 7f8b1ed..4d13fe2 100644 --- a/src/main/java/com/nis/domain/restful/NtcAsnRecord.java +++ b/src/main/java/com/nis/domain/restful/dashboard/TrafficAsnStatistic.java @@ -1,8 +1,13 @@ -package com.nis.domain.restful;
+package com.nis.domain.restful.dashboard;
import java.io.Serializable;
+import javax.xml.bind.annotation.XmlTransient;
+
+import org.apache.poi.ss.formula.functions.T;
+
import com.fasterxml.jackson.annotation.JsonIgnore;
+import com.nis.domain.Page;
/**
*
@@ -12,7 +17,7 @@ import com.fasterxml.jackson.annotation.JsonIgnore; * @date 2018年12月12日 下午2:00:16
* @version V1.0
*/
-public class NtcAsnRecord implements Serializable {
+public class TrafficAsnStatistic<T> implements Serializable {
/**
*
@@ -29,6 +34,10 @@ public class NtcAsnRecord implements Serializable { private String searchAsnType;// 1是d_asn,2是s_asn
+
+ protected Page<T> page;
+
+
public String getBps() {
return bps;
}
@@ -88,4 +97,19 @@ public class NtcAsnRecord implements Serializable { public void setSearchFoundEndTime(String searchFoundEndTime) {
this.searchFoundEndTime = searchFoundEndTime;
}
+
+ @JsonIgnore
+ @XmlTransient
+ public Page<T> getPage() {
+ if (page == null) {
+ page = new Page<T>();
+ }
+ return page;
+ }
+
+ public Page<T> setPage(Page<T> page) {
+ this.page = page;
+ return page;
+ }
+
}
diff --git a/src/main/java/com/nis/web/controller/restful/DashboardServiceController.java b/src/main/java/com/nis/web/controller/restful/DashboardServiceController.java index 59a9432..b1b5179 100644 --- a/src/main/java/com/nis/web/controller/restful/DashboardServiceController.java +++ b/src/main/java/com/nis/web/controller/restful/DashboardServiceController.java @@ -21,11 +21,13 @@ import org.springframework.web.bind.annotation.RequestParam; import org.springframework.web.bind.annotation.RestController;
import com.nis.datasource.CustomerContextHolder;
+import com.nis.domain.Page;
import com.nis.domain.restful.NtcConnNumReport;
import com.nis.domain.restful.NtcRadiusReport;
import com.nis.domain.restful.dashboard.AppConnRecordStatistic;
import com.nis.domain.restful.dashboard.AppTrendEntity;
import com.nis.domain.restful.dashboard.TrafficAppFocusStatistic;
+import com.nis.domain.restful.dashboard.TrafficAsnStatistic;
import com.nis.restful.RestBusinessCode;
import com.nis.restful.RestServiceException;
import com.nis.restful.ServiceRuntimeException;
@@ -1088,6 +1090,104 @@ public class DashboardServiceController extends BaseRestController { return serviceLogResponse(auditLogThread, System.currentTimeMillis() - start, request, "App通联关系Top100数据检索成功", list,
0);
}
+
+
+
+
+
+
+
+
+
+ @RequestMapping(value = "/ntcAsnRecord", method = RequestMethod.GET)
+ @ApiOperation(value = "ASN通联关系(源,目的)查询", httpMethod = "GET", notes = "对日志功能“ASN通联关系(源,目的)查询”提供数据基础查询服务")
+ public Map<String, ?> ntcAsnRecord(Page page, TrafficAsnStatistic ntcAsnRecord, Model model, HttpServletRequest request,
+ HttpServletResponse response) {
+ long start = System.currentTimeMillis();
+ AuditLogThread auditLogThread = super.saveRequestLog(servicesRequestLogService, Constants.OPACTION_GET, request,
+ null);
+ try {
+ if (StringUtil.isEmpty(ntcAsnRecord.getSearchFoundStartTime())
+ && StringUtil.isEmpty(ntcAsnRecord.getSearchFoundEndTime())) {
+ Map<String, String> map = DateUtils.getLocalTime(null, null, Constants.LOG_LOCAL_TIME, "minute");
+ ntcAsnRecord.setSearchFoundStartTime(map.get("startTime"));
+ ntcAsnRecord.setSearchFoundEndTime(map.get("endTime"));
+ }
+ SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
+
+ try {
+ if (!StringUtil.isBlank(ntcAsnRecord.getSearchFoundEndTime())) {
+ sdf.setLenient(false);
+ sdf.parse(ntcAsnRecord.getSearchFoundEndTime());
+ }
+
+ } catch (ParseException e) {
+ throw new RestServiceException("searchFoundEndTime参数格式错误",
+ RestBusinessCode.param_formate_error.getValue());
+ } catch (Exception e) {
+ throw new RestServiceException("searchFoundEndTime参数错误",
+ RestBusinessCode.param_formate_error.getValue());
+ }
+
+ try {
+ if (!StringUtil.isBlank(ntcAsnRecord.getSearchFoundStartTime())) {
+ sdf.setLenient(false);
+ sdf.parse(ntcAsnRecord.getSearchFoundStartTime());
+ }
+
+ } catch (ParseException e) {
+ throw new RestServiceException("searchFoundStartTime参数格式错误",
+ RestBusinessCode.param_formate_error.getValue());
+ } catch (Exception e) {
+ throw new RestServiceException("searchFoundStartTime参数错误",
+ RestBusinessCode.param_formate_error.getValue());
+ }
+ try {
+ if (!StringUtil.isBlank(ntcAsnRecord.getSearchAsnType())) {
+ Integer.parseInt(ntcAsnRecord.getSearchAsnType());
+ } else {
+ throw new RestServiceException("searchAsnType参数不能为空",
+ RestBusinessCode.param_formate_error.getValue());
+ }
+ } catch (NumberFormatException e) {
+ throw new RestServiceException("searchAsnType参数格式错误" + e.getMessage(),
+ RestBusinessCode.param_formate_error.getValue());
+ } catch (Exception e) {
+ throw new RestServiceException("searchAsnType参数错误" + e.getMessage(),
+ RestBusinessCode.param_formate_error.getValue());
+ }
+
+ dashboardService.getTrafficAsnStatisticList(page, ntcAsnRecord);
+ } catch (Exception e) {
+ auditLogThread.setExceptionInfo("ASN通联关系(源,目的)日志检索失败:" + e.getMessage());
+ logger.error("ASN通联关系(源,目的)检索失败:" + ExceptionUtil.getExceptionMsg(e));
+ if (e instanceof RestServiceException) {
+ throw new RestServiceException(auditLogThread, System.currentTimeMillis() - start,
+ "ASN通联关系(源,目的)检索失败:" + e.getMessage(), ((RestServiceException) e).getErrorCode());
+ } else if (e instanceof ServiceRuntimeException) {
+ throw new ServiceRuntimeException(auditLogThread, System.currentTimeMillis() - start,
+ "ASN通联关系(源,目的)检索失败:" + e.getMessage(), ((ServiceRuntimeException) e).getErrorCode());
+ } else {
+ throw new ServiceRuntimeException(auditLogThread, System.currentTimeMillis() - start,
+ "ASN通联关系(源,目的)检索失败:" + e.getMessage(), RestBusinessCode.service_runtime_error.getValue());
+ }
+ }
+ return serviceLogResponse(auditLogThread, System.currentTimeMillis() - start, request, "ASN通联关系(源,目的)检索成功",
+ page, 0);
+ }
+
+
+
+
+
+
+
+
+
+
+
+
+
/**
*/
public void checkAppTrendCondition(AppTrendEntity entity) {
diff --git a/src/main/java/com/nis/web/controller/restful/NtcLogSearchController.java b/src/main/java/com/nis/web/controller/restful/NtcLogSearchController.java index de71421..9ac09b3 100644 --- a/src/main/java/com/nis/web/controller/restful/NtcLogSearchController.java +++ b/src/main/java/com/nis/web/controller/restful/NtcLogSearchController.java @@ -15,7 +15,6 @@ import org.springframework.web.bind.annotation.RestController; import com.nis.domain.Page; import com.nis.domain.restful.NtcAppLog; -import com.nis.domain.restful.NtcAsnRecord; import com.nis.domain.restful.NtcBgpLog; import com.nis.domain.restful.NtcCollectRadiusLog; import com.nis.domain.restful.NtcCollectVoipLog; @@ -37,6 +36,7 @@ import com.nis.domain.restful.NtcSshLog; import com.nis.domain.restful.NtcSslLog; import com.nis.domain.restful.NtcStreamingMediaLog; import com.nis.domain.restful.NtcVoipLog; +import com.nis.domain.restful.dashboard.TrafficAsnStatistic; import com.nis.restful.RestBusinessCode; import com.nis.restful.RestServiceException; import com.nis.restful.ServiceRuntimeException; @@ -788,9 +788,9 @@ public class NtcLogSearchController extends BaseRestController { ntcConnRecordPercent, 0); } - @RequestMapping(value = "/ntcAsnRecord", method = RequestMethod.GET) + @RequestMapping(value = "/ntcAsnRecordold", method = RequestMethod.GET) @ApiOperation(value = "ASN通联关系(源,目的)查询", httpMethod = "GET", notes = "对日志功能“ASN通联关系(源,目的)查询”提供数据基础查询服务") - public Map<String, ?> ntcAsnRecord(Page page, NtcAsnRecord ntcAsnRecord, Model model, HttpServletRequest request, + public Map<String, ?> ntcAsnRecord(Page page, TrafficAsnStatistic ntcAsnRecord, Model model, HttpServletRequest request, HttpServletResponse response) { long start = System.currentTimeMillis(); AuditLogThread auditLogThread = super.saveRequestLog(servicesRequestLogService, Constants.OPACTION_GET, request, diff --git a/src/main/java/com/nis/web/dao/dashboard/TrafficAsnStatisticDao.java b/src/main/java/com/nis/web/dao/dashboard/TrafficAsnStatisticDao.java new file mode 100644 index 0000000..0fd09d5 --- /dev/null +++ b/src/main/java/com/nis/web/dao/dashboard/TrafficAsnStatisticDao.java @@ -0,0 +1,13 @@ +package com.nis.web.dao.dashboard;
+
+import java.util.List;
+
+import com.nis.domain.restful.dashboard.TrafficAsnStatistic;
+import com.nis.web.dao.MyBatisDao;
+
+@MyBatisDao
+public interface TrafficAsnStatisticDao {
+
+ List<TrafficAsnStatistic> getTrafficAsnStatisticList(TrafficAsnStatistic trafficAsnStatistic);
+
+}
\ No newline at end of file diff --git a/src/main/java/com/nis/web/dao/dashboard/TrafficAsnStatisticDao.xml b/src/main/java/com/nis/web/dao/dashboard/TrafficAsnStatisticDao.xml new file mode 100644 index 0000000..fae5037 --- /dev/null +++ b/src/main/java/com/nis/web/dao/dashboard/TrafficAsnStatisticDao.xml @@ -0,0 +1,34 @@ +<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper
+ namespace="com.nis.web.dao.dashboard.TrafficAsnStatisticDao">
+ <resultMap id="BaseResultMap"
+ type="com.nis.domain.restful.dashboard.TrafficAsnStatistic">
+ <id column="bps" jdbcType="VARCHAR" property="bps" />
+ <result column="pps" jdbcType="VARCHAR" property="pps" />
+ <result column="asn" jdbcType="VARCHAR" property="asn" />
+ </resultMap>
+
+
+ <select id="getTrafficAsnStatisticList"
+ parameterType="com.nis.domain.restful.dashboard.TrafficAsnStatistic"
+ resultMap="BaseResultMap">
+ SELECT
+ TRUNCATE(packets / 3600 ,0)AS pps,
+ TRUNCATE(bytes * 8 / 1024 / 1024 / 1024 / 3600,2) AS bps,asn
+ FROM
+ traffic_asn_statistic t
+ WHERE
+ <![CDATA[
+ stat_time>=#{searchFoundStartTime} and stat_time<#{searchFoundEndTime} ]]>
+ <if test="searchAsnType !=null and searchAsnType != ''">
+ <![CDATA[and asn_type=#{searchAsnType}]]>
+ </if>
+ ORDER BY
+ bps DESC,
+ pps DESC
+ </select>
+
+
+
+</mapper>
\ No newline at end of file diff --git a/src/main/java/com/nis/web/dao/impl/LocalLogJDBCByDruid.java b/src/main/java/com/nis/web/dao/impl/LocalLogJDBCByDruid.java index 8f28e2d..a3b011d 100644 --- a/src/main/java/com/nis/web/dao/impl/LocalLogJDBCByDruid.java +++ b/src/main/java/com/nis/web/dao/impl/LocalLogJDBCByDruid.java @@ -26,10 +26,9 @@ import org.springframework.stereotype.Repository; import com.alibaba.druid.pool.DruidDataSource;
import com.nis.domain.Page;
-import com.nis.domain.restful.NtcAsnRecord;
import com.nis.domain.restful.NtcConnRecordPercent;
+import com.nis.domain.restful.dashboard.TrafficAsnStatistic;
import com.nis.web.service.SpringContextHolder;
-import com.zdjizhi.utils.CommonUtil;
import com.zdjizhi.utils.StringUtil;
/**
@@ -181,8 +180,8 @@ public class LocalLogJDBCByDruid { * @return
* @throws Exception
*/
- public List<NtcAsnRecord> getNtcAsnRecordData(String sql) throws Exception {
- List<NtcAsnRecord> list = new LinkedList<>();
+ public List<TrafficAsnStatistic> getNtcAsnRecordData(String sql) throws Exception {
+ List<TrafficAsnStatistic> list = new LinkedList<>();
try {
conn = getConnection();
logger.info("连接数据中心日志库成功--------------------------");
@@ -191,7 +190,7 @@ public class LocalLogJDBCByDruid { rs = st.executeQuery(sql);
num.setMinimumFractionDigits(2);// 保留两位小数
while (rs.next()) {
- NtcAsnRecord ntcAsnRecord = new NtcAsnRecord();
+ TrafficAsnStatistic ntcAsnRecord = new TrafficAsnStatistic();
String bps = rs.getString("bps");
String pps = rs.getString("pps");
String ppsNum =pps;
@@ -212,10 +211,10 @@ public class LocalLogJDBCByDruid { }
public List<String> getAllIp(Integer frontier) throws Exception {
- List<String> list = new LinkedList<>();
+ List<String> list = new ArrayList<>();
try {
// String sql = "select distinct ip from ip_location_database_local where ip like '145%' and frontier='"+frontier+"'";
- String sql = "select distinct ip from ip_location_database_local where frontier='"+frontier+"'";
+ String sql = "select distinct ip from (select ip,frontier from ip_location_database ) where frontier='"+frontier+"'";
conn = getConnection();
logger.info("连接数据中心日志库成功--------------------------");
st = conn.createStatement();
diff --git a/src/main/java/com/nis/web/service/LogDataService.java b/src/main/java/com/nis/web/service/LogDataService.java index 30cbbca..b37b4cb 100644 --- a/src/main/java/com/nis/web/service/LogDataService.java +++ b/src/main/java/com/nis/web/service/LogDataService.java @@ -18,8 +18,8 @@ import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service;
import com.nis.domain.Page;
-import com.nis.domain.restful.NtcAsnRecord;
import com.nis.domain.restful.NtcConnRecordPercent;
+import com.nis.domain.restful.dashboard.TrafficAsnStatistic;
import com.nis.restful.RestBusinessCode;
import com.nis.restful.RestServiceException;
import com.nis.util.Configurations;
@@ -90,7 +90,7 @@ public class LogDataService { return ntcConnRecordPercent;
}
- public void getNtcAsnRecord(Page page, NtcAsnRecord ntcAsnRecord) throws Exception {
+ public void getNtcAsnRecord(Page page, TrafficAsnStatistic ntcAsnRecord) throws Exception {
long startTime = sdf.parse(ntcAsnRecord.getSearchFoundStartTime().toString().trim()).getTime() / 1000;
long endTime = sdf.parse(ntcAsnRecord.getSearchFoundEndTime().toString().trim()).getTime() / 1000;
if (endTime - startTime < 0) {
diff --git a/src/main/java/com/nis/web/service/restful/DashboardService.java b/src/main/java/com/nis/web/service/restful/DashboardService.java index 59a9776..7a636ab 100644 --- a/src/main/java/com/nis/web/service/restful/DashboardService.java +++ b/src/main/java/com/nis/web/service/restful/DashboardService.java @@ -22,12 +22,14 @@ import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service;
import com.beust.jcommander.internal.Maps;
+import com.nis.domain.Page;
import com.nis.domain.restful.NtcConnNumReport;
import com.nis.domain.restful.NtcEntranceReport;
import com.nis.domain.restful.dashboard.AppConnRecordStatistic;
import com.nis.domain.restful.dashboard.NtcTotalReport;
import com.nis.domain.restful.dashboard.TrafficAppFocusStatistic;
import com.nis.domain.restful.dashboard.TrafficAppStatistic;
+import com.nis.domain.restful.dashboard.TrafficAsnStatistic;
import com.nis.domain.restful.dashboard.TrafficHttpFocusStatistic;
import com.nis.domain.restful.dashboard.TrafficIpActiveStatistic;
import com.nis.domain.restful.dashboard.TrafficPortActiveStatistic;
@@ -41,6 +43,7 @@ import com.nis.util.DateUtils; import com.nis.util.StringUtils;
import com.nis.web.dao.dashboard.NtcTotalReportDao;
import com.nis.web.dao.dashboard.TrafficAppStatisticDao;
+import com.nis.web.dao.dashboard.TrafficAsnStatisticDao;
import com.nis.web.dao.dashboard.TrafficHttpStatisticDao;
import com.nis.web.dao.dashboard.TrafficIpActiveStatisticDao;
import com.nis.web.dao.dashboard.TrafficPortActiveStatisticDao;
@@ -65,6 +68,8 @@ public class DashboardService extends BaseService { @Autowired
public NtcTotalReportDao ntcTotalReportDao;
@Autowired
+ public TrafficAsnStatisticDao trafficAsnStatisticDao;
+ @Autowired
public TrafficPortActiveStatisticDao trafficPortActiveStatisticDao;
//ip地址类型
private final String[] addrTypes = {"4","6"} ;
@@ -1715,4 +1720,8 @@ public class DashboardService extends BaseService { }
return list;
}
+ public void getTrafficAsnStatisticList(Page page, TrafficAsnStatistic ntcAsnRecord){
+ ntcAsnRecord.setPage(page);
+ page.setList(trafficAsnStatisticDao.getTrafficAsnStatisticList(ntcAsnRecord));
+ }
}
diff --git a/src/main/java/com/nis/web/task/GetIpRangeTask.java b/src/main/java/com/nis/web/task/GetIpRangeTask.java index e38c4a1..7783de9 100644 --- a/src/main/java/com/nis/web/task/GetIpRangeTask.java +++ b/src/main/java/com/nis/web/task/GetIpRangeTask.java @@ -3,7 +3,7 @@ package com.nis.web.task; import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collections;
-import java.util.LinkedHashMap;
+import java.util.HashMap;
import java.util.LinkedHashSet;
import java.util.List;
import java.util.Map;
@@ -65,7 +65,7 @@ public class GetIpRangeTask { */
public Map<Long, String> getNumAndIpReal(List<String> allIp) throws InterruptedException, ExecutionException {
logger.info("开始将ip转换为数字");
- Map<Long, String> map = new LinkedHashMap<>();
+ Map<Long, String> map = new HashMap<>();
int ever = 10000;// 每个线程处理10000条ip转数字
int count = allIp.size() / ever;
if (allIp.size() % ever != 0) {
@@ -231,7 +231,6 @@ public class GetIpRangeTask { } else {
logger.info("获取境外ip成功,共{}条", allIp.size());
}
- logger.info("获取境外ip成功,共{}条", allIp.size());
Map<Long, String> map = getNumAndIpReal(allIp);
Set<Long> keySet = map.keySet();
long[] array = new long[keySet.size()];
diff --git a/src/main/resources/applicationContext-redis.xml.astana b/src/main/resources/applicationContext-redis.xml.astana index a6a25ed..ca1d6b2 100644 --- a/src/main/resources/applicationContext-redis.xml.astana +++ b/src/main/resources/applicationContext-redis.xml.astana @@ -26,7 +26,7 @@ </bean>
<bean id="jedisPool" class="redis.clients.jedis.JedisSentinelPool">
- <constructor-arg name="masterName" value="mymaster" />
+ <constructor-arg name="masterName" value="pzff_master" />
<constructor-arg name="sentinels">
<set>
<value>${redis.hostAndPort1}</value>
diff --git a/src/main/resources/jdbc.properties.astana b/src/main/resources/jdbc.properties.astana index 6480bcb..9449877 100644 --- a/src/main/resources/jdbc.properties.astana +++ b/src/main/resources/jdbc.properties.astana @@ -1,8 +1,8 @@ #==========日志库 Mysql======================= jdbc.log.driver=com.mysql.jdbc.Driver #阿斯坦纳 -jdbc.log.url=jdbc:mysql://10.0.4.22:8066/galaxy-service?useUnicode=true&characterEncoding=UTF-8&zeroDateTimeBehavior=convertToNull -jdbc.log.username=mycat +jdbc.log.url=jdbc:mysql://10.0.4.222:3306/galaxy-service?useUnicode=true&characterEncoding=UTF-8&zeroDateTimeBehavior=convertToNull +jdbc.log.username=galaxy #实际密码ceiec2018! jdbc.log.key=73FU0t+Z8+PUxD/PArzvkQ== jdbc.log.password=lKZSz7h4AIhgKJb2l2GBMw== |
