From 0530479502c5f1efaf762cb3c8fde674411a4298 Mon Sep 17 00:00:00 2001 From: RenKaiGe-Office Date: Mon, 2 Jul 2018 16:10:48 +0800 Subject: [PATCH] =?UTF-8?q?1:=E5=88=A0=E9=99=A4=E6=97=A0=E7=94=A8=E7=9A=84?= =?UTF-8?q?=E6=95=B0=E6=8D=AE=E5=BA=93=E8=BF=9E=E6=8E=A5=202:=E4=BF=AE?= =?UTF-8?q?=E6=94=B9pom=E4=B8=AD=E4=BD=BF=E7=94=A8=E7=9A=84hive=E7=89=88?= =?UTF-8?q?=E6=9C=AC=E4=B8=BA2.1.1=203:=E6=B7=BB=E5=8A=A0IP=E5=9C=B0?= =?UTF-8?q?=E5=9D=80=E6=97=A5=E5=BF=97=E6=9F=A5=E8=AF=A2=E6=9C=8D=E5=8A=A1?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- pom.xml | 3 +- .../nis/datasource/CustomerContextHolder.java | 5 - src/main/java/com/nis/domain/LogEntity.java | 308 +++------- ...eptor.java => DataSourceAInterceptor.java} | 25 +- .../interceptor/DataSourceBInterceptor.java | 2 +- .../interceptor/DataSourceCInterceptor.java | 60 -- .../interceptor/DataSourceEInterceptor.java | 38 -- .../persistence/interceptor/SQLHelper.java | 10 +- src/main/java/com/nis/util/Constants.java | 8 +- .../java/com/nis/util/HiveDataSource.java | 85 +-- src/main/java/com/nis/util/HiveJDBC.java | 2 +- .../web/controller/restful/LogController.java | 580 ++++++++++-------- .../java/com/nis/web/dao/DfLogSearchDao.java | 24 + .../java/com/nis/web/dao/DfLogSearchDao.xml | 49 ++ .../com/nis/web/service/BaseLogService.java | 181 +++--- .../com/nis/web/service/HiveSqlService.java | 56 +- .../nis/web/service/SaveRequestLogThread.java | 2 +- .../resources/applicationContext-mybatis.xml | 69 +-- src/main/resources/jdbc.properties | 37 +- src/main/resources/nis.properties | 10 +- src/main/resources/spring-mvc.xml | 16 +- src/main/resources/table.properties | 62 +- 22 files changed, 731 insertions(+), 901 deletions(-) rename src/main/java/com/nis/interceptor/{DataSourceDInterceptor.java => DataSourceAInterceptor.java} (51%) delete mode 100644 src/main/java/com/nis/interceptor/DataSourceCInterceptor.java delete mode 100644 src/main/java/com/nis/interceptor/DataSourceEInterceptor.java create mode 100644 src/main/java/com/nis/web/dao/DfLogSearchDao.java create mode 100644 src/main/java/com/nis/web/dao/DfLogSearchDao.xml diff --git a/pom.xml b/pom.xml index 11aa66b..da62685 100644 --- a/pom.xml +++ b/pom.xml @@ -570,10 +570,11 @@ 2.4 jdk15 + org.apache.hive hive-jdbc - 2.1.0 + 2.1.1 org.apache.logging.log4j diff --git a/src/main/java/com/nis/datasource/CustomerContextHolder.java b/src/main/java/com/nis/datasource/CustomerContextHolder.java index 5ad214b..31c2a32 100644 --- a/src/main/java/com/nis/datasource/CustomerContextHolder.java +++ b/src/main/java/com/nis/datasource/CustomerContextHolder.java @@ -4,11 +4,6 @@ public class CustomerContextHolder { public static final String DATA_SOURCE_A = "dataSourceA"; public static final String DATA_SOURCE_B = "dataSourceB"; public static final String DATA_SOURCE_C = "dataSourceC"; - public static final String DATA_SOURCE_D = "dataSourceD"; - public static final String DATA_SOURCE_E = "dataSourceE"; - public static final String DATA_SOURCE_F = "dataSourceF"; - public static final String DATA_SOURCE_G = "dataSourceG"; - public static final String DATA_SOURCE_H = "dataSourceH"; //线程本地环境 private static final ThreadLocal contextHolder = new ThreadLocal(); diff --git a/src/main/java/com/nis/domain/LogEntity.java b/src/main/java/com/nis/domain/LogEntity.java index 4f07d54..a73907d 100644 --- a/src/main/java/com/nis/domain/LogEntity.java +++ b/src/main/java/com/nis/domain/LogEntity.java @@ -9,8 +9,6 @@ package com.nis.domain; import java.io.Serializable; -import java.math.BigDecimal; -import java.text.SimpleDateFormat; import java.util.Date; import java.util.Map; @@ -77,57 +75,16 @@ public abstract class LogEntity implements Serializable { @ApiModelProperty(value = "用户自定义域", required = true) private String userRegion; - protected Long foundTimeCluster; - protected Long recvTimeCluster; - protected String searchCfgId; + protected String searchTransProto; + protected String searchDIp; + protected String searchSIp; + protected String searchDirection; + protected String searchService; + protected String searchEntranceId; + protected String searchCapIp; protected String searchFoundStartTime; protected String searchFoundEndTime; - protected Long searchFoundStartTimeCluster; - protected Long searchFoundEndTimeCluster; - protected String searchProtocol; - protected String searchServerIp; - protected String searchClientIp; - protected Integer searchDirection; - protected String searchServiceType; - protected String searchEntranceId; - protected String searchCljIp; - - @JsonIgnore - public Long getFoundTimeCluster() { - return foundTimeCluster; - } - - @JsonIgnore - public Long getRecvTimeCluster() { - return recvTimeCluster; - } - - public void setFoundTimeCluster(Long foundTimeCluster) { - this.foundTimeCluster = foundTimeCluster; - } - - public void setRecvTimeCluster(Long recvTimeCluster) { - this.recvTimeCluster = recvTimeCluster; - } - - @JsonIgnore - public Long getSearchFoundStartTimeCluster() { - return searchFoundStartTimeCluster; - } - - public void setSearchFoundStartTimeCluster(Long searchFoundStartTimeCluster) { - this.searchFoundStartTimeCluster = searchFoundStartTimeCluster; - } - - @JsonIgnore - public Long getSearchFoundEndTimeCluster() { - return searchFoundEndTimeCluster; - } - - public void setSearchFoundEndTimeCluster(Long searchFoundEndTimeCluster) { - this.searchFoundEndTimeCluster = searchFoundEndTimeCluster; - } /** * 当前实体分页对象 @@ -151,6 +108,7 @@ public abstract class LogEntity implements Serializable { /** * @return id */ + @JsonIgnore public Long getId() { return id; } @@ -183,9 +141,6 @@ public abstract class LogEntity implements Serializable { */ @JsonSerialize(using = JsonDateSerializer.class) public Date getFoundTime() { - if (foundTime == null && this.foundTimeCluster != null) { - foundTime = new Date(this.foundTimeCluster * 1000); - } return foundTime; } @@ -202,9 +157,6 @@ public abstract class LogEntity implements Serializable { */ @JsonSerialize(using = JsonDateSerializer.class) public Date getRecvTime() { - if (recvTime == null && this.recvTimeCluster != null) { - recvTime = new Date(this.recvTimeCluster * 1000); - } return recvTime; } @@ -353,151 +305,6 @@ public abstract class LogEntity implements Serializable { return null == this.getId() ? false : this.getId().equals(that.getId()); } - /** - * @return searchFoundStartTime - */ - @JsonIgnore - public String getSearchFoundStartTime() { - return searchFoundStartTime; - } - - /** - * @param searchFoundStartTime - * 要设置的 searchFoundStartTime - */ - public void setSearchFoundStartTime(String searchFoundStartTime) { - this.searchFoundStartTime = searchFoundStartTime; - } - - /** - * @return searchFoundEndTime - */ - @JsonIgnore - public String getSearchFoundEndTime() { - return searchFoundEndTime; - } - - /** - * @param searchFoundEndTime - * 要设置的 searchFoundEndTime - */ - public void setSearchFoundEndTime(String searchFoundEndTime) { - this.searchFoundEndTime = searchFoundEndTime; - } - - /** - * @return searchCfgId - */ - @JsonIgnore - public String getSearchCfgId() { - return searchCfgId; - } - - /** - * @param searchCfgId - * 要设置的 searchCfgId - */ - public void setSearchCfgId(String searchCfgId) { - this.searchCfgId = searchCfgId; - } - - /** - * @return searchProtocol - */ - @JsonIgnore - public String getSearchProtocol() { - return searchProtocol; - } - - /** - * @param searchProtocol - * 要设置的 searchProtocol - */ - public void setSearchProtocol(String searchProtocol) { - this.searchProtocol = searchProtocol; - } - - /** - * @return searchServerIp - */ - @JsonIgnore - public String getSearchServerIp() { - return searchServerIp; - } - - /** - * @param searchServerIp - * 要设置的 searchServerIp - */ - public void setSearchServerIp(String searchServerIp) { - this.searchServerIp = searchServerIp; - } - - /** - * @return searchClientIp - */ - @JsonIgnore - public String getSearchClientIp() { - return searchClientIp; - } - - /** - * @param searchClientIp - * 要设置的 searchClientIp - */ - public void setSearchClientIp(String searchClientIp) { - this.searchClientIp = searchClientIp; - } - - /** - * @return searchEntranceId - */ - @JsonIgnore - public String getSearchEntranceId() { - return searchEntranceId; - } - - /** - * @param searchEntranceId - * 要设置的 searchEntranceId - */ - public void setSearchEntranceId(String searchEntranceId) { - this.searchEntranceId = searchEntranceId; - } - - /** - * @return searchCljIp - */ - @JsonIgnore - public String getSearchCljIp() { - return searchCljIp; - } - - /** - * @param searchCljIp - * 要设置的 searchCljIp - */ - - public void setSearchCljIp(String searchCljIp) { - this.searchCljIp = searchCljIp; - } - - /** - * @return searchServiceType - */ - @JsonIgnore - public String getSearchServiceType() { - return searchServiceType; - } - - /** - * @param searchServiceType - * 要设置的 searchServiceType - */ - public void setSearchServiceType(String searchServiceType) { - this.searchServiceType = searchServiceType; - } - public Integer getAddrType() { return addrType; } @@ -522,15 +329,6 @@ public abstract class LogEntity implements Serializable { this.direction = direction; } - @JsonIgnore - public Integer getSearchDirection() { - return searchDirection; - } - - public void setSearchDirection(Integer searchDirection) { - this.searchDirection = searchDirection; - } - public String getUserRegion() { return userRegion; } @@ -544,4 +342,94 @@ public abstract class LogEntity implements Serializable { return ReflectionToStringBuilder.toString(this); } + @JsonIgnore + public String getSearchCfgId() { + return searchCfgId; + } + + public void setSearchCfgId(String searchCfgId) { + this.searchCfgId = searchCfgId; + } + + @JsonIgnore + public String getSearchTransProto() { + return searchTransProto; + } + + public void setSearchTransProto(String searchTransProto) { + this.searchTransProto = searchTransProto; + } + + @JsonIgnore + public String getSearchDIp() { + return searchDIp; + } + + public void setSearchDIp(String searchDIp) { + this.searchDIp = searchDIp; + } + + @JsonIgnore + public String getSearchSIp() { + return searchSIp; + } + + public void setSearchSIp(String searchSIp) { + this.searchSIp = searchSIp; + } + + @JsonIgnore + public String getSearchDirection() { + return searchDirection; + } + + public void setSearchDirection(String searchDirection) { + this.searchDirection = searchDirection; + } + + @JsonIgnore + public String getSearchService() { + return searchService; + } + + public void setSearchService(String searchService) { + this.searchService = searchService; + } + + @JsonIgnore + public String getSearchEntranceId() { + return searchEntranceId; + } + + public void setSearchEntranceId(String searchEntranceId) { + this.searchEntranceId = searchEntranceId; + } + + @JsonIgnore + public String getSearchCapIp() { + return searchCapIp; + } + + public void setSearchCapIp(String searchCapIp) { + this.searchCapIp = searchCapIp; + } + + @JsonIgnore + public String getSearchFoundStartTime() { + return searchFoundStartTime; + } + + public void setSearchFoundStartTime(String searchFoundStartTime) { + this.searchFoundStartTime = searchFoundStartTime; + } + + @JsonIgnore + public String getSearchFoundEndTime() { + return searchFoundEndTime; + } + + public void setSearchFoundEndTime(String searchFoundEndTime) { + this.searchFoundEndTime = searchFoundEndTime; + } + } diff --git a/src/main/java/com/nis/interceptor/DataSourceDInterceptor.java b/src/main/java/com/nis/interceptor/DataSourceAInterceptor.java similarity index 51% rename from src/main/java/com/nis/interceptor/DataSourceDInterceptor.java rename to src/main/java/com/nis/interceptor/DataSourceAInterceptor.java index 9b5315b..56adbca 100644 --- a/src/main/java/com/nis/interceptor/DataSourceDInterceptor.java +++ b/src/main/java/com/nis/interceptor/DataSourceAInterceptor.java @@ -9,18 +9,18 @@ import org.springframework.web.servlet.ModelAndView; import com.nis.datasource.CustomerContextHolder; -public class DataSourceDInterceptor implements HandlerInterceptor { - Logger logger = Logger.getLogger(DataSourceDInterceptor.class); +public class DataSourceAInterceptor implements HandlerInterceptor { + Logger logger = Logger.getLogger(DataSourceAInterceptor.class); - @Override - public boolean preHandle(HttpServletRequest request, - HttpServletResponse response, Object handler) throws Exception { - logger.info("开启测试配置库---"); - CustomerContextHolder.setCustomerType(CustomerContextHolder.DATA_SOURCE_D);//开启数据源C + public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) + throws Exception { + logger.info("开启数据源日志操作库---" + System.currentTimeMillis()); + CustomerContextHolder.setCustomerType(CustomerContextHolder.DATA_SOURCE_A);// 开启数据源A + logger.info("日志数据源开启成功---" + System.currentTimeMillis()); return true; } - + @Override public void postHandle(HttpServletRequest arg0, HttpServletResponse arg1, Object arg2, ModelAndView arg3) throws Exception { @@ -28,16 +28,11 @@ public class DataSourceDInterceptor implements HandlerInterceptor { } - @Override - public void afterCompletion(HttpServletRequest request, - HttpServletResponse response, Object handler, Exception ex) + public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) throws Exception { CustomerContextHolder.clearCustomerType(); - logger.info("释放测试配置库---"); + logger.info("释放数据源日志操作库---"); } - - - } diff --git a/src/main/java/com/nis/interceptor/DataSourceBInterceptor.java b/src/main/java/com/nis/interceptor/DataSourceBInterceptor.java index 0bff691..e5ce979 100644 --- a/src/main/java/com/nis/interceptor/DataSourceBInterceptor.java +++ b/src/main/java/com/nis/interceptor/DataSourceBInterceptor.java @@ -16,7 +16,7 @@ public class DataSourceBInterceptor implements HandlerInterceptor { HttpServletResponse response, Object handler) throws Exception { logger.info("开启数据源配置操作库---"); CustomerContextHolder.setCustomerType(CustomerContextHolder.DATA_SOURCE_B);//开启数据源B - + logger.info("mysql日志数据源开启成功---"+System.currentTimeMillis()); return true; } diff --git a/src/main/java/com/nis/interceptor/DataSourceCInterceptor.java b/src/main/java/com/nis/interceptor/DataSourceCInterceptor.java deleted file mode 100644 index e27bb98..0000000 --- a/src/main/java/com/nis/interceptor/DataSourceCInterceptor.java +++ /dev/null @@ -1,60 +0,0 @@ -package com.nis.interceptor; - -import javax.servlet.http.HttpServletRequest; -import javax.servlet.http.HttpServletResponse; - -import org.apache.log4j.Logger; -import org.springframework.web.servlet.HandlerInterceptor; -import org.springframework.web.servlet.ModelAndView; - -import com.nis.datasource.CustomerContextHolder; -import com.nis.restful.RestBusinessCode; -import com.nis.restful.RestServiceException; -import com.nis.util.Constants; - -public class DataSourceCInterceptor implements HandlerInterceptor { - Logger logger = Logger.getLogger(DataSourceCInterceptor.class); - String searchActiveSys=""; - - @Override - public boolean preHandle(HttpServletRequest request, - HttpServletResponse response, Object handler) throws Exception { -// searchActiveSys=request.getParameter("searchActiveSys"); -// if(searchActiveSys == null -// || !(Constants.ACTIVESYS_A.equals(searchActiveSys) -// || Constants.ACTIVESYS_C.equals(searchActiveSys)) -// ) searchActiveSys=Constants.ACTIVESYS_B; -// if(Constants.ACTIVESYS_A.equals(searchActiveSys)){ -// logger.info("开启数据源日志A操作库---"+System.currentTimeMillis()); -// CustomerContextHolder.setCustomerType(CustomerContextHolder.DATA_SOURCE_F);//开启数据源F -// }else if(Constants.ACTIVESYS_C.equals(searchActiveSys)){ -// logger.info("开启数据源日志C操作库---"+System.currentTimeMillis()); -// CustomerContextHolder.setCustomerType(CustomerContextHolder.DATA_SOURCE_G);//开启数据源F -// }else{ - logger.info("开启数据源日志操作库---"+System.currentTimeMillis()); - CustomerContextHolder.setCustomerType(CustomerContextHolder.DATA_SOURCE_C);//开启数据源C -// } - logger.info("日志数据源开启成功---"+System.currentTimeMillis()); - return true; - } - - @Override - public void postHandle(HttpServletRequest arg0, HttpServletResponse arg1, Object arg2, ModelAndView arg3) - throws Exception { - logger.info("postHandle---"); - - } - - - @Override - public void afterCompletion(HttpServletRequest request, - HttpServletResponse response, Object handler, Exception ex) - throws Exception { - CustomerContextHolder.clearCustomerType(); - logger.info("释放数据源日志操作库---"); - } - - - - -} diff --git a/src/main/java/com/nis/interceptor/DataSourceEInterceptor.java b/src/main/java/com/nis/interceptor/DataSourceEInterceptor.java deleted file mode 100644 index f2db78d..0000000 --- a/src/main/java/com/nis/interceptor/DataSourceEInterceptor.java +++ /dev/null @@ -1,38 +0,0 @@ -package com.nis.interceptor; - -import javax.servlet.http.HttpServletRequest; -import javax.servlet.http.HttpServletResponse; - -import org.apache.log4j.Logger; -import org.springframework.web.servlet.HandlerInterceptor; -import org.springframework.web.servlet.ModelAndView; - -import com.nis.datasource.CustomerContextHolder; - -public class DataSourceEInterceptor implements HandlerInterceptor { - Logger logger = Logger.getLogger(DataSourceEInterceptor.class); - - @Override - public void afterCompletion(HttpServletRequest arg0, HttpServletResponse arg1, Object arg2, Exception arg3) - throws Exception { - CustomerContextHolder.clearCustomerType(); - logger.info("释放数据静控操作库---"); - - } - - @Override - public void postHandle(HttpServletRequest arg0, HttpServletResponse arg1, Object arg2, ModelAndView arg3) - throws Exception { - logger.info("postHandle---"); - - } - - @Override - public boolean preHandle(HttpServletRequest arg0, HttpServletResponse arg1, Object arg2) throws Exception { - logger.info("开启数据源静控操作库---"); - CustomerContextHolder.setCustomerType(CustomerContextHolder.DATA_SOURCE_E);//开启数据源C - - return true; - } - -} diff --git a/src/main/java/com/nis/persistence/interceptor/SQLHelper.java b/src/main/java/com/nis/persistence/interceptor/SQLHelper.java index e4a772b..00ab46d 100644 --- a/src/main/java/com/nis/persistence/interceptor/SQLHelper.java +++ b/src/main/java/com/nis/persistence/interceptor/SQLHelper.java @@ -125,17 +125,9 @@ public class SQLHelper { } else if (dataSource.equals(CustomerContextHolder.DATA_SOURCE_A)) { return "mysql"; } else if (dataSource.equals(CustomerContextHolder.DATA_SOURCE_B)) { - return "oracle"; + return "mysql"; } else if (dataSource.equals(CustomerContextHolder.DATA_SOURCE_C)) { return "mysql"; - } else if (dataSource.equals(CustomerContextHolder.DATA_SOURCE_D)) { - return "oracle"; - } else if (dataSource.equals(CustomerContextHolder.DATA_SOURCE_F)) { - return "oracle"; - } else if (dataSource.equals(CustomerContextHolder.DATA_SOURCE_G)) { - return "oracle"; - } else if (dataSource.equals(CustomerContextHolder.DATA_SOURCE_H)) {//神通数据库 - return "cluster"; }else { return "mysql"; } diff --git a/src/main/java/com/nis/util/Constants.java b/src/main/java/com/nis/util/Constants.java index d7cfa7d..84ff63c 100644 --- a/src/main/java/com/nis/util/Constants.java +++ b/src/main/java/com/nis/util/Constants.java @@ -181,13 +181,9 @@ public final class Constants { public static final String SEARCH_ES_HOSTANDPORT_C = Configurations.getStringProperty("search.eshostandport_C", null); /** - * 数据中心A版数据库名称,程序中每次查询时使用的数据库名称 use HIVEADBNAME + * 数据中心数据库名称,程序中每次查询时使用的数据库名称 use HIVEDBNAME */ - public static final String HIVEADBNAME = Configurations.getStringProperty("jdbc.hive.AName", "xa_dfbhit_hive"); - /** - * 数据中心B版数据库名称,程序中每次查询时使用的数据库名称 use HIVEBDBNAME - */ - public static final String HIVEBDBNAME = Configurations.getStringProperty("jdbc.hive.BName", "xa_z2_mesalog_hive"); + public static final String HIVEDBNAME = Configurations.getStringProperty("jdbc.hive.Name", "xa_dfbhit_hive"); public static final String DIGEST_GEN_TOOL_PATH = Configurations.getStringProperty("digest.gen.tool.path", "maat-redis/digest_gen"); diff --git a/src/main/java/com/nis/util/HiveDataSource.java b/src/main/java/com/nis/util/HiveDataSource.java index de551fb..7ed6708 100644 --- a/src/main/java/com/nis/util/HiveDataSource.java +++ b/src/main/java/com/nis/util/HiveDataSource.java @@ -3,55 +3,56 @@ package com.nis.util; import java.sql.Connection; import java.sql.ResultSet; import java.sql.Statement; -import org.apache.log4j.Logger; -import org.springframework.context.ApplicationContext; -import org.springframework.context.support.ClassPathXmlApplicationContext; + +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + import com.jolbox.bonecp.BoneCPDataSource; +import com.nis.web.service.SpringContextHolder; public class HiveDataSource { - private final static Logger logger = Logger.getLogger(HiveDataSource.class); + private final static Logger logger = LoggerFactory.getLogger(HiveDataSource.class); + static BoneCPDataSource datasource = null; static Connection conn = null; - static ResultSet rsA = null; - static Statement stA = null; + static ResultSet rs = null; + static Statement st = null; - static ResultSet rsB = null; - static Statement stB = null; - - public static ResultSet query(String sql, String searchActiveSys) throws Exception { - if (null != searchActiveSys && searchActiveSys.equals("4")) {// A版数据库 - logger.info("开始连接数据中心A版日志库--------------------------"); - if (conn == null || conn.isClosed()) { - ApplicationContext ct = new ClassPathXmlApplicationContext("applicationContext-mybatis.xml"); - BoneCPDataSource datasource = (BoneCPDataSource) ct.getBean("HiveADataSource"); - conn = datasource.getConnection(); - } - logger.info("连接数据中心A版日志库成功--------------------------"); - stA = conn.createStatement(); - String hiveAName = "use " + Constants.HIVEADBNAME; - // stA.execute("use xa_dfbhit_p_hive"); - stA.execute(hiveAName); - logger.info("开始执行查询数据中心A版日志库操作--------------------------" + sql); - rsA = stA.executeQuery(sql); - logger.info("执行查询数据中心A版日志库成功--------------------------"); - return rsA; - } else {// 目前默认B版数据库,后期增加C版数据库 - logger.info("开始连接数据中心B版日志库--------------------------"); - if (conn == null || conn.isClosed()) { - ApplicationContext ct = new ClassPathXmlApplicationContext("applicationContext-mybatis.xml"); - BoneCPDataSource datasource = (BoneCPDataSource) ct.getBean("HiveBDataSource"); - conn = datasource.getConnection(); - } - logger.info("连接数据中心B版日志库成功--------------------------"); - stB = conn.createStatement(); - String hiveBName = "use " + Constants.HIVEBDBNAME; - // stB.execute("use xa_z2_mesalog_hive"); - stB.execute(hiveBName); - logger.info("开始执行查询数据中心B版日志库操作--------------------------" + sql); - rsB = stB.executeQuery(sql); - logger.info("执行查询数据中心B版日志库成功--------------------------"); - return rsB; + public static ResultSet query(String sql) throws Exception { + if (datasource == null) { + datasource = (BoneCPDataSource) SpringContextHolder.getBean("HiveDataSource"); } + conn = datasource.getConnection(); + logger.info("连接数据中心日志库成功--------------------------"); + st = conn.createStatement(); + // logger.info("开始选择{}数据库--------------------------", Constants.HIVEDBNAME); + // String hiveAName = "use " + Constants.HIVEDBNAME; + // st.execute(hiveAName); + // logger.info("选择数据库{}成功,开始执行查询", Constants.HIVEDBNAME); + // logger.info("选择数据库{}成功,开始执行查询", Constants.HIVEDBNAME); + rs = st.executeQuery(sql); + logger.info("执行查询语句成功sql={}",sql); + return rs; } + public static void closeConn() { + try { + if (rs != null) { + rs.close(); + rs = null; + } + if (st != null) { + st.close(); + st = null; + } + if (conn != null) { + conn.close(); + conn = null; + } + logger.info("关闭数据中心连接成功"); + } catch (Exception e) { + e.printStackTrace(); + logger.error("关闭数据中心连接失败,失败原因" + e); + } + } } diff --git a/src/main/java/com/nis/util/HiveJDBC.java b/src/main/java/com/nis/util/HiveJDBC.java index 04f9174..8faddbd 100644 --- a/src/main/java/com/nis/util/HiveJDBC.java +++ b/src/main/java/com/nis/util/HiveJDBC.java @@ -169,7 +169,7 @@ public class HiveJDBC { listObject.add(map2Obj(map, entityClass)); } logger.info("开始关闭数据中心连接"); - HiveJDBC.closeConn(); + HiveDataSource.closeConn(); if (null == listString || listString.size() == 0 || null == listObject || listObject.size() == 0) { return null; } else { diff --git a/src/main/java/com/nis/web/controller/restful/LogController.java b/src/main/java/com/nis/web/controller/restful/LogController.java index 388969c..1566187 100644 --- a/src/main/java/com/nis/web/controller/restful/LogController.java +++ b/src/main/java/com/nis/web/controller/restful/LogController.java @@ -1,5 +1,10 @@ package com.nis.web.controller.restful; +import java.sql.ResultSet; +import java.text.SimpleDateFormat; +import java.util.ArrayList; +import java.util.HashMap; +import java.util.List; import java.util.Map; import javax.servlet.http.HttpServletRequest; @@ -11,6 +16,7 @@ import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestMethod; import org.springframework.web.bind.annotation.RestController; +import com.nis.domain.LogEntity; import com.nis.domain.Page; import com.nis.domain.restful.NtcDnsLog; import com.nis.domain.restful.NtcFtpLog; @@ -24,8 +30,15 @@ import com.nis.domain.restful.NtcPptpLog; import com.nis.domain.restful.NtcPzReport; import com.nis.domain.restful.NtcSshLog; import com.nis.domain.restful.NtcSslLog; +import com.nis.restful.RestServiceException; +import com.nis.util.Configurations; import com.nis.util.Constants; +import com.nis.util.DateUtils; +import com.nis.util.HiveJDBC; +import com.nis.util.JsonMapper; import com.nis.web.controller.BaseRestController; +import com.nis.web.service.BaseLogService; +import com.nis.web.service.HiveSqlService; import com.nis.web.service.SaveRequestLogThread; import com.nis.web.service.ServicesRequestLogService; import com.nis.web.service.restful.LogTestService; @@ -33,252 +46,333 @@ import com.wordnik.swagger.annotations.Api; import com.wordnik.swagger.annotations.ApiOperation; /** - * Created by darnell on 2018/6/10. + * + *

Title: LogController

+ *

Description: 日志查询controller

+ *

Company: IIE

+ * @author rkg + * @date 2018年7月2日 + * */ @RestController @RequestMapping("${servicePath}/log/v1") @Api(value = "LogController", description = "配置命中日志基本服务接口") -public class LogController extends BaseRestController{ - @Autowired - public LogTestService testService; - - @Autowired - protected ServicesRequestLogService servicesRequestLogService; - - @RequestMapping(value = "/ntcIpLogs", method = RequestMethod.GET) - @ApiOperation(value = "IP地址日志查询", httpMethod = "GET", notes = "对应配置为IP地址管理,存储动作为阻断与监测的命中日志。对日志功能IP地址提供数据基础查询服务") - public Map ntcIpLogs(Page page, NtcIpLog ntcIpLog, Model model, HttpServletRequest request, HttpServletResponse response) { - long start = System.currentTimeMillis(); - SaveRequestLogThread auditLogThread = super.saveRequestLog(servicesRequestLogService, Constants.OPACTION_GET, request, null); - - Page ntcIpLogPage = new Page<>(); - try { - ntcIpLogPage = testService.findNtcIpLogPage( - new Page(request, response, NtcIpLog.class), ntcIpLog); - - } catch(Exception e) { - e.printStackTrace(); - } - - - - return serviceLogResponse(auditLogThread, System.currentTimeMillis() - start, request, "IP地址日志检索成功", ntcIpLogPage, 0); - } - - - @RequestMapping(value = "/ntcHttpLogs", method = RequestMethod.GET) - @ApiOperation(value = "HTTP日志查询", httpMethod = "GET", notes = "对应配置为“网站管理-HTTP”,存储动作为阻断与监测的命中日志。对日志功能“网站管理-HTTP”提供数据基础查询服务") - public Map ntcHttpLogs(Page page, NtcHttpLog ntcHttpLog, Model model, HttpServletRequest request, HttpServletResponse response) { - long start = System.currentTimeMillis(); - SaveRequestLogThread auditLogThread = super.saveRequestLog(servicesRequestLogService, Constants.OPACTION_GET, request, null); - - Page ntcHttpLogPage = new Page<>(); - try { - ntcHttpLogPage = testService.findNtcHttpLogPage( - new Page(request, response, NtcHttpLog.class), ntcHttpLog); - - } catch(Exception e) { - e.printStackTrace(); - } - - - return serviceLogResponse(auditLogThread, System.currentTimeMillis() - start, request, "Http日志检索成功", ntcHttpLogPage, 0); - } - - - @RequestMapping(value = "/ntcDnsLogs", method = RequestMethod.GET) - @ApiOperation(value = "DNS日志查询", httpMethod = "GET", notes = "对应配置为“网站管理-DNS”,存储动作为阻断与监测的命中日志。对日志功能“网站管理-DNS”提供数据基础查询服务。") - public Map ntcDnsLogs(Page page, NtcDnsLog ntcDnsLog, Model model, HttpServletRequest request, HttpServletResponse response) { - long start = System.currentTimeMillis(); - SaveRequestLogThread auditLogThread = super.saveRequestLog(servicesRequestLogService, Constants.OPACTION_GET, request, null); - - Page ntcDnsLogPage = new Page<>(); - try { - ntcDnsLogPage = testService.findNtcDnsLogPage( - new Page(request, response, NtcDnsLog.class), ntcDnsLog); - - } catch(Exception e) { - e.printStackTrace(); - } - - - return serviceLogResponse(auditLogThread, System.currentTimeMillis() - start, request, "Dns日志检索成功", ntcDnsLogPage, 0); - } - - @RequestMapping(value = "/ntcMailLogs", method = RequestMethod.GET) - @ApiOperation(value = "EMAIL日志查询", httpMethod = "GET", notes = "对应配置为“邮件管理”,存储动作为阻断与监测的命中日志。对日志功能“邮件管理”提供数据基础查询服务。") - public Map ntcMailLogs(Page page, NtcMailLog ntcMailLog, Model model, HttpServletRequest request, HttpServletResponse response) { - long start = System.currentTimeMillis(); - SaveRequestLogThread auditLogThread = super.saveRequestLog(servicesRequestLogService, Constants.OPACTION_GET, request, null); - - Page ntcMailLogPage = new Page<>(); - try { - ntcMailLogPage = testService.findNtcMailLogPage( - new Page(request, response, NtcMailLog.class), ntcMailLog); - - } catch(Exception e) { - e.printStackTrace(); - } - - - return serviceLogResponse(auditLogThread, System.currentTimeMillis() - start, request, "Mail日志检索成功", ntcMailLogPage, 0); - } - - - @RequestMapping(value = "/ntcSslLogs", method = RequestMethod.GET) - @ApiOperation(value = "SSL日志查询", httpMethod = "GET", notes = "对应配置为“网站管理-SSL”,存储动作为阻断与监测的命中日志。对日志功能“网站管理-SSL”提供数据基础查询服务。") - public Map ntcSslLogs(Page page, NtcSslLog ntcSslLog, Model model, HttpServletRequest request, HttpServletResponse response) { - long start = System.currentTimeMillis(); - SaveRequestLogThread auditLogThread = super.saveRequestLog(servicesRequestLogService, Constants.OPACTION_GET, request, null); - - Page ntcSslLogPage = new Page<>(); - try { - ntcSslLogPage = testService.findNtcSslLogPage( - new Page(request, response, NtcSslLog.class), ntcSslLog); - - } catch(Exception e) { - e.printStackTrace(); - } - - - return serviceLogResponse(auditLogThread, System.currentTimeMillis() - start, request, "SSL日志检索成功", ntcSslLogPage, 0); - } - - - @RequestMapping(value = "/ntcPptpLogs", method = RequestMethod.GET) - @ApiOperation(value = "PPTP日志查询", httpMethod = "GET", notes = "对应配置为“隧道管理-PPTP”,存储动作为阻断与监测的命中日志。对日志功能“隧道管理-PPTP”提供数据基础查询服务。") - public Map ntcPptpLogs(Page page, NtcPptpLog ntcPptpLog, Model model, HttpServletRequest request, HttpServletResponse response) { - long start = System.currentTimeMillis(); - SaveRequestLogThread auditLogThread = super.saveRequestLog(servicesRequestLogService, Constants.OPACTION_GET, request, null); - - Page ntcPptpLogPage = new Page<>(); - try { - ntcPptpLogPage = testService.findNtcPptpLogPage( - new Page(request, response, NtcPptpLog.class), ntcPptpLog); - - } catch(Exception e) { - e.printStackTrace(); - } - - - return serviceLogResponse(auditLogThread, System.currentTimeMillis() - start, request, "PPTP日志检索成功", ntcPptpLogPage, 0); - } - - - @RequestMapping(value = "/ntcL2tpLogs", method = RequestMethod.GET) - @ApiOperation(value = "L2TP日志查询", httpMethod = "GET", notes = "对应配置为“隧道管理-L2TP”,存储动作为阻断与监测的命中日志。对日志功能“隧道管理- L2TP”提供数据基础查询服务。") - public Map ntcL2tpLogs(Page page, NtcL2tpLog ntcL2tpLog, Model model, HttpServletRequest request, HttpServletResponse response) { - long start = System.currentTimeMillis(); - SaveRequestLogThread auditLogThread = super.saveRequestLog(servicesRequestLogService, Constants.OPACTION_GET, request, null); - - Page ntcL2tpLogPage = new Page<>(); - try { - ntcL2tpLogPage = testService.findNtcL2tpLogPage( - new Page(request, response, NtcL2tpLog.class), ntcL2tpLog); - - } catch(Exception e) { - e.printStackTrace(); - } - - - return serviceLogResponse(auditLogThread, System.currentTimeMillis() - start, request, "L2TP日志检索成功", ntcL2tpLogPage, 0); - } - - - @RequestMapping(value = "/ntcOpenvpnLogs", method = RequestMethod.GET) - @ApiOperation(value = "OPENVPN日志查询", httpMethod = "GET", notes = "对应配置为“隧道管理-OPENVPN”,存储动作为阻断与监测的命中日志。对日志功能“隧道管理- OPENVPN”提供数据基础查询服务。") - public Map ntcOpenvpnLogs(Page page, NtcOpenvpnLog ntcOpenvpnLog, Model model, HttpServletRequest request, HttpServletResponse response) { - long start = System.currentTimeMillis(); - SaveRequestLogThread auditLogThread = super.saveRequestLog(servicesRequestLogService, Constants.OPACTION_GET, request, null); - - Page ntcOpenvpnLogPage = new Page<>(); - try { - ntcOpenvpnLogPage = testService.findNtcOpenvpnLogPage( - new Page(request, response, NtcOpenvpnLog.class), ntcOpenvpnLog); - - } catch(Exception e) { - e.printStackTrace(); - } - - - return serviceLogResponse(auditLogThread, System.currentTimeMillis() - start, request, "Openvpn日志检索成功", ntcOpenvpnLogPage, 0); - } - - - @RequestMapping(value = "/ntcIpsecLogs", method = RequestMethod.GET) - @ApiOperation(value = "IPSEC日志查询", httpMethod = "GET", notes = "对应配置为“隧道管理-IPSEC”,存储动作为监测的命中日志。对日志功能“隧道管理- IPSEC”提供数据基础查询服务。") - public Map ntcIpsecLogs(Page page, NtcIpsecLog ntcIpsecLog, Model model, HttpServletRequest request, HttpServletResponse response) { - long start = System.currentTimeMillis(); - SaveRequestLogThread auditLogThread = super.saveRequestLog(servicesRequestLogService, Constants.OPACTION_GET, request, null); - - Page ntcIpsecLogPage = new Page<>(); - try { - ntcIpsecLogPage = testService.findNtcIpsecLogPage( - new Page(request, response, NtcIpsecLog.class), ntcIpsecLog); - - } catch(Exception e) { - e.printStackTrace(); - } - - - return serviceLogResponse(auditLogThread, System.currentTimeMillis() - start, request, "IPSEC日志检索成功", ntcIpsecLogPage, 0); - } - - - @RequestMapping(value = "/ntcSshLogs", method = RequestMethod.GET) - @ApiOperation(value = "SSH日志查询", httpMethod = "GET", notes = "对应配置为“隧道管理-SSH”,存储动作为阻断与监测的命中日志。对日志功能“隧道管理- SSH”提供数据基础查询服务。") - public Map ntcSshLogs(Page page, NtcSshLog ntcSshLog, Model model, HttpServletRequest request, HttpServletResponse response) { - long start = System.currentTimeMillis(); - SaveRequestLogThread auditLogThread = super.saveRequestLog(servicesRequestLogService, Constants.OPACTION_GET, request, null); - - Page ntcSshLogPage = new Page<>(); - try { - ntcSshLogPage = testService.findNtcSshLogPage( - new Page(request, response, NtcSshLog.class), ntcSshLog); - - } catch(Exception e) { - e.printStackTrace(); - } - - - return serviceLogResponse(auditLogThread, System.currentTimeMillis() - start, request, "SSH日志检索成功", ntcSshLogPage, 0); - } - - - @RequestMapping(value = "/ntcFtpLogs", method = RequestMethod.GET) - @ApiOperation(value = "FTP日志查询", httpMethod = "GET", notes = "对应配置为“文件传输-FTP”,存储动作为阻断与监测的命中日志。对日志功能“文件传输-FTP”提供数据基础查询服务。") - public Map ntcFtpLogs(Page page, NtcFtpLog ntcFtpLog, Model model, HttpServletRequest request, HttpServletResponse response) { - long start = System.currentTimeMillis(); - SaveRequestLogThread auditLogThread = super.saveRequestLog(servicesRequestLogService, Constants.OPACTION_GET, request, null); - - Page ntcFtpLogPage = new Page<>(); - try { - ntcFtpLogPage = testService.findNtcFtpLogPage( - new Page(request, response, NtcSshLog.class), ntcFtpLog); - - } catch(Exception e) { - e.printStackTrace(); - } - - - return serviceLogResponse(auditLogThread, System.currentTimeMillis() - start, request, "FTP日志检索成功", ntcFtpLogPage, 0); - } - - @RequestMapping(value = "/ntcPzReport", method = RequestMethod.GET) - @ApiOperation(value = "配置日志总量统计", httpMethod = "GET", notes = "配置命中日志数量实时统计报表,对外提供多种数据表现形式,具体可应用于界面配置命中总量业务、配置报表业务等") - public Map ntcPzReport(Page page, NtcPzReport ntcPzReport, Model model, HttpServletRequest request, HttpServletResponse response) { - long start = System.currentTimeMillis(); - SaveRequestLogThread auditLogThread = super.saveRequestLog(servicesRequestLogService, Constants.OPACTION_GET, request, null); - - Page ntcPzReportPage = new Page<>(); - try { - ntcPzReportPage = testService.findNtcPzReport(new Page(request, response,NtcPzReport.class), ntcPzReport); - } catch(Exception e) { - e.printStackTrace(); - } - - return serviceLogResponse(auditLogThread, System.currentTimeMillis() - start, request, "配置总量统计成功", ntcPzReportPage, 0); - } - +public class LogController extends BaseRestController { + @Autowired + public LogTestService testService; + @Autowired + protected ServicesRequestLogService servicesRequestLogService; + + @RequestMapping(value = "/ntcIpLogs", method = RequestMethod.GET) + @ApiOperation(value = "IP地址日志查询", httpMethod = "GET", notes = "对应配置为IP地址管理,存储动作为阻断与监测的命中日志。对日志功能IP地址提供数据基础查询服务") + public Map ntcIpLogs(Page page, NtcIpLog ntcIpLog, Model model, HttpServletRequest request, + HttpServletResponse response) { + long start = System.currentTimeMillis(); + SaveRequestLogThread auditLogThread = super.saveRequestLog(servicesRequestLogService, Constants.OPACTION_GET, + request, null); + Page ntcIpLogPage = null; + try { + testService.queryConditionCheck(auditLogThread, start, ntcIpLog, NtcIpLog.class, page); + ntcIpLogPage = new Page(); + String orderBy = ""; + if (null != page.getOrderBy() && !page.getOrderBy().equals("")) { + orderBy = page.getOrderBySql(NtcIpLog.class.getSimpleName(), page.getOrderBy()); + } else { + orderBy = "found_Time"; + } + ResultSet rs = HiveSqlService.getResultSet(page, ntcIpLog, + Configurations.getStringProperty(NtcIpLog.class.getSimpleName() + "HiveTable", "ntc_ip_log"), + getCol2Col(), orderBy, null); + Map tableMapping = HiveJDBC.tableMapping(page, null, rs, NtcIpLog.class, "foundTime", + "recvTime"); + if (tableMapping == null) { + ntcIpLogPage.setList(new ArrayList()); + } else { + List list = new ArrayList(); + if (tableMapping.get("obj").size() > page.getPageSize()) { + list = tableMapping.get("obj").subList(0, page.getPageSize()); + } else { + list = tableMapping.get("obj").subList(0, tableMapping.get("obj").size()); + } + if (list.size() > 0) { + String jsonString = JsonMapper.toJsonString(list); + List List = (java.util.List) JsonMapper.fromJsonList(jsonString, + NtcIpLog.class); + ntcIpLogPage.setList(List); + + } else { + ntcIpLogPage.setList(new ArrayList()); + } + } + } catch (Exception e) { + e.printStackTrace(); + auditLogThread.setExceptionInfo(e.getMessage() + " " + e.getCause()); + logger.error(e); + if (!(e instanceof RestServiceException)) { + e = new RestServiceException(auditLogThread, System.currentTimeMillis() - start, "HTTP协议请求日志检索失败"); + } + throw ((RestServiceException) e); + } + return serviceLogResponse(auditLogThread, System.currentTimeMillis() - start, request, "IP地址日志检索成功", + ntcIpLogPage, 0); + } + + @RequestMapping(value = "/ntcHttpLogs", method = RequestMethod.GET) + @ApiOperation(value = "HTTP日志查询", httpMethod = "GET", notes = "对应配置为“网站管理-HTTP”,存储动作为阻断与监测的命中日志。对日志功能“网站管理-HTTP”提供数据基础查询服务") + public Map ntcHttpLogs(Page page, NtcHttpLog ntcHttpLog, Model model, HttpServletRequest request, + HttpServletResponse response) { + long start = System.currentTimeMillis(); + SaveRequestLogThread auditLogThread = super.saveRequestLog(servicesRequestLogService, Constants.OPACTION_GET, + request, null); + + Page ntcHttpLogPage = new Page<>(); + try { + ntcHttpLogPage = testService.findNtcHttpLogPage(new Page(request, response, NtcHttpLog.class), + ntcHttpLog); + + } catch (Exception e) { + e.printStackTrace(); + } + + return serviceLogResponse(auditLogThread, System.currentTimeMillis() - start, request, "Http日志检索成功", + ntcHttpLogPage, 0); + } + + @RequestMapping(value = "/ntcDnsLogs", method = RequestMethod.GET) + @ApiOperation(value = "DNS日志查询", httpMethod = "GET", notes = "对应配置为“网站管理-DNS”,存储动作为阻断与监测的命中日志。对日志功能“网站管理-DNS”提供数据基础查询服务。") + public Map ntcDnsLogs(Page page, NtcDnsLog ntcDnsLog, Model model, HttpServletRequest request, + HttpServletResponse response) { + long start = System.currentTimeMillis(); + SaveRequestLogThread auditLogThread = super.saveRequestLog(servicesRequestLogService, Constants.OPACTION_GET, + request, null); + + Page ntcDnsLogPage = new Page<>(); + try { + ntcDnsLogPage = testService.findNtcDnsLogPage(new Page(request, response, NtcDnsLog.class), + ntcDnsLog); + + } catch (Exception e) { + e.printStackTrace(); + } + + return serviceLogResponse(auditLogThread, System.currentTimeMillis() - start, request, "Dns日志检索成功", + ntcDnsLogPage, 0); + } + + @RequestMapping(value = "/ntcMailLogs", method = RequestMethod.GET) + @ApiOperation(value = "EMAIL日志查询", httpMethod = "GET", notes = "对应配置为“邮件管理”,存储动作为阻断与监测的命中日志。对日志功能“邮件管理”提供数据基础查询服务。") + public Map ntcMailLogs(Page page, NtcMailLog ntcMailLog, Model model, HttpServletRequest request, + HttpServletResponse response) { + long start = System.currentTimeMillis(); + SaveRequestLogThread auditLogThread = super.saveRequestLog(servicesRequestLogService, Constants.OPACTION_GET, + request, null); + + Page ntcMailLogPage = new Page<>(); + try { + ntcMailLogPage = testService.findNtcMailLogPage(new Page(request, response, NtcMailLog.class), + ntcMailLog); + + } catch (Exception e) { + e.printStackTrace(); + } + + return serviceLogResponse(auditLogThread, System.currentTimeMillis() - start, request, "Mail日志检索成功", + ntcMailLogPage, 0); + } + + @RequestMapping(value = "/ntcSslLogs", method = RequestMethod.GET) + @ApiOperation(value = "SSL日志查询", httpMethod = "GET", notes = "对应配置为“网站管理-SSL”,存储动作为阻断与监测的命中日志。对日志功能“网站管理-SSL”提供数据基础查询服务。") + public Map ntcSslLogs(Page page, NtcSslLog ntcSslLog, Model model, HttpServletRequest request, + HttpServletResponse response) { + long start = System.currentTimeMillis(); + SaveRequestLogThread auditLogThread = super.saveRequestLog(servicesRequestLogService, Constants.OPACTION_GET, + request, null); + + Page ntcSslLogPage = new Page<>(); + try { + ntcSslLogPage = testService.findNtcSslLogPage(new Page(request, response, NtcSslLog.class), + ntcSslLog); + + } catch (Exception e) { + e.printStackTrace(); + } + + return serviceLogResponse(auditLogThread, System.currentTimeMillis() - start, request, "SSL日志检索成功", + ntcSslLogPage, 0); + } + + @RequestMapping(value = "/ntcPptpLogs", method = RequestMethod.GET) + @ApiOperation(value = "PPTP日志查询", httpMethod = "GET", notes = "对应配置为“隧道管理-PPTP”,存储动作为阻断与监测的命中日志。对日志功能“隧道管理-PPTP”提供数据基础查询服务。") + public Map ntcPptpLogs(Page page, NtcPptpLog ntcPptpLog, Model model, HttpServletRequest request, + HttpServletResponse response) { + long start = System.currentTimeMillis(); + SaveRequestLogThread auditLogThread = super.saveRequestLog(servicesRequestLogService, Constants.OPACTION_GET, + request, null); + + Page ntcPptpLogPage = new Page<>(); + try { + ntcPptpLogPage = testService.findNtcPptpLogPage(new Page(request, response, NtcPptpLog.class), + ntcPptpLog); + + } catch (Exception e) { + e.printStackTrace(); + } + + return serviceLogResponse(auditLogThread, System.currentTimeMillis() - start, request, "PPTP日志检索成功", + ntcPptpLogPage, 0); + } + + @RequestMapping(value = "/ntcL2tpLogs", method = RequestMethod.GET) + @ApiOperation(value = "L2TP日志查询", httpMethod = "GET", notes = "对应配置为“隧道管理-L2TP”,存储动作为阻断与监测的命中日志。对日志功能“隧道管理- L2TP”提供数据基础查询服务。") + public Map ntcL2tpLogs(Page page, NtcL2tpLog ntcL2tpLog, Model model, HttpServletRequest request, + HttpServletResponse response) { + long start = System.currentTimeMillis(); + SaveRequestLogThread auditLogThread = super.saveRequestLog(servicesRequestLogService, Constants.OPACTION_GET, + request, null); + + Page ntcL2tpLogPage = new Page<>(); + try { + ntcL2tpLogPage = testService.findNtcL2tpLogPage(new Page(request, response, NtcL2tpLog.class), + ntcL2tpLog); + + } catch (Exception e) { + e.printStackTrace(); + } + + return serviceLogResponse(auditLogThread, System.currentTimeMillis() - start, request, "L2TP日志检索成功", + ntcL2tpLogPage, 0); + } + + @RequestMapping(value = "/ntcOpenvpnLogs", method = RequestMethod.GET) + @ApiOperation(value = "OPENVPN日志查询", httpMethod = "GET", notes = "对应配置为“隧道管理-OPENVPN”,存储动作为阻断与监测的命中日志。对日志功能“隧道管理- OPENVPN”提供数据基础查询服务。") + public Map ntcOpenvpnLogs(Page page, NtcOpenvpnLog ntcOpenvpnLog, Model model, + HttpServletRequest request, HttpServletResponse response) { + long start = System.currentTimeMillis(); + SaveRequestLogThread auditLogThread = super.saveRequestLog(servicesRequestLogService, Constants.OPACTION_GET, + request, null); + + Page ntcOpenvpnLogPage = new Page<>(); + try { + ntcOpenvpnLogPage = testService.findNtcOpenvpnLogPage( + new Page(request, response, NtcOpenvpnLog.class), ntcOpenvpnLog); + + } catch (Exception e) { + e.printStackTrace(); + } + + return serviceLogResponse(auditLogThread, System.currentTimeMillis() - start, request, "Openvpn日志检索成功", + ntcOpenvpnLogPage, 0); + } + + @RequestMapping(value = "/ntcIpsecLogs", method = RequestMethod.GET) + @ApiOperation(value = "IPSEC日志查询", httpMethod = "GET", notes = "对应配置为“隧道管理-IPSEC”,存储动作为监测的命中日志。对日志功能“隧道管理- IPSEC”提供数据基础查询服务。") + public Map ntcIpsecLogs(Page page, NtcIpsecLog ntcIpsecLog, Model model, HttpServletRequest request, + HttpServletResponse response) { + long start = System.currentTimeMillis(); + SaveRequestLogThread auditLogThread = super.saveRequestLog(servicesRequestLogService, Constants.OPACTION_GET, + request, null); + + Page ntcIpsecLogPage = new Page<>(); + try { + ntcIpsecLogPage = testService + .findNtcIpsecLogPage(new Page(request, response, NtcIpsecLog.class), ntcIpsecLog); + + } catch (Exception e) { + e.printStackTrace(); + } + + return serviceLogResponse(auditLogThread, System.currentTimeMillis() - start, request, "IPSEC日志检索成功", + ntcIpsecLogPage, 0); + } + + @RequestMapping(value = "/ntcSshLogs", method = RequestMethod.GET) + @ApiOperation(value = "SSH日志查询", httpMethod = "GET", notes = "对应配置为“隧道管理-SSH”,存储动作为阻断与监测的命中日志。对日志功能“隧道管理- SSH”提供数据基础查询服务。") + public Map ntcSshLogs(Page page, NtcSshLog ntcSshLog, Model model, HttpServletRequest request, + HttpServletResponse response) { + long start = System.currentTimeMillis(); + SaveRequestLogThread auditLogThread = super.saveRequestLog(servicesRequestLogService, Constants.OPACTION_GET, + request, null); + + Page ntcSshLogPage = new Page<>(); + try { + ntcSshLogPage = testService.findNtcSshLogPage(new Page(request, response, NtcSshLog.class), + ntcSshLog); + + } catch (Exception e) { + e.printStackTrace(); + } + + return serviceLogResponse(auditLogThread, System.currentTimeMillis() - start, request, "SSH日志检索成功", + ntcSshLogPage, 0); + } + + @RequestMapping(value = "/ntcFtpLogs", method = RequestMethod.GET) + @ApiOperation(value = "FTP日志查询", httpMethod = "GET", notes = "对应配置为“文件传输-FTP”,存储动作为阻断与监测的命中日志。对日志功能“文件传输-FTP”提供数据基础查询服务。") + public Map ntcFtpLogs(Page page, NtcFtpLog ntcFtpLog, Model model, HttpServletRequest request, + HttpServletResponse response) { + long start = System.currentTimeMillis(); + SaveRequestLogThread auditLogThread = super.saveRequestLog(servicesRequestLogService, Constants.OPACTION_GET, + request, null); + + Page ntcFtpLogPage = new Page<>(); + try { + ntcFtpLogPage = testService.findNtcFtpLogPage(new Page(request, response, NtcSshLog.class), + ntcFtpLog); + + } catch (Exception e) { + e.printStackTrace(); + } + + return serviceLogResponse(auditLogThread, System.currentTimeMillis() - start, request, "FTP日志检索成功", + ntcFtpLogPage, 0); + } + + @RequestMapping(value = "/ntcPzReport", method = RequestMethod.GET) + @ApiOperation(value = "配置日志总量统计", httpMethod = "GET", notes = "配置命中日志数量实时统计报表,对外提供多种数据表现形式,具体可应用于界面配置命中总量业务、配置报表业务等") + public Map ntcPzReport(Page page, NtcPzReport ntcPzReport, Model model, HttpServletRequest request, + HttpServletResponse response) { + long start = System.currentTimeMillis(); + SaveRequestLogThread auditLogThread = super.saveRequestLog(servicesRequestLogService, Constants.OPACTION_GET, + request, null); + + Page ntcPzReportPage = new Page<>(); + try { + ntcPzReportPage = testService.findNtcPzReport(new Page(request, response, NtcPzReport.class), + ntcPzReport); + } catch (Exception e) { + e.printStackTrace(); + } + + return serviceLogResponse(auditLogThread, System.currentTimeMillis() - start, request, "配置总量统计成功", + ntcPzReportPage, 0); + } + + /** + *判断开始和结束时间是否为null,如果为null则初始化时间 + * @param entity + * @throws Exception + */ + public void resetTime(LogEntity entity) throws Exception { + SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); + Map map = DateUtils.getLocalTime(entity.getSearchFoundStartTime(), + entity.getSearchFoundEndTime(), Constants.LOG_LOCAL_TIME, "log"); + entity.setSearchFoundStartTime(map.get("startTime")); + entity.setSearchFoundEndTime(map.get("endTime")); + } + + /** + * 将searchFoundStartTime,searchFoundEndTime与foundTime进行关联 + * @return + */ + public Map> getCol2Col() { + Map> col2col = new HashMap>(); + Map startMap = new HashMap(); + startMap.put("start", "foundTime"); + col2col.put("searchFoundStartTime", startMap); + Map endMap = new HashMap(); + endMap.put("end", "foundTime"); + col2col.put("searchFoundEndTime", endMap); + return col2col; + } } diff --git a/src/main/java/com/nis/web/dao/DfLogSearchDao.java b/src/main/java/com/nis/web/dao/DfLogSearchDao.java new file mode 100644 index 0000000..60e5e9b --- /dev/null +++ b/src/main/java/com/nis/web/dao/DfLogSearchDao.java @@ -0,0 +1,24 @@ +package com.nis.web.dao; + +import java.util.List; + +import com.nis.domain.LogEntity; +import com.nis.domain.restful.NtcIpLog; + +/** + * + *

Title: DfLogSearchDao

+ *

Description: 日志查询dao

+ *

Company: IIE

+ * @author rkg + * @date 2018年7月2日 + * + */ +@MyBatisDao +public interface DfLogSearchDao extends CrudDao { + +// List findNtcIpLog(NtcIpLog log); + + + +} diff --git a/src/main/java/com/nis/web/dao/DfLogSearchDao.xml b/src/main/java/com/nis/web/dao/DfLogSearchDao.xml new file mode 100644 index 0000000..0ed5cfc --- /dev/null +++ b/src/main/java/com/nis/web/dao/DfLogSearchDao.xml @@ -0,0 +1,49 @@ + + + + + + cfg_id , + found_time , + recv_time , + trans_proto , + addr_type , + d_ip , + s_ip , + d_port , + s_port , + service , + entrance_id , + device_id , + direction , + stream_dir , + cap_ip , + addr_list , + user_region + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/src/main/java/com/nis/web/service/BaseLogService.java b/src/main/java/com/nis/web/service/BaseLogService.java index 2cf280d..2d871eb 100644 --- a/src/main/java/com/nis/web/service/BaseLogService.java +++ b/src/main/java/com/nis/web/service/BaseLogService.java @@ -40,6 +40,7 @@ public abstract class BaseLogService { protected final Logger logger = Logger.getLogger(this.getClass()); @Autowired protected ElasticsearchSqlDao elasticsearchSqlDao; + /** * wx checkCloumnIsExist(这里用一句话描述这个方法的作用) (这里描述这个方法适用条件 – 可选) * @@ -126,34 +127,58 @@ public abstract class BaseLogService { } } - public void queryConditionCheck(SaveRequestLogThread thread,long start,LogEntity entity,Class clazz,Page page) { - logger.info("请求参数校验开始----"+System.currentTimeMillis()); + /** + * 验证日志查询条件格式是否正确 + * @param thread + * @param start + * @param entity + * @param clazz + * @param page + */ + public void queryConditionCheck(SaveRequestLogThread thread, long start, LogEntity entity, Class clazz, + Page page) { + logger.info("请求参数校验开始----" + System.currentTimeMillis()); try { if (!StringUtil.isBlank(entity.getSearchCfgId())) { Long.parseLong(entity.getSearchCfgId()); } } catch (NumberFormatException e) { - thread.setExceptionInfo(e.getMessage()+" "+e.getCause()); + thread.setExceptionInfo(e.getMessage() + " " + e.getCause()); logger.error(e); throw new RestServiceException(thread, System.currentTimeMillis() - start, "searchCfgId参数格式错误", RestBusinessCode.param_formate_error.getValue()); } catch (Exception e) { - thread.setExceptionInfo(e.getMessage()+" "+e.getCause()); + thread.setExceptionInfo(e.getMessage() + " " + e.getCause()); logger.error(e); throw new RestServiceException(thread, System.currentTimeMillis() - start, "searchCfgId参数错误"); } + try { + if (!StringUtil.isBlank(entity.getSearchDirection())) { + Integer.parseInt(entity.getSearchDirection()); + } + } catch (NumberFormatException e) { + thread.setExceptionInfo(e.getMessage() + " " + e.getCause()); + logger.error(e); + throw new RestServiceException(thread, System.currentTimeMillis() - start, "getSearchDirection参数格式错误", + RestBusinessCode.param_formate_error.getValue()); + } catch (Exception e) { + thread.setExceptionInfo(e.getMessage() + " " + e.getCause()); + logger.error(e); + throw new RestServiceException(thread, System.currentTimeMillis() - start, "getSearchDirection参数错误"); + } + try { if (!StringUtil.isBlank(entity.getSearchEntranceId())) { Long.parseLong(entity.getSearchEntranceId()); } } catch (NumberFormatException e) { - thread.setExceptionInfo(e.getMessage()+" "+e.getCause()); + thread.setExceptionInfo(e.getMessage() + " " + e.getCause()); logger.error(e); throw new RestServiceException(thread, System.currentTimeMillis() - start, "searchEntranceId参数格式错误", RestBusinessCode.param_formate_error.getValue()); } catch (Exception e) { - thread.setExceptionInfo(e.getMessage()+" "+e.getCause()); + thread.setExceptionInfo(e.getMessage() + " " + e.getCause()); logger.error(e); throw new RestServiceException(thread, System.currentTimeMillis() - start, "searchEntranceId参数错误"); } @@ -163,12 +188,12 @@ public abstract class BaseLogService { sdf.parse(entity.getSearchFoundEndTime()); } } catch (ParseException e) { - thread.setExceptionInfo(e.getMessage()+" "+e.getCause()); + thread.setExceptionInfo(e.getMessage() + " " + e.getCause()); logger.error(e); throw new RestServiceException(thread, System.currentTimeMillis() - start, "searchFoundEndTime参数格式错误", RestBusinessCode.param_formate_error.getValue()); } catch (Exception e) { - thread.setExceptionInfo(e.getMessage()+" "+e.getCause()); + thread.setExceptionInfo(e.getMessage() + " " + e.getCause()); logger.error(e); throw new RestServiceException(thread, System.currentTimeMillis() - start, "searchFoundEndTime参数格式格式"); } @@ -178,41 +203,41 @@ public abstract class BaseLogService { sdf.parse(entity.getSearchFoundStartTime()); } } catch (ParseException e) { - thread.setExceptionInfo(e.getMessage()+" "+e.getCause()); + thread.setExceptionInfo(e.getMessage() + " " + e.getCause()); logger.error(e); throw new RestServiceException(thread, System.currentTimeMillis() - start, "searchFoundStartTime参数格式错误", RestBusinessCode.param_formate_error.getValue()); } catch (Exception e) { - thread.setExceptionInfo(e.getMessage()+" "+e.getCause()); + thread.setExceptionInfo(e.getMessage() + " " + e.getCause()); logger.error(e); throw new RestServiceException(thread, System.currentTimeMillis() - start, "searchFoundStartTime参数错误"); } try { - if (!StringUtil.isBlank(entity.getSearchServiceType())) { - Integer.parseInt(entity.getSearchServiceType()); + if (!StringUtil.isBlank(entity.getSearchService())) { + Integer.parseInt(entity.getSearchService()); } } catch (NumberFormatException e) { - thread.setExceptionInfo(e.getMessage()+" "+e.getCause()); + thread.setExceptionInfo(e.getMessage() + " " + e.getCause()); logger.error(e); throw new RestServiceException(thread, System.currentTimeMillis() - start, "searchServiceType参数格式错误", RestBusinessCode.param_formate_error.getValue()); } catch (Exception e) { - thread.setExceptionInfo(e.getMessage()+" "+e.getCause()); + thread.setExceptionInfo(e.getMessage() + " " + e.getCause()); logger.error(e); throw new RestServiceException(thread, System.currentTimeMillis() - start, "searchServiceType参数错误"); } try { - checkCloumnIsExist(thread,start,clazz, page); + checkCloumnIsExist(thread, start, clazz, page); } catch (RestServiceException e) { logger.error(e); throw e; } catch (Exception e) { - thread.setExceptionInfo(e.getMessage()+" "+e.getCause()); + thread.setExceptionInfo(e.getMessage() + " " + e.getCause()); logger.error(e); throw new RestServiceException(thread, System.currentTimeMillis() - start, "请求参数错误"); } - logger.info("请求参数校验结束----"+System.currentTimeMillis()); + logger.info("请求参数校验结束----" + System.currentTimeMillis()); } @@ -232,12 +257,12 @@ public abstract class BaseLogService { sdf.parse(entity.getSearchStatStartTime()); } } catch (ParseException e) { - thread.setExceptionInfo(e.getMessage()+" "+e.getCause()); + thread.setExceptionInfo(e.getMessage() + " " + e.getCause()); logger.error(e); throw new RestServiceException(thread, System.currentTimeMillis() - start, "searchStatStartTime参数格式错误", RestBusinessCode.param_formate_error.getValue()); } catch (Exception e) { - thread.setExceptionInfo(e.getMessage()+" "+e.getCause()); + thread.setExceptionInfo(e.getMessage() + " " + e.getCause()); logger.error(e); throw new RestServiceException(thread, System.currentTimeMillis() - start, "searchStatStartTime参数格式错误"); } @@ -247,12 +272,12 @@ public abstract class BaseLogService { sdf.parse(entity.getSearchStatEndTime()); } } catch (ParseException e) { - thread.setExceptionInfo(e.getMessage()+" "+e.getCause()); + thread.setExceptionInfo(e.getMessage() + " " + e.getCause()); logger.error(e); throw new RestServiceException(thread, System.currentTimeMillis() - start, "searchStatEndTime参数格式错误", RestBusinessCode.param_formate_error.getValue()); } catch (Exception e) { - thread.setExceptionInfo(e.getMessage()+" "+e.getCause()); + thread.setExceptionInfo(e.getMessage() + " " + e.getCause()); logger.error(e); throw new RestServiceException(thread, System.currentTimeMillis() - start, "searchStatEndTime参数错误"); } @@ -261,30 +286,29 @@ public abstract class BaseLogService { Integer.parseInt(entity.getSearchService()); } } catch (NumberFormatException e) { - thread.setExceptionInfo(e.getMessage()+" "+e.getCause()); + thread.setExceptionInfo(e.getMessage() + " " + e.getCause()); logger.error(e); throw new RestServiceException(thread, System.currentTimeMillis() - start, "searchService参数格式错误", RestBusinessCode.param_formate_error.getValue()); } catch (Exception e) { - thread.setExceptionInfo(e.getMessage()+" "+e.getCause()); + thread.setExceptionInfo(e.getMessage() + " " + e.getCause()); logger.error(e); throw new RestServiceException(thread, System.currentTimeMillis() - start, "searchService参数错误"); } try { - checkCloumnIsExist(thread,start,clazz, page); + checkCloumnIsExist(thread, start, clazz, page); } catch (RestServiceException e) { logger.error(e); throw e; } catch (Exception e) { - thread.setExceptionInfo(e.getMessage()+" "+e.getCause()); + thread.setExceptionInfo(e.getMessage() + " " + e.getCause()); logger.error(e); throw new RestServiceException(thread, System.currentTimeMillis() - start, "请求参数错误"); } } - /** * 管控实时统计公共查询字段验证 * @@ -297,11 +321,11 @@ public abstract class BaseLogService { sdf.parse(entity.getSearchReportEndTime()); } } catch (ParseException e) { - thread.setExceptionInfo(e.getMessage()+" "+e.getCause()); + thread.setExceptionInfo(e.getMessage() + " " + e.getCause()); throw new RestServiceException(thread, System.currentTimeMillis() - start, "searchReportEndTime参数格式错误", RestBusinessCode.param_formate_error.getValue()); } catch (Exception e) { - thread.setExceptionInfo(e.getMessage()+" "+e.getCause()); + thread.setExceptionInfo(e.getMessage() + " " + e.getCause()); throw new RestServiceException(thread, System.currentTimeMillis() - start, "searchReportEndTime参数格式格式"); } try { @@ -309,11 +333,11 @@ public abstract class BaseLogService { sdf.parse(entity.getSearchReportStartTime()); } } catch (ParseException e) { - thread.setExceptionInfo(e.getMessage()+" "+e.getCause()); + thread.setExceptionInfo(e.getMessage() + " " + e.getCause()); throw new RestServiceException(thread, System.currentTimeMillis() - start, "searchReportStartTime参数格式错误", RestBusinessCode.param_formate_error.getValue()); } catch (Exception e) { - thread.setExceptionInfo(e.getMessage()+" "+e.getCause()); + thread.setExceptionInfo(e.getMessage() + " " + e.getCause()); throw new RestServiceException(thread, System.currentTimeMillis() - start, "searchReportStartTime参数错误"); } @@ -322,11 +346,11 @@ public abstract class BaseLogService { Integer.parseInt(entity.getSearchService()); } } catch (NumberFormatException e) { - thread.setExceptionInfo(e.getMessage()+" "+e.getCause()); + thread.setExceptionInfo(e.getMessage() + " " + e.getCause()); throw new RestServiceException(thread, System.currentTimeMillis() - start, "searchService参数格式错误", RestBusinessCode.param_formate_error.getValue()); } catch (Exception e) { - thread.setExceptionInfo(e.getMessage()+" "+e.getCause()); + thread.setExceptionInfo(e.getMessage() + " " + e.getCause()); throw new RestServiceException(thread, System.currentTimeMillis() - start, "searchService参数错误"); } @@ -336,12 +360,12 @@ public abstract class BaseLogService { Integer.parseInt(searchAttrType); } } catch (NumberFormatException e) { - thread.setExceptionInfo(e.getMessage()+" "+e.getCause()); - throw new RestServiceException(thread,start,"searchAttrType参数格式错误", + thread.setExceptionInfo(e.getMessage() + " " + e.getCause()); + throw new RestServiceException(thread, start, "searchAttrType参数格式错误", RestBusinessCode.param_formate_error.getValue()); } catch (Exception e) { - thread.setExceptionInfo(e.getMessage()+" "+e.getCause()); - throw new RestServiceException(thread,start,"searchAttrType参数错误"); + thread.setExceptionInfo(e.getMessage() + " " + e.getCause()); + throw new RestServiceException(thread, start, "searchAttrType参数错误"); } try { String searchLwhh = getSearchField(clazz, entity, "searchLwhh"); @@ -349,21 +373,21 @@ public abstract class BaseLogService { Integer.parseInt(searchLwhh); } } catch (NumberFormatException e) { - thread.setExceptionInfo(e.getMessage()+" "+e.getCause()); - throw new RestServiceException(thread,start,"searchLwhh参数格式错误", + thread.setExceptionInfo(e.getMessage() + " " + e.getCause()); + throw new RestServiceException(thread, start, "searchLwhh参数格式错误", RestBusinessCode.param_formate_error.getValue()); } catch (Exception e) { - thread.setExceptionInfo(e.getMessage()+" "+e.getCause()); - throw new RestServiceException(thread,start,"searchLwhh参数错误"); + thread.setExceptionInfo(e.getMessage() + " " + e.getCause()); + throw new RestServiceException(thread, start, "searchLwhh参数错误"); } - + try { - checkCloumnIsExist(thread,start,clazz, page); + checkCloumnIsExist(thread, start, clazz, page); } catch (RestServiceException e) { logger.error(e); throw e; } catch (Exception e) { - thread.setExceptionInfo(e.getMessage()+" "+e.getCause()); + thread.setExceptionInfo(e.getMessage() + " " + e.getCause()); logger.error(e); throw new RestServiceException(thread, System.currentTimeMillis() - start, "请求参数错误"); } @@ -375,31 +399,32 @@ public abstract class BaseLogService { * * @param entity */ - public void queryConditionCheck(SaveRequestLogThread thread, long start,DfReportEntity entity, Class clazz, Page page) { + public void queryConditionCheck(SaveRequestLogThread thread, long start, DfReportEntity entity, Class clazz, + Page page) { try { if (!StringUtil.isBlank(entity.getSearchReportEndTime())) { sdf.parse(entity.getSearchReportEndTime()); } } catch (ParseException e) { - thread.setExceptionInfo(e.getMessage()+" "+e.getCause()); - throw new RestServiceException(thread,start,"searchReportEndTime参数格式错误", + thread.setExceptionInfo(e.getMessage() + " " + e.getCause()); + throw new RestServiceException(thread, start, "searchReportEndTime参数格式错误", RestBusinessCode.param_formate_error.getValue()); } catch (Exception e) { - thread.setExceptionInfo(e.getMessage()+" "+e.getCause()); - throw new RestServiceException(thread,start,"searchReportEndTime参数格式格式"); + thread.setExceptionInfo(e.getMessage() + " " + e.getCause()); + throw new RestServiceException(thread, start, "searchReportEndTime参数格式格式"); } - + try { if (!StringUtil.isBlank(entity.getSearchReportStartTime())) { sdf.parse(entity.getSearchReportStartTime()); } } catch (ParseException e) { - thread.setExceptionInfo(e.getMessage()+" "+e.getCause()); - throw new RestServiceException(thread,start,"searchReportStartTime参数格式错误", + thread.setExceptionInfo(e.getMessage() + " " + e.getCause()); + throw new RestServiceException(thread, start, "searchReportStartTime参数格式错误", RestBusinessCode.param_formate_error.getValue()); } catch (Exception e) { - thread.setExceptionInfo(e.getMessage()+" "+e.getCause()); - throw new RestServiceException(thread,start,"searchReportStartTime参数错误"); + thread.setExceptionInfo(e.getMessage() + " " + e.getCause()); + throw new RestServiceException(thread, start, "searchReportStartTime参数错误"); } try { @@ -408,12 +433,12 @@ public abstract class BaseLogService { Integer.parseInt(searchAttrType); } } catch (NumberFormatException e) { - thread.setExceptionInfo(e.getMessage()+" "+e.getCause()); - throw new RestServiceException(thread,start,"searchAttrType参数格式错误", + thread.setExceptionInfo(e.getMessage() + " " + e.getCause()); + throw new RestServiceException(thread, start, "searchAttrType参数格式错误", RestBusinessCode.param_formate_error.getValue()); } catch (Exception e) { - thread.setExceptionInfo(e.getMessage()+" "+e.getCause()); - throw new RestServiceException(thread,start,"searchAttrType参数错误"); + thread.setExceptionInfo(e.getMessage() + " " + e.getCause()); + throw new RestServiceException(thread, start, "searchAttrType参数错误"); } try { String searchLwhh = getSearchField(clazz, entity, "searchLwhh"); @@ -421,12 +446,12 @@ public abstract class BaseLogService { Integer.parseInt(searchLwhh); } } catch (NumberFormatException e) { - thread.setExceptionInfo(e.getMessage()+" "+e.getCause()); - throw new RestServiceException(thread,start,"searchLwhh参数格式错误", + thread.setExceptionInfo(e.getMessage() + " " + e.getCause()); + throw new RestServiceException(thread, start, "searchLwhh参数格式错误", RestBusinessCode.param_formate_error.getValue()); } catch (Exception e) { - thread.setExceptionInfo(e.getMessage()+" "+e.getCause()); - throw new RestServiceException(thread,start,"searchLwhh参数错误"); + thread.setExceptionInfo(e.getMessage() + " " + e.getCause()); + throw new RestServiceException(thread, start, "searchLwhh参数错误"); } try { String searchId = getSearchField(clazz, entity, "searchId"); @@ -434,42 +459,41 @@ public abstract class BaseLogService { Integer.parseInt(searchId); } } catch (NumberFormatException e) { - thread.setExceptionInfo(e.getMessage()+" "+e.getCause()); - throw new RestServiceException(thread,start,"searchId参数格式错误", + thread.setExceptionInfo(e.getMessage() + " " + e.getCause()); + throw new RestServiceException(thread, start, "searchId参数格式错误", RestBusinessCode.param_formate_error.getValue()); } catch (Exception e) { - thread.setExceptionInfo(e.getMessage()+" "+e.getCause()); - throw new RestServiceException(thread,start,"searchId参数错误"); + thread.setExceptionInfo(e.getMessage() + " " + e.getCause()); + throw new RestServiceException(thread, start, "searchId参数错误"); } - + try { String searchService = getSearchField(clazz, entity, "searchService"); if (!StringUtil.isBlank(searchService)) { Integer.parseInt(searchService); } } catch (NumberFormatException e) { - thread.setExceptionInfo(e.getMessage()+" "+e.getCause()); - throw new RestServiceException(thread,start,"searchService参数格式错误", + thread.setExceptionInfo(e.getMessage() + " " + e.getCause()); + throw new RestServiceException(thread, start, "searchService参数格式错误", RestBusinessCode.param_formate_error.getValue()); } catch (Exception e) { - thread.setExceptionInfo(e.getMessage()+" "+e.getCause()); - throw new RestServiceException(thread,start,"searchService参数错误"); + thread.setExceptionInfo(e.getMessage() + " " + e.getCause()); + throw new RestServiceException(thread, start, "searchService参数错误"); } - - + try { - checkCloumnIsExist(thread,start,clazz, page); + checkCloumnIsExist(thread, start, clazz, page); } catch (RestServiceException e) { logger.error(e); throw e; } catch (Exception e) { - thread.setExceptionInfo(e.getMessage()+" "+e.getCause()); + thread.setExceptionInfo(e.getMessage() + " " + e.getCause()); logger.error(e); - throw new RestServiceException(thread,start,"请求参数错误"); + throw new RestServiceException(thread, start, "请求参数错误"); } } - + /** * * @Title: getJedisKey @@ -510,7 +534,7 @@ public abstract class BaseLogService { String[] strArr = { "30" }; parapeterMapNew.put("pageSize", strArr); } - }else{ + } else { if (parapeterMapNew.get("pageNo") != null) { parapeterMapNew.remove("pageNo"); } @@ -538,8 +562,7 @@ public abstract class BaseLogService { return key; } - protected String getSearchField(Class clazz, - Serializable entity, String fieldName) { + protected String getSearchField(Class clazz, Serializable entity, String fieldName) { try { Field field = clazz.getDeclaredField(fieldName); field.setAccessible(true); diff --git a/src/main/java/com/nis/web/service/HiveSqlService.java b/src/main/java/com/nis/web/service/HiveSqlService.java index 416b952..6bb7fe9 100644 --- a/src/main/java/com/nis/web/service/HiveSqlService.java +++ b/src/main/java/com/nis/web/service/HiveSqlService.java @@ -14,7 +14,8 @@ import java.util.Map; import org.apache.ibatis.mapping.ResultMap; import org.apache.ibatis.mapping.ResultMapping; import org.apache.ibatis.session.SqlSessionFactory; -import org.apache.log4j.Logger; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; import com.nis.domain.Page; import com.nis.util.Configurations; @@ -25,13 +26,12 @@ import com.nis.util.StringUtil; import com.nis.util.redis.SaveRedisThread; public class HiveSqlService { - private final static Logger logger = Logger.getLogger(HiveJDBC.class); + private final static Logger logger = LoggerFactory.getLogger(HiveSqlService.class); private static SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); public static ResultSet getResultSet(Page page, Object bean, String tableName, Map> col2col, String orderBy, String searchActiveSys) throws Exception { tableName = tableName.toLowerCase(); - tableName = Configurations.getStringProperty(tableName, "t_" + tableName).trim(); String showColmun = getFiledsSql(bean.getClass().getSimpleName(), page.getFields()); StringBuffer sql = new StringBuffer(); Map filedAndColumnMap = getFiledAndColumnMap(bean.getClass()); @@ -59,8 +59,10 @@ public class HiveSqlService { Long foundTimePartStart = null; Long foundTimePartEnd = null; for (int i = 0; i < fields.length; i++) { + // 现在gwall日志表结构中只有数值和字符串两种类型,数值都是int类型没有bigint所以不需要加L, Field f = fields[i]; String key = f.getName();// 获取字段名 + String typeName = f.getType().getName(); if (f.getType().getName().equals("java.lang.String") && key.startsWith("search")) { Object value = getFieldValue(bean, key); if (value != null) { @@ -81,7 +83,7 @@ public class HiveSqlService { // value.toString().trim() // + "','yyyy-mm-dd HH24:mi:ss')"); sql.append(" and " + filedAndColumnMap.get(col2col.get(key).get("start")) + ">=" - + value + "L"); + + value); } else { // sql.append(" and " + // filedAndColumnMap.get(col2col.get(key).get("end")) @@ -89,7 +91,7 @@ public class HiveSqlService { // value.toString().trim() // + "','yyyy-mm-dd HH24:mi:ss')"); sql.append(" and " + filedAndColumnMap.get(col2col.get(key).get("end")) + "<" - + value + "L"); + + value); } } } else { @@ -98,39 +100,29 @@ public class HiveSqlService { key = key.substring(0, 1).toLowerCase() + key.substring(1); } - if (!value.toString().trim().equals("") && filedAndColumnMap.containsKey(key) - && (key.toLowerCase().equals("cfgid") - || key.toLowerCase().equals("entranceid"))) { - sql.append( - " and " + filedAndColumnMap.get(key) + "=" + value.toString().trim() + "L"); - } else if (!value.toString().trim().equals("") && filedAndColumnMap.containsKey(key) - && (key.toLowerCase().equals("protocol") || key.toLowerCase().equals("serverip") - || key.toLowerCase().equals("clientip") - || key.toLowerCase().equals("url") - || key.toLowerCase().equals("mailfrom") - || key.toLowerCase().equals("mailto") - || key.toLowerCase().equals("encryptmode") - || key.toLowerCase().equals("exprotocol") - || key.toLowerCase().equals("cljip"))) { + if (typeName.equals("java.lang.String")) { sql.append(" and " + filedAndColumnMap.get(key) + "='" + value.toString().trim() + "'"); - } else if (!value.toString().trim().equals("") && filedAndColumnMap.containsKey(key) - && key.toLowerCase().equals("servicetype")) { + } else if (typeName.equals("java.lang.Integer") || typeName.equals("int")) { sql.append(" and " + filedAndColumnMap.get(key) + "=" + value.toString().trim()); + + } else if (typeName.equals("java.lang.Long") || typeName.equals("long")) { + sql.append( + " and " + filedAndColumnMap.get(key) + "=" + value.toString().trim() + "L"); } } } } } - - //if (null != searchActiveSys && !searchActiveSys.equals(Constants.ACTIVESYS_A)) {// B版数据库才有found_time_partition字段,A版毛衣found_time_partition分区字段 - if (null != searchActiveSys){//为A版日志库添加分区字段 + if (null != searchActiveSys) {// 添加分区字段 if (null != foundTimePartStart) { - sql.append(" and found_time_partition>=" + foundTimePartStart + "L"); + // sql.append(" and found_time_partition>=" + foundTimePartStart + "L"); + sql.append(" and found_time_partition>=" + foundTimePartStart); } if (null != foundTimePartEnd) { - sql.append(" and found_time_partition<" + foundTimePartEnd + "L"); + // sql.append(" and found_time_partition<" + foundTimePartEnd + "L"); + sql.append(" and found_time_partition<" + foundTimePartEnd); } } @@ -141,9 +133,9 @@ public class HiveSqlService { // sql.append(" order by " + orderBy + " limit 10000) t1) t2 where // row_Num between " + startNum + " and " + endNum); sql.append(" limit " + Constants.EVERY_GETHIVEDATANUM); - logger.info("获取数据中心日志sql===================" + sql); + logger.info("获取数据中心日志sql==================={}", sql); // ResultSet query = HiveJDBC.query(sql.toString()); - ResultSet query = HiveDataSource.query(sql.toString(), searchActiveSys); + ResultSet query = HiveDataSource.query(sql.toString()); logger.info("获取数据中心日志成功"); return query; } @@ -219,8 +211,10 @@ public class HiveSqlService { } } - //if (null != searchActiveSys && !searchActiveSys.equals(Constants.ACTIVESYS_A)) {// B版数据库才有found_time_partition字段,A版毛衣found_time_partition分区字段 - if (null != searchActiveSys){ + // if (null != searchActiveSys && + // !searchActiveSys.equals(Constants.ACTIVESYS_A)) {// + // B版数据库才有found_time_partition字段,A版毛衣found_time_partition分区字段 + if (null != searchActiveSys) { if (null != foundTimePartStart) { countSql.append(" and found_time_partition>=" + foundTimePartStart + "L"); } @@ -232,7 +226,7 @@ public class HiveSqlService { } logger.info("获取数据中心日志总条数sql==================" + countSql.toString()); // ResultSet countRs = HiveJDBC.query(countSql.toString()); - ResultSet countRs = HiveDataSource.query(countSql.toString(), searchActiveSys); + ResultSet countRs = HiveDataSource.query(countSql.toString()); String countStr = null; while (countRs.next()) { countStr = countRs.getObject(1).toString(); diff --git a/src/main/java/com/nis/web/service/SaveRequestLogThread.java b/src/main/java/com/nis/web/service/SaveRequestLogThread.java index 3fbd28e..20fea37 100644 --- a/src/main/java/com/nis/web/service/SaveRequestLogThread.java +++ b/src/main/java/com/nis/web/service/SaveRequestLogThread.java @@ -51,7 +51,7 @@ public class SaveRequestLogThread implements Runnable { public void run() { logger.info("线程开始执行!"); //新开线程切换数据源,不影响action中的数据源 - CustomerContextHolder.setCustomerType(CustomerContextHolder.DATA_SOURCE_C);//开启数据源C + CustomerContextHolder.setCustomerType(CustomerContextHolder.DATA_SOURCE_B);//开启数据源B // TODO Auto-generated method stub if(service!=null){ service.saveRequestLog(remoteAddr,requestURI,queryString,contextPath, operator, version, opAction, opTime, content, requestTime, consumerTime,businessCode,exceptionInfo,traceCode); diff --git a/src/main/resources/applicationContext-mybatis.xml b/src/main/resources/applicationContext-mybatis.xml index f30e3ca..31f1bcf 100644 --- a/src/main/resources/applicationContext-mybatis.xml +++ b/src/main/resources/applicationContext-mybatis.xml @@ -78,13 +78,13 @@ - - + - - - - + + + + @@ -102,59 +102,12 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + @@ -192,10 +145,10 @@ - - - - + + + + diff --git a/src/main/resources/jdbc.properties b/src/main/resources/jdbc.properties index c7e9698..1c09e6f 100644 --- a/src/main/resources/jdbc.properties +++ b/src/main/resources/jdbc.properties @@ -32,46 +32,23 @@ bonecp.partitionCount=3 bonecp.acquireIncrement=5 bonecp.statementsCacheSize=100 -############################################################################################################################################ -#数据中心神通数据库接口配置 -############################################################################################################################################ -bonecp.cluster.idleMaxAgeInMinutes=60 -bonecp.cluster.idleConnectionTestPeriodInMinutes=240 -bonecp.cluster.maxConnectionsPerPartition=10 -bonecp.cluster.minConnectionsPerPartition=5 -bonecp.cluster.partitionCount=3 -bonecp.cluster.acquireIncrement=5 -bonecp.cluster.statementsCacheSize=100 -jdbc.log.cluster.driver=com.oscar.cluster.BulkDriver -jdbc.log.cluster.url=jdbc:oscarclusterbulk://10.3.129.125:2010/logdb -jdbc.log.cluster.username=xa_z2_iie -jdbc.log.cluster.key=2fa3hQn28+4AOdJXL4Ud2w== -jdbc.log.cluster.password=uut+weC9of5ocPheagBJ4A== + + ############################################################################################################################################ #数据中心hive接口配置 ############################################################################################################################################ #A版日志库 -jdbc.hiveA.driver=org.apache.hive.jdbc.HiveDriver -jdbc.hiveA.url=jdbc:hive2://10.3.130.24:10000/default -jdbc.hiveA.username=xa_z2_mesa -jdbc.hiveA.key=aC/8fTC9vfPVhCk+CDzbAQ== +jdbc.hive.driver=org.apache.hive.jdbc.HiveDriver +jdbc.hive.url=jdbc:hive2://10.0.6.202:10000/maat +jdbc.hive.username=xa_z2_mesa +jdbc.hive.key=aC/8fTC9vfPVhCk+CDzbAQ== #加密后密码 -jdbc.hiveA.password=V3GyFlG8Mg01bTt8ykFVaA== +jdbc.hive.password=V3GyFlG8Mg01bTt8ykFVaA== #实际密码 #jdbc.hiveA.password=123!@#qwe -#B版日志库 -jdbc.hiveB.driver=org.apache.hive.jdbc.HiveDriver -jdbc.hiveB.url=jdbc:hive2://10.3.130.25:10000/default -jdbc.hiveB.username=xa_z2_mesa -jdbc.hiveB.key=aC/8fTC9vfPVhCk+CDzbAQ== -#加密后密码 -jdbc.hiveB.password=V3GyFlG8Mg01bTt8ykFVaA== -#实际密码 -#jdbc.hiveB.password=123!@#qwe - bonecp.hive.idleMaxAgeInMinutes=60 bonecp.hive.idleConnectionTestPeriodInMinutes=240 bonecp.hive.maxConnectionsPerPartition=20 diff --git a/src/main/resources/nis.properties b/src/main/resources/nis.properties index ef919fa..c68b3c2 100644 --- a/src/main/resources/nis.properties +++ b/src/main/resources/nis.properties @@ -183,7 +183,7 @@ selFromHive=false isGetHiveCount=false #每次获取数据中心多少条数据,咱们在对获取的数据进行分页处理 -everyGetHiveDataNum=10000 +everyGetHiveDataNum=100 #oracle数据库有问题不从oracle查询数据,所有日志数据均从数据中心查询 onlySelFromHive=false @@ -229,10 +229,8 @@ isUseES=false -#数据中心A版数据库名称,程序中每次查询时使用的数据库名称 use dbA -jdbc.hive.AName=xa_dfbhit_hive -#数据中心B版数据库名称 -jdbc.hive.BName=xa_z2_mesalog_hive +#数据中心hive日志库数据库名称,程序中每次查询时使用的数据库名称 use dbName +jdbc.hive.Name=maat maxPageSize=100000 @@ -243,8 +241,6 @@ isDebug=true digest.gen.tool.path=maat-redis/digest_gen - - #redis中有多少个数据库(需要加1,代码中用的小于不是小于等于) maxRedisDBIndex=12 ##存放编译,分组,域配置id关系的redis数据库编号 diff --git a/src/main/resources/spring-mvc.xml b/src/main/resources/spring-mvc.xml index de1f4af..84df7c9 100644 --- a/src/main/resources/spring-mvc.xml +++ b/src/main/resources/spring-mvc.xml @@ -175,15 +175,21 @@ - + - + + + + + + + + - - - + + diff --git a/src/main/resources/table.properties b/src/main/resources/table.properties index d565fc9..27fef91 100644 --- a/src/main/resources/table.properties +++ b/src/main/resources/table.properties @@ -1,62 +1,6 @@ -#由于数据中心日志表的表名会变动,所以本系统中将日志中心的表名提取到配置文件中方便后期修改 -#\u6570\u636E\u4E2D\u5FC3hive\u6570\u636E\u5E93\u8868\u540D -df_ip_port_log=t_df_ip_port_log -df_http_req_log=t_df_http_req_log_v3 -df_http_res_log=t_df_http_res_log_v3 -df_http_keyword_log=t_df_http_keyword_log - -df_mail_log=t_df_mail_log -df_dns_log=t_df_dns_log -df_ftp_log=t_df_ftp_log -df_pptp_log=t_df_pptp_log -df_l2tp_log=t_df_l2tp_log -df_ipsec_log=t_df_ipsec_log -df_openvpn_log=t_df_openvpn_log -df_ssh_log=t_df_ssh_log -df_ssl_log=t_df_ssl_log -df_tunnel_random_log=t_df_tunnel_random_log - -#\u6570\u636E\u4E2D\u5FC3\u795E\u901A\u6570\u636E\u5E93A\u7248\u8868\u540D -DfIpPortLogA=t_xa_df_ip_port_log_hit_mpp -DfHttpReqLogA=t_xa_df_http_req_log_hit_mpp -DfHttpResLogA=t_xa_df_http_res_log_hit_mpp -DfHttpKeywordLogA=t_xa_df_http_keyword_log_hit_mpp - -DfMailLogA=t_xa_df_mail_log_hit_mpp -DfDnsLogA=t_xa_df_dns_log_hit_mpp -DfFtpLogA=t_xa_df_ftp_log_hit_mpp -DfPptpLogA=t_xa_df_pptp_log_hit_mpp -DfL2tpLogA=t_xa_df_l2tp_log_hit_mpp -DfIpsecLogA=t_xa_df_ipsec_log_hit_mpp -DfOpenvpnLogA=t_xa_df_openvpn_log_hit_mpp -DfSshLogA=t_xa_df_ssh_log_hit_mpp -DfSslLogA=t_xa_df_ssl_log_hit_mpp -DfTunnelRandomLogA=t_xa_df_tunnel_random_log_hit_mpp - -#\u795E\u901A\u6570\u636E\u5E93B\u7248\u8868\u540D -DfIpPortLogB=t_xa_df_ip_port_log_mpp -DfHttpReqLogB=t_xa_df_http_req_log_mpp -DfHttpResLogB=t_xa_df_http_res_log_mpp -DfHttpKeywordLogB=t_xa_df_http_keyword_log_mpp - -DfMailLogB=t_xa_df_mail_log_mpp -DfDnsLogB=t_xa_df_dns_log_mpp -DfFtpLogB=t_xa_df_ftp_log_mpp -DfPptpLogB=t_xa_df_pptp_log_mpp -DfL2tpLogB=t_xa_df_l2tp_log_mpp -DfIpsecLogB=t_xa_df_ipsec_log_mpp -DfOpenvpnLogB=t_xa_df_openvpn_log_mpp -DfSshLogB=t_xa_df_ssh_log_mpp -DfSslLogB=t_xa_df_ssl_log_mpp -DfTunnelRandomLogB=t_xa_df_tunnel_random_log_mpp - - - - - - - - +#由于数据中心hive日志表的表名会变动,所以本系统中将日志的表名提取到配置文件中方便后期修改,key是bean的名称+HiveTable,value是hive的实际表名 +NtcIpLogHiveTable=NTC_IP_LOG +NtcHttpLogHiveTable=NTC_HTTP_LOG