liukaixiong 4 lat temu
rodzic
commit
fb5ae298bf
28 zmienionych plików z 315 dodań i 515 usunięć
  1. 9 1
      env/sql/mysql.sql
  2. 12 0
      jay-monitor-data-client/pom.xml
  3. 44 5
      jay-monitor-data-client/src/main/java/com/jay/monitor/data/client/MonitorDataClient.java
  4. 26 10
      jay-monitor-data-client/src/main/java/com/jay/monitor/data/client/MonitorSendProducer.java
  5. 10 0
      jay-monitor-data-client/src/main/java/com/jay/monitor/data/client/config/ClientMonitorAutoConfiguration.java
  6. 1 1
      jay-monitor-data-client/src/main/java/com/jay/monitor/data/client/config/props/MonitorProperties.java
  7. 10 10
      jay-monitor-data-client/src/test/java/com/jay/monitor/data/client/MonitorSendProducerTest.java
  8. 9 6
      jay-monitor-data-core/src/main/java/com/jay/monitor/data/core/enums/MsgTypeEnums.java
  9. 6 7
      jay-monitor-data-core/src/main/java/com/jay/monitor/data/core/model/serializable/SQLMonitorDTO.java
  10. 11 2
      jay-monitor-data-core/src/main/java/com/jay/monitor/data/core/model/serializable/URLDataDTO.java
  11. 0 41
      jay-monitor-data-core/src/main/java/com/jay/monitor/data/core/model/serializable/base/ApplicationDTO.java
  12. 13 4
      jay-monitor-data-core/src/main/java/com/jay/monitor/data/core/model/serializable/base/BaseDTO.java
  13. 0 55
      jay-monitor-data-core/src/main/java/com/jay/monitor/data/core/model/serializable/base/GroupDataDTO.java
  14. 0 53
      jay-monitor-data-core/src/main/java/com/jay/monitor/data/core/model/serializable/base/LogDataDTO.java
  15. 0 26
      jay-monitor-data-core/src/main/java/com/jay/monitor/data/core/model/serializable/base/RequestDataDTO.java
  16. 1 1
      jay-monitor-data-server/pom.xml
  17. 0 17
      jay-monitor-data-server/src/main/java/com/jay/monitor/data/server/BackstageServiceApplication.java
  18. 13 6
      jay-monitor-data-server/src/main/java/com/jay/monitor/data/server/models/entity/JayMonitorUrl.java
  19. 15 0
      jay-monitor-data-server/src/main/java/com/jay/monitor/data/server/process/AbstractUserProcess.java
  20. 4 30
      jay-monitor-data-server/src/main/java/com/jay/monitor/data/server/process/URLUserProcess.java
  21. 7 73
      jay-monitor-data-server/src/main/resources/application-com.yml
  22. 6 78
      jay-monitor-data-server/src/main/resources/application-test.yml
  23. 6 78
      jay-monitor-data-server/src/main/resources/application-uat.yml
  24. 1 0
      jay-monitor-data-server/src/main/resources/application.yml
  25. 27 2
      jay-monitor-data-server/src/main/resources/logback.xml
  26. 23 8
      jay-monitor-data-server/src/main/resources/mybatis/mapper/JayMonitorUrlMapper.xml
  27. 0 1
      jay-monitor-data-server/src/test/java/com/jay/monitor/data/server/MonitorDataServerTest.java
  28. 61 0
      pom.xml

+ 9 - 1
env/sql/mysql.sql

@@ -49,4 +49,12 @@ CREATE TABLE `jay_monitor_url_log`  (
   PRIMARY KEY (`id`),
   INDEX `idx_monitor`(`monitor_id`, `monitor_type`) USING BTREE COMMENT '监控关系',
   INDEX `idx_create_date`(`create_date`) USING BTREE COMMENT '创建时间索引,用来清空文本'
-);
+);
+
+CREATE USER `jay_monitor`@`%` IDENTIFIED BY 'jayzhou';
+
+GRANT Alter, Create, Execute, Index, Insert, References, Select, Update ON `jay\_monitor`.* TO `jay_monitor`@`%`;
+
+
+ALTER TABLE `jay_monitor_mq`
+ADD COLUMN `source_time` datetime NULL DEFAULT NULL COMMENT '数据来源时间' AFTER `status`;

+ 12 - 0
jay-monitor-data-client/pom.xml

@@ -43,5 +43,17 @@
             <artifactId>spring-boot-configuration-processor</artifactId>
             <optional>true</optional>
         </dependency>
+        <dependency>
+            <groupId>org.springframework.kafka</groupId>
+            <artifactId>spring-kafka</artifactId>
+            <version>2.2.0.RELEASE</version>
+            <scope>provided</scope>
+        </dependency>
+        <dependency>
+            <groupId>org.apache.kafka</groupId>
+            <artifactId>kafka-clients</artifactId>
+            <version>2.0.1</version>
+            <scope>provided</scope>
+        </dependency>
     </dependencies>
 </project>

+ 44 - 5
jay-monitor-data-client/src/main/java/com/jay/monitor/data/client/MonitorDataClient.java

@@ -3,6 +3,7 @@ package com.jay.monitor.data.client;
 import com.alipay.remoting.InvokeContext;
 import com.alipay.remoting.rpc.RpcClient;
 import com.jay.monitor.data.core.enums.MonitorDataConstants;
+import com.jay.monitor.data.core.model.serializable.base.ApplicationData;
 import com.jay.monitor.data.core.model.serializable.base.BaseDTO;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
@@ -32,7 +33,7 @@ public class MonitorDataClient implements Runnable {
 
     private ExecutorService executorService = Executors.newSingleThreadExecutor();
 
-    private Integer queueSize = 1000;
+    private Integer queueSize = 3000;
 
     private Queue<BaseDTO> queueData;
 
@@ -45,7 +46,6 @@ public class MonitorDataClient implements Runnable {
         this.host = host;
         this.port = port;
         this.addr = host + ":" + port;
-
     }
 
     /**
@@ -75,7 +75,17 @@ public class MonitorDataClient implements Runnable {
      * @param data
      * @throws Exception
      */
-    private void sendOnWay(Object data) throws Exception {
+    private void sendOnWay(BaseDTO data) throws Exception {
+
+        String applicationName = invokeContext.get(MonitorDataConstants.INVOKE_CLIENT_NAME).toString();
+        String ip = invokeContext.get(MonitorDataConstants.INVOKE_CLIENT_IP).toString();
+
+        if (data instanceof ApplicationData) {
+            ApplicationData applicationData = (ApplicationData) data;
+            applicationData.setApplicationName(applicationName);
+            applicationData.setIp(ip);
+        }
+
         client.oneway(getAddr(), data, invokeContext);
     }
 
@@ -85,7 +95,10 @@ public class MonitorDataClient implements Runnable {
      * @param data
      */
     public void sendObjectMsg(BaseDTO data) {
-        queueData.add(data);
+        boolean isAdd = queueData.offer(data);
+        if (!isAdd) {
+            logger.warn("容量不够,请及时扩容 queueSize:" + this.queueSize);
+        }
     }
 
     public void addInvokeContext(String key, String value) {
@@ -95,16 +108,29 @@ public class MonitorDataClient implements Runnable {
     @Override
     public void run() {
         logger.info(" 开启监控数据传输线程 ... ");
+        int threshold = this.queueSize / 2;
+        int rate = this.queueSize / 10;
         while (true) {
             BaseDTO baseDTO = queueData.poll();
             try {
                 if (baseDTO != null) {
                     sendOnWay(baseDTO);
                 }
+
+                int size = queueData.size();
+
+                // 当未消费数量超过1半的时候,说明消费已经跟不上了。这时候尝试开始加速消费。
+                if (size >= threshold) {
+                    logger.warn("开启加速消费 当前数量:" + size);
+                    // 加速消费,按照当前总数10%开始发送,尽可能不占用系统资源。
+                    speedConsumer(rate);
+                }
             } catch (Exception e) {
-                logger.error("monitor consumer fail", e);
+                logger.warn("monitor consumer fail : " + e.getMessage());
             } finally {
                 try {
+                    // 需要注意的是,这里休眠只是为了不让CPU飙百,避免没有数据来的情况下。
+                    // 当然这也意味着消费会受影响,每秒200条.
                     Thread.sleep(5);
                 } catch (InterruptedException e) {
                     e.printStackTrace();
@@ -114,4 +140,17 @@ public class MonitorDataClient implements Runnable {
 
         }
     }
+
+    /**
+     * 加速消费
+     *
+     * @param rate 消费阀值
+     * @throws Exception
+     */
+    private void speedConsumer(int rate) throws Exception {
+        for (int i = 0; i < rate; i++) {
+            BaseDTO baseDTO = queueData.poll();
+            sendOnWay(baseDTO);
+        }
+    }
 }

+ 26 - 10
jay-monitor-data-client/src/main/java/com/jay/monitor/data/client/MonitorSendProducer.java

@@ -1,41 +1,57 @@
 package com.jay.monitor.data.client;
 
-import com.jay.monitor.data.core.model.serializable.URLDataDTO;
+import com.jay.monitor.data.core.model.serializable.base.BaseDTO;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
 import org.springframework.beans.BeansException;
+import org.springframework.beans.factory.InitializingBean;
 import org.springframework.context.ApplicationContext;
 import org.springframework.context.ApplicationContextAware;
 import org.springframework.stereotype.Component;
 
 /**
- * @Module TODO
- * @Description TODO
+ * @Module 监控发送
+ * @Description 监控发送器
  * @Author liukaixiong
  * @Date 2020/10/23 19:38
  */
 @Component
-public class MonitorSendProducer implements ApplicationContextAware {
-
+public class MonitorSendProducer implements ApplicationContextAware, InitializingBean {
+    private Logger logger = LoggerFactory.getLogger(getClass());
     private static ApplicationContext applicationContext;
+    private static volatile boolean isEnableProducer = false;
 
     @Override
     public void setApplicationContext(ApplicationContext applicationContext) throws BeansException {
         MonitorSendProducer.applicationContext = applicationContext;
     }
 
+    @Override
+    public void afterPropertiesSet() throws Exception {
+        MonitorDataClient monitorData = getMonitorData();
+        if (monitorData != null) {
+            isEnableProducer = true;
+            logger.info("开启监控数据传输器 : " + monitorData.getAddr());
+        }
+    }
+
     /**
      * 发送数据
      *
      * @param dataDTO
      * @throws Exception
      */
-    public static void sendMsg(URLDataDTO dataDTO) throws Exception {
-        MonitorDataClient monitorData = getMonitorData();
-        if (monitorData != null) {
+    public static void sendMsg(BaseDTO dataDTO) {
+        if (isEnableProducer) {
             getMonitorData().sendObjectMsg(dataDTO);
         }
     }
 
-    private static MonitorDataClient getMonitorData() {
-        return applicationContext.getBean(MonitorDataClient.class);
+    public static MonitorDataClient getMonitorData() {
+        try {
+            return applicationContext.getBean(MonitorDataClient.class);
+        } catch (Exception e) {
+            return null;
+        }
     }
 }

+ 10 - 0
jay-monitor-data-client/src/main/java/com/jay/monitor/data/client/config/ClientMonitorAutoConfiguration.java

@@ -4,15 +4,18 @@ import com.alibaba.druid.pool.DruidDataSource;
 import com.jay.monitor.data.client.MonitorDataClient;
 import com.jay.monitor.data.client.MonitorSendProducer;
 import com.jay.monitor.data.client.config.props.MonitorProperties;
+import com.jay.monitor.data.client.ext.kafka.KafkaMonitorProducer;
 import com.jay.monitor.data.client.filter.DruidMonitorFilter;
 import com.jay.monitor.data.core.enums.MonitorDataConstants;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.beans.factory.annotation.Value;
 import org.springframework.boot.autoconfigure.condition.ConditionalOnBean;
+import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty;
 import org.springframework.boot.context.properties.EnableConfigurationProperties;
 import org.springframework.context.annotation.Bean;
 import org.springframework.context.annotation.Configuration;
 import org.springframework.context.annotation.Import;
+import org.springframework.kafka.core.KafkaTemplate;
 
 import java.net.InetAddress;
 
@@ -31,6 +34,7 @@ public class ClientMonitorAutoConfiguration {
     private String applicationName;
 
     @Bean
+    @ConditionalOnProperty(prefix = "spring.monitor-data", value = "host")
     public MonitorDataClient monitorDataClient(@Autowired MonitorProperties monitorProperties) throws Exception {
         MonitorDataClient client = new MonitorDataClient(monitorProperties.getHost(), monitorProperties.getPort());
         client.setQueueSize(monitorProperties.getQueueSize());
@@ -47,4 +51,10 @@ public class ClientMonitorAutoConfiguration {
         return monitorFilter;
     }
 
+    @Bean
+    @ConditionalOnBean(value = {KafkaTemplate.class})
+    public KafkaMonitorProducer kafkaMonitorFilter() {
+        return new KafkaMonitorProducer();
+    }
+
 }

+ 1 - 1
jay-monitor-data-client/src/main/java/com/jay/monitor/data/client/config/props/MonitorProperties.java

@@ -16,7 +16,7 @@ public class MonitorProperties {
 
     private Integer port = MonitorDataConstants.DEFAULT_PORT;
 
-    private Integer queueSize = 1000;
+    private Integer queueSize = 3000;
 
     private SQLMonitorProperties sql;
 

Plik diff jest za duży
+ 10 - 10
jay-monitor-data-client/src/test/java/com/jay/monitor/data/client/MonitorSendProducerTest.java


+ 9 - 6
jay-monitor-data-core/src/main/java/com/jay/monitor/data/core/enums/MsgTypeEnums.java

@@ -9,11 +9,14 @@ package com.jay.monitor.data.core.enums;
  */
 public enum MsgTypeEnums {
     /**
-     * SQL :        SQL语句类型
-     * SERVICE :    业务类型
-     * URL  :       请求URL类型
-     * CACHE :      缓存类型
-     * OTHER :      其他类型
+     * SQL      :            SQL语句类型
+     * SERVICE :             业务类型
+     * URL  :                请求URL类型
+     * CACHE :               缓存类型
+     * MQ   :                消息队列
+     * RPC  :                远程调用
+     * thirdParty:           第三方
+     * OTHER :               其他类型
      */
-    SQL, SERVICE, URL, BUSINESS, CACHE, OTHER;
+    SQL, SERVICE, URL, CACHE, MQ, RPC, OTHER;
 }

+ 6 - 7
jay-monitor-data-core/src/main/java/com/jay/monitor/data/core/model/serializable/SQLMonitorDTO.java

@@ -1,7 +1,7 @@
 package com.jay.monitor.data.core.model.serializable;
 
 import com.jay.monitor.data.core.enums.MsgTypeEnums;
-import com.jay.monitor.data.core.model.serializable.base.ApplicationDTO;
+import com.jay.monitor.data.core.model.serializable.base.BaseDTO;
 
 /**
  * SQL相关的数据
@@ -9,12 +9,7 @@ import com.jay.monitor.data.core.model.serializable.base.ApplicationDTO;
  * @author : liukx
  * @time : 2020/8/26 - 16:31
  */
-public class SQLMonitorDTO extends ApplicationDTO {
-
-    public SQLMonitorDTO() {
-        super(MsgTypeEnums.SQL);
-    }
-
+public class SQLMonitorDTO extends BaseDTO {
     /**
      * sql编号
      */
@@ -45,6 +40,10 @@ public class SQLMonitorDTO extends ApplicationDTO {
      */
     private Integer concurrentMax;
 
+    public SQLMonitorDTO() {
+        super(MsgTypeEnums.SQL);
+    }
+
     public String getSqlId() {
         return sqlId;
     }

+ 11 - 2
jay-monitor-data-core/src/main/java/com/jay/monitor/data/core/model/serializable/URLDataDTO.java

@@ -1,7 +1,7 @@
 package com.jay.monitor.data.core.model.serializable;
 
 import com.jay.monitor.data.core.enums.MsgTypeEnums;
-import com.jay.monitor.data.core.model.serializable.base.LogDataDTO;
+import com.jay.monitor.data.core.model.serializable.base.*;
 
 /**
  * @Module URL传输数据结构
@@ -9,10 +9,19 @@ import com.jay.monitor.data.core.model.serializable.base.LogDataDTO;
  * @Author liukaixiong
  * @Date 2020/10/23 15:52
  */
-public class URLDataDTO extends LogDataDTO {
+public class URLDataDTO extends CommonDataDTO {
 
     public URLDataDTO() {
         super(MsgTypeEnums.URL);
     }
 
+    private String url;
+
+    public String getUrl() {
+        return url;
+    }
+
+    public void setUrl(String url) {
+        this.url = url;
+    }
 }

+ 0 - 41
jay-monitor-data-core/src/main/java/com/jay/monitor/data/core/model/serializable/base/ApplicationDTO.java

@@ -1,41 +0,0 @@
-package com.jay.monitor.data.core.model.serializable.base;
-
-import com.jay.monitor.data.core.enums.MsgTypeEnums;
-
-/**
- * @Module 传输层
- * @Description 应用对象描述
- * @Author liukaixiong
- * @Date 2020/10/21 17:28
- */
-public class ApplicationDTO extends BaseDTO {
-
-    public ApplicationDTO(MsgTypeEnums type) {
-        super(type);
-    }
-
-    /**
-     * 所属ip
-     */
-    private String ip;
-    /**
-     * 应用名称
-     */
-    private String applicationName;
-
-    public String getIp() {
-        return ip;
-    }
-
-    public void setIp(String ip) {
-        this.ip = ip;
-    }
-
-    public String getApplicationName() {
-        return applicationName;
-    }
-
-    public void setApplicationName(String applicationName) {
-        this.applicationName = applicationName;
-    }
-}

+ 13 - 4
jay-monitor-data-core/src/main/java/com/jay/monitor/data/core/model/serializable/base/BaseDTO.java

@@ -29,6 +29,11 @@ public class BaseDTO implements Serializable {
      */
     private Date createDate;
 
+    /**
+     * 状态
+     */
+    private Integer status;
+
     /**
      * 拓展参数
      */
@@ -38,10 +43,6 @@ public class BaseDTO implements Serializable {
         return type;
     }
 
-    public void setType(MsgTypeEnums type) {
-        this.type = type;
-    }
-
     public Map<String, Object> getExtMap() {
         return extMap;
     }
@@ -57,4 +58,12 @@ public class BaseDTO implements Serializable {
     public void setCreateDate(Date createDate) {
         this.createDate = createDate;
     }
+
+    public Integer getStatus() {
+        return status;
+    }
+
+    public void setStatus(Integer status) {
+        this.status = status;
+    }
 }

+ 0 - 55
jay-monitor-data-core/src/main/java/com/jay/monitor/data/core/model/serializable/base/GroupDataDTO.java

@@ -1,55 +0,0 @@
-package com.jay.monitor.data.core.model.serializable.base;
-
-import com.jay.monitor.data.core.enums.MsgTypeEnums;
-
-/**
- * @Module 传输层
- * @Description 搜索组对象
- * @Author liukaixiong
- * @Date 2020/10/21 17:18
- */
-public abstract class GroupDataDTO extends ApplicationDTO {
-
-    public GroupDataDTO(MsgTypeEnums type) {
-        super(type);
-    }
-
-    /**
-     * 组名称
-     */
-    private String groupName;
-
-    /**
-     * 组的key名称
-     */
-    private String groupKeyName;
-
-    /**
-     * 数据编号
-     */
-    private String dataId;
-
-    public String getGroupName() {
-        return groupName;
-    }
-
-    public void setGroupName(String groupName) {
-        this.groupName = groupName;
-    }
-
-    public String getGroupKeyName() {
-        return groupKeyName;
-    }
-
-    public void setGroupKeyName(String groupKeyName) {
-        this.groupKeyName = groupKeyName;
-    }
-
-    public String getDataId() {
-        return dataId;
-    }
-
-    public void setDataId(String dataId) {
-        this.dataId = dataId;
-    }
-}

+ 0 - 53
jay-monitor-data-core/src/main/java/com/jay/monitor/data/core/model/serializable/base/LogDataDTO.java

@@ -1,53 +0,0 @@
-package com.jay.monitor.data.core.model.serializable.base;
-
-import com.jay.monitor.data.core.enums.MsgTypeEnums;
-
-/**
- * @Module 传输层
- * @Description 日志对象定义
- * @Author liukaixiong
- * @Date 2020/10/23 15:59
- */
-public class LogDataDTO extends RequestDataDTO {
-
-    public LogDataDTO(MsgTypeEnums type) {
-        super(type);
-    }
-
-    /**
-     * log编号
-     */
-    private String logId;
-    /**
-     * log消息
-     */
-    private String logMsg;
-    /**
-     * 消息状态 : 1正常消息、-1异常消息
-     */
-    private Integer status = 1;
-
-    public Integer getStatus() {
-        return status;
-    }
-
-    public void setStatus(Integer status) {
-        this.status = status;
-    }
-
-    public String getLogId() {
-        return logId;
-    }
-
-    public void setLogId(String logId) {
-        this.logId = logId;
-    }
-
-    public String getLogMsg() {
-        return logMsg;
-    }
-
-    public void setLogMsg(String logMsg) {
-        this.logMsg = logMsg;
-    }
-}

+ 0 - 26
jay-monitor-data-core/src/main/java/com/jay/monitor/data/core/model/serializable/base/RequestDataDTO.java

@@ -1,26 +0,0 @@
-package com.jay.monitor.data.core.model.serializable.base;
-
-import com.jay.monitor.data.core.enums.MsgTypeEnums;
-
-/**
- * @Module TODO
- * @Description TODO
- * @Author liukaixiong
- * @Date 2020/10/23 16:20
- */
-public class RequestDataDTO extends GroupDataDTO{
-
-    public RequestDataDTO(MsgTypeEnums type) {
-        super(type);
-    }
-
-    private Long requestTime;
-
-    public Long getRequestTime() {
-        return requestTime;
-    }
-
-    public void setRequestTime(Long requestTime) {
-        this.requestTime = requestTime;
-    }
-}

+ 1 - 1
jay-monitor-data-server/pom.xml

@@ -8,7 +8,7 @@
         <version>1.0-SNAPSHOT</version>
     </parent>
     <modelVersion>4.0.0</modelVersion>
-    <artifactId>jay-monitor-data-service</artifactId>
+    <artifactId>jay-monitor-data-server</artifactId>
 
     <properties>
 <!--        <thymeleaf.version>3.0.11.RELEASE</thymeleaf.version>-->

+ 0 - 17
jay-monitor-data-server/src/main/java/com/jay/monitor/data/server/BackstageServiceApplication.java

@@ -1,17 +0,0 @@
-package com.jay.monitor.data.server;
-
-import org.mybatis.spring.annotation.MapperScan;
-import org.springframework.boot.SpringApplication;
-import org.springframework.boot.autoconfigure.SpringBootApplication;
-import org.springframework.scheduling.annotation.EnableScheduling;
-
-@SpringBootApplication
-@MapperScan(basePackages = "com.jay.monitor.data.server.daos")
-@EnableScheduling
-public class BackstageServiceApplication {
-
-    public static void main(String[] args) {
-        SpringApplication.run(BackstageServiceApplication.class, args);
-    }
-
-}

+ 13 - 6
jay-monitor-data-server/src/main/java/com/jay/monitor/data/server/models/entity/JayMonitorUrl.java

@@ -28,6 +28,11 @@ public class JayMonitorUrl implements Serializable {
      */
     private String monitorType;
 
+    /**
+     * 请求路径
+     */
+    private String url;
+
     /**
      * 应用监控组
      */
@@ -63,8 +68,6 @@ public class JayMonitorUrl implements Serializable {
      */
     private Date createdDay;
 
-    private static final long serialVersionUID = 1L;
-
     public Integer getId() {
         return id;
     }
@@ -97,6 +100,14 @@ public class JayMonitorUrl implements Serializable {
         this.monitorType = monitorType;
     }
 
+    public String getUrl() {
+        return url;
+    }
+
+    public void setUrl(String url) {
+        this.url = url;
+    }
+
     public String getDataGroupName() {
         return dataGroupName;
     }
@@ -152,8 +163,4 @@ public class JayMonitorUrl implements Serializable {
     public void setCreatedDay(Date createdDay) {
         this.createdDay = createdDay;
     }
-
-    public static long getSerialVersionUID() {
-        return serialVersionUID;
-    }
 }

+ 15 - 0
jay-monitor-data-server/src/main/java/com/jay/monitor/data/server/process/AbstractUserProcess.java

@@ -2,6 +2,9 @@ package com.jay.monitor.data.server.process;
 
 import com.alipay.remoting.BizContext;
 import com.alipay.remoting.rpc.protocol.SyncMultiInterestUserProcessor;
+import com.jay.monitor.data.core.enums.MonitorDataConstants;
+import com.jay.monitor.data.core.model.serializable.base.ApplicationData;
+import com.jay.monitor.data.server.utils.DataUtils;
 
 import java.util.ArrayList;
 import java.util.List;
@@ -16,6 +19,18 @@ public abstract class AbstractUserProcess<T> extends SyncMultiInterestUserProces
 
     @Override
     public Object handleRequest(BizContext bizCtx, T request) throws Exception {
+
+        if (request instanceof ApplicationData) {
+
+            ApplicationData applicationData = (ApplicationData) request;
+            String application = DataUtils.getStringValue(applicationData.getApplicationName(), bizCtx.getInvokeContext().get(MonitorDataConstants.INVOKE_CLIENT_NAME));
+            String ip = DataUtils.getStringValue(applicationData.getIp(), bizCtx.getInvokeContext().get(MonitorDataConstants.INVOKE_CLIENT_IP));
+
+            applicationData.setApplicationName(application);
+            applicationData.setIp(ip);
+
+        }
+
         return handleRequest0(bizCtx, request);
     }
 

+ 4 - 30
jay-monitor-data-server/src/main/java/com/jay/monitor/data/server/process/URLUserProcess.java

@@ -1,17 +1,11 @@
 package com.jay.monitor.data.server.process;
 
-import com.alibaba.fastjson.JSON;
 import com.alipay.remoting.BizContext;
-import com.jay.monitor.data.core.enums.MonitorDataConstants;
+import com.jay.monitor.data.core.enums.MsgTypeEnums;
 import com.jay.monitor.data.core.model.serializable.URLDataDTO;
-import com.jay.monitor.data.server.daos.JayMonitorUrlLogMapper;
-import com.jay.monitor.data.server.daos.JayMonitorUrlMapper;
-import com.jay.monitor.data.server.models.entity.JayMonitorUrl;
-import com.jay.monitor.data.server.models.entity.JayMonitorUrlLog;
-import com.jay.monitor.data.server.utils.DataUtils;
+import com.jay.monitor.data.server.store.StoreDataManager;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
-import org.springframework.beans.BeanUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Component;
 
@@ -29,31 +23,11 @@ public class URLUserProcess extends AbstractUserProcess<URLDataDTO> {
     private Logger logger = LoggerFactory.getLogger(URLUserProcess.class);
 
     @Autowired
-    private JayMonitorUrlMapper urlMapper;
-
-    @Autowired
-    private JayMonitorUrlLogMapper urlLogMapper;
+    private StoreDataManager storeDataManager;
 
     @Override
     public Object handleRequest0(BizContext bizCtx, URLDataDTO request) throws Exception {
-        logger.info("接收到的URL 传输对象:" + JSON.toJSONString(request));
-
-        JayMonitorUrl monitorUrl = new JayMonitorUrl();
-        BeanUtils.copyProperties(request, monitorUrl);
-        monitorUrl.setApplicationName(DataUtils.getStringValue(request.getApplicationName(), bizCtx.getInvokeContext().get(MonitorDataConstants.INVOKE_CLIENT_NAME)));
-        monitorUrl.setApplicationIp(DataUtils.getStringValue(request.getIp(), bizCtx.getInvokeContext().get(MonitorDataConstants.INVOKE_CLIENT_IP)));
-        monitorUrl.setCreatedDay(request.getCreateDate());
-        monitorUrl.setCreatedTime(request.getCreateDate());
-        int id = urlMapper.insert(monitorUrl);
-
-        JayMonitorUrlLog urlLog = new JayMonitorUrlLog();
-        urlLog.setMonitorId(id);
-        urlLog.setCreateDate(request.getCreateDate());
-        urlLog.setLogId(request.getLogId());
-        urlLog.setLogText(request.getLogMsg());
-        urlLog.setMonitorType(request.getType().name());
-        int logId = urlLogMapper.insert(urlLog);
-
+        storeDataManager.store(MsgTypeEnums.URL, request);
         return request;
     }
 

+ 7 - 73
jay-monitor-data-server/src/main/resources/application-com.yml

@@ -1,73 +1,7 @@
-debug: false
-server:
-  port: 5800
-  tomcat:
-    max-threads: 2000
-    uri-encoding: UTF-8
-    max-connections: 1000
-  servlet:
-    context-path: /
-
-feign:
-  client:
-    config:
-      default:
-        connectTimeout: 10000
-        readTimeout: 10000
-  hystrix:
-   enabled: true
-
-eureka:
-  instance:
-    prefer-ip-address: true
-    lease-renewal-interval-in-seconds: 10
-    lease-expiration-duration-in-seconds: 20
-    status-page-url-path: /health
-    instance-id: ${spring.cloud.client.ipAddress}:${server.port}
-  client:
-    registry-fetch-interval-seconds: 10 #表示eureka client间隔多久去拉取服务注册信息 在网关使用
-    service-url:
-      defaultZone: http://172.19.189.120:5100/eureka/
-    fetch-registry: true
-    register-with-eureka: true
-
-default:
-  minIdle: 20
-  validationQuery: SELECT 1
-  initialSize: 100
-  maxWait: 60000
-  filters: wall,stat
-  poolPreparedStatements: true
-  url: jdbc:mysql://rm-uf67pg02knl361sn2.mysql.rds.aliyuncs.com/elab_db?characterEncoding=UTF-8&connectTimeout=60000&socketTimeout=60000
-  logAbandoned: true
-  password: RSc3TLtmuprZgo1a
-  maxOpenPreparedStatements: 1
-  testOnBorrow: false
-  testWhileIdle: true
-  removeAbandoned: true
-  minEvictableIdleTimeMillis: 300000
-  timeBetweenEvictionRunsMillis: 60000
-  testOnReturn: false
-  removeAbandonedTimeout: 3600
-  driverClassName: com.mysql.jdbc.Driver
-  queryTimeout: 2400
-  maxActive: 100
-  username: dmmanager
-
-swagger2:
-  basePackage: com.elab.marketing.auth.service.impl
-  title: materiel
-  description: 用户服务
-  termsOfServiceUrl: http://www.elab-plus.com
-  licenseUrl: http://127.0.0.1:5301/doc.html
-  version: 1.0.0
-  enable: true
-  docUrl: /v2/api-docs
-management:
-  security:
-    enabled: false
-
-  # 监控开启
-elab:
-  monitor:
-    enable: true
+spring:
+  datasource:
+    type: com.alibaba.druid.pool.DruidDataSource
+    driver-class-name: com.mysql.jdbc.Driver
+    url: jdbc:mysql://172.19.189.118/jay_monitor_prod?characterEncoding=UTF-8&connectTimeout=60000&socketTimeout=60000
+    username: jay_monitor
+    password: jayzhou

+ 6 - 78
jay-monitor-data-server/src/main/resources/application-test.yml

@@ -1,79 +1,7 @@
-debug: false
-server:
-  port: 5800
-  tomcat:
-    max-threads: 2000
-    uri-encoding: UTF-8
-  servlet:
-    context-path: /
-
 spring:
-  application:
-    name: elab-marketing-authentication
-  servlet:
-    multipart:
-      max-request-size: 1MB
-      max-file-size: 1MB
-    encoding:
-      charset: UTF-8
-      enabled: true
-      force-request: true
-      force: true
-
-feign:
-  client:
-    config:
-      default:
-        connectTimeout: 5000
-        readTimeout: 5000
-  hystrix:
-   enabled: true
-
-eureka:
-  instance:
-    prefer-ip-address: true
-    lease-renewal-interval-in-seconds: 10
-    lease-expiration-duration-in-seconds: 20
-    status-page-url-path: /health
-  client:
-    registry-fetch-interval-seconds: 10 #表示eureka client间隔多久去拉取服务注册信息 在网关使用
-    service-url:
-      defaultZone: http://127.0.0.1:5100/eureka/
-    fetch-registry: true
-    register-with-eureka: true
-
-default:
-  minIdle: 10
-  validationQuery: SELECT 1
-  initialSize: 5
-  maxWait: 60000
-  filters: wall,stat
-  poolPreparedStatements: true
-  url: jdbc:mysql://172.19.189.121/marketing_db?characterEncoding=UTF-8&connectTimeout=60000&socketTimeout=60000
-  logAbandoned: true
-  password: elab@123
-  maxOpenPreparedStatements: 1
-  testOnBorrow: false
-  testWhileIdle: true
-  removeAbandoned: true
-  minEvictableIdleTimeMillis: 300000
-  timeBetweenEvictionRunsMillis: 60000
-  testOnReturn: false
-  removeAbandonedTimeout: 3600
-  driverClassName: com.mysql.jdbc.Driver
-  querytimeout: 2400
-  maxActive: 50
-  username: root
-
-swagger2:
-  basePackage: com.elab.marketing.auth.service.impl
-  title: materiel
-  description: 用户服务
-  termsOfServiceUrl: http://www.elab-plus.com
-  licenseUrl: http://127.0.0.1:5301/doc.html
-  version: 1.0.0
-  enable: true
-  docUrl: /v2/api-docs
-management:
-  security:
-    enabled: false
+  datasource:
+    type: com.alibaba.druid.pool.DruidDataSource
+    driver-class-name: com.mysql.jdbc.Driver
+    url: jdbc:mysql://172.19.189.118/jay_monitor?characterEncoding=UTF-8&connectTimeout=60000&socketTimeout=60000
+    username: jay_monitor
+    password: jayzhou

+ 6 - 78
jay-monitor-data-server/src/main/resources/application-uat.yml

@@ -1,79 +1,7 @@
-debug: false
-server:
-  port: 5800
-  context-path: /
-  tomcat:
-    max-threads: 2000
-    uri-encoding: UTF-8
-    max-connections: 1000
-app.name: uat-elab-backstage-service
 spring:
-  application:
-    name: elab-backstage-service
-  servlet:
-    multipart:
-      max-request-size: 1MB
-      max-file-size: 1MB
-    encoding:
-      charset: UTF-8
-      enabled: true
-      force-request: true
-      force: true
-
-feign:
-  client:
-      config:
-        default:
-          connectTimeout: 5000
-          readTimeout: 5000
-  hystrix:
-   enabled: true
-
-eureka:
-  instance:
-    prefer-ip-address: true
-    lease-renewal-interval-in-seconds: 10
-    lease-expiration-duration-in-seconds: 20
-    status-page-url-path: /health
-  client:
-    registry-fetch-interval-seconds: 10 #表示eureka client间隔多久去拉取服务注册信息 在网关使用
-    service-url:
-      defaultZone: http://172.19.189.114:5100/eureka/
-    fetch-registry: true
-    register-with-eureka: true
-
-default:
-  minIdle: 20
-  validationQuery: SELECT 1
-  initialSize: 100
-  maxWait: 60000
-  filters: wall,stat
-  poolPreparedStatements: true
-  url: jdbc:mysql://172.19.189.116/marketing_db?characterEncoding=UTF-8&connectTimeout=60000&socketTimeout=60000
-  logAbandoned: true
-  password: 666666
-  maxOpenPreparedStatements: 1
-  testOnBorrow: false
-  testWhileIdle: true
-  removeAbandoned: true
-  minEvictableIdleTimeMillis: 300000
-  timeBetweenEvictionRunsMillis: 60000
-  testOnReturn: false
-  removeAbandonedTimeout: 3600
-  driverClassName: com.mysql.jdbc.Driver
-  queryTimeout: 2400
-  maxActive: 100
-  username: root
-
-swagger2:
-  basePackage: com.elab.marketing.auth.service.impl
-  title: materiel
-  description: 用户服务
-  termsOfServiceUrl: http://www.elab-plus.com
-  licenseUrl: http://127.0.0.1:5301/doc.html
-  version: 1.0.0
-  enable: true
-  docUrl: /v2/api-docs
-management:
-  security:
-    enabled: false
+  datasource:
+    type: com.alibaba.druid.pool.DruidDataSource
+    driver-class-name: com.mysql.jdbc.Driver
+    url: jdbc:mysql://172.19.189.118/jay_monitor?characterEncoding=UTF-8&connectTimeout=60000&socketTimeout=60000
+    username: jay_monitor
+    password: jayzhou

+ 1 - 0
jay-monitor-data-server/src/main/resources/application.yml

@@ -42,6 +42,7 @@ swagger2:
   enable: true
   docUrl: /v2/api-docs
 
+
 #sofa:
 #  middleware:
 #    log:

+ 27 - 2
jay-monitor-data-server/src/main/resources/logback.xml

@@ -3,9 +3,11 @@
     <include resource="org/springframework/boot/logging/logback/base.xml"/>
     <jmxConfigurator/>
     <property name="LOG_PATH" value="logs"/>
+    <property name="APPLICATION" value="jay-monitor-data-server" />
+
 
     <appender name="info-log" class="ch.qos.logback.core.rolling.RollingFileAppender">
-        <File>${LOG_PATH}/jay-monitor-data-service.log</File>
+        <File>${LOG_PATH}/${APPLICATION}.log</File>
         <rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy">
             <fileNamePattern>${LOG_PATH}/%d{yyyyMMdd}/%d{yyyyMMdd}-%i.log</fileNamePattern>
             <maxHistory>30</maxHistory>
@@ -22,6 +24,27 @@
     <!--        </filter>-->
     <!--    </appender>-->
 
+
+    <appender name="ERROR_LOG" class="ch.qos.logback.core.rolling.RollingFileAppender">
+        <!-- 过滤日志 -->
+        <File>${LOG_PATH}/${APPLICATION}-error.log</File>
+        <filter class="ch.qos.logback.classic.filter.ThresholdFilter">
+            <level>ERROR</level>
+        </filter>
+        <encoder>
+            <pattern>
+                %msg%n
+            </pattern>
+        </encoder>
+        <!-- 滚动策略 -->
+        <rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy">
+            <fileNamePattern>${LOG_PATH}/error/%d{yyyyMMdd}/${APPLICATION}-%d{yyyyMMdd}-%i.log</fileNamePattern>
+            <maxHistory>30</maxHistory>
+            <totalSizeCap>30GB</totalSizeCap>
+            <maxFileSize>100MB</maxFileSize>
+        </rollingPolicy>
+    </appender>
+
     <!-- 通过异步来提升写入效率 -->
     <appender name="ASYNC_FILE" class="ch.qos.logback.classic.AsyncAppender">
         <discardingThreshold>0</discardingThreshold>
@@ -50,7 +73,9 @@
         <appender-ref ref="stdout"/>
     </logger>
 
-    <root level="info">
+
+
+    <root level="ERROR">
         <appender-ref ref="console"></appender-ref>
         <appender-ref ref="ASYNC_FILE"></appender-ref>
         <!--        <appender-ref ref="cat"/>-->

+ 23 - 8
jay-monitor-data-server/src/main/resources/mybatis/mapper/JayMonitorUrlMapper.xml

@@ -1,11 +1,12 @@
 <?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.jay.monitor.data.server.daos.JayMonitorUrlMapper">
+<mapper namespace="com.jay.monitor.data.server.daos.JayMonitorUrlDao">
   <resultMap id="BaseResultMap" type="com.jay.monitor.data.server.models.entity.JayMonitorUrl">
     <id column="id" jdbcType="INTEGER" property="id" />
     <result column="application_name" jdbcType="VARCHAR" property="applicationName" />
     <result column="application_ip" jdbcType="VARCHAR" property="applicationIp" />
     <result column="monitor_type" jdbcType="VARCHAR" property="monitorType" />
+    <result column="url" jdbcType="VARCHAR" property="url" />
     <result column="data_group_name" jdbcType="VARCHAR" property="dataGroupName" />
     <result column="data_group_key" jdbcType="VARCHAR" property="dataGroupKey" />
     <result column="data_id" jdbcType="VARCHAR" property="dataId" />
@@ -73,7 +74,7 @@
     </where>
   </sql>
   <sql id="Base_Column_List">
-    id, application_name, application_ip, monitor_type, data_group_name, data_group_key, 
+    id, application_name, application_ip, monitor_type, url, data_group_name, data_group_key, 
     data_id, `status`, request_time, created_time, created_day
   </sql>
   <select id="selectByExample" parameterType="com.jay.monitor.data.server.models.entity.JayMonitorUrlExample" resultMap="BaseResultMap">
@@ -108,13 +109,13 @@
   </delete>
   <insert id="insert" keyColumn="id" keyProperty="id" parameterType="com.jay.monitor.data.server.models.entity.JayMonitorUrl" useGeneratedKeys="true">
     insert into jay_monitor_url (application_name, application_ip, monitor_type, 
-      data_group_name, data_group_key, data_id, 
-      `status`, request_time, created_time, 
-      created_day)
+      url, data_group_name, data_group_key, 
+      data_id, `status`, request_time, 
+      created_time, created_day)
     values (#{applicationName,jdbcType=VARCHAR}, #{applicationIp,jdbcType=VARCHAR}, #{monitorType,jdbcType=VARCHAR}, 
-      #{dataGroupName,jdbcType=VARCHAR}, #{dataGroupKey,jdbcType=VARCHAR}, #{dataId,jdbcType=VARCHAR}, 
-      #{status,jdbcType=INTEGER}, #{requestTime,jdbcType=INTEGER}, #{createdTime,jdbcType=TIMESTAMP}, 
-      #{createdDay,jdbcType=DATE})
+      #{url,jdbcType=VARCHAR}, #{dataGroupName,jdbcType=VARCHAR}, #{dataGroupKey,jdbcType=VARCHAR}, 
+      #{dataId,jdbcType=VARCHAR}, #{status,jdbcType=INTEGER}, #{requestTime,jdbcType=INTEGER}, 
+      #{createdTime,jdbcType=TIMESTAMP}, #{createdDay,jdbcType=DATE})
   </insert>
   <insert id="insertSelective" keyColumn="id" keyProperty="id" parameterType="com.jay.monitor.data.server.models.entity.JayMonitorUrl" useGeneratedKeys="true">
     insert into jay_monitor_url
@@ -128,6 +129,9 @@
       <if test="monitorType != null">
         monitor_type,
       </if>
+      <if test="url != null">
+        url,
+      </if>
       <if test="dataGroupName != null">
         data_group_name,
       </if>
@@ -160,6 +164,9 @@
       <if test="monitorType != null">
         #{monitorType,jdbcType=VARCHAR},
       </if>
+      <if test="url != null">
+        #{url,jdbcType=VARCHAR},
+      </if>
       <if test="dataGroupName != null">
         #{dataGroupName,jdbcType=VARCHAR},
       </if>
@@ -204,6 +211,9 @@
       <if test="record.monitorType != null">
         monitor_type = #{record.monitorType,jdbcType=VARCHAR},
       </if>
+      <if test="record.url != null">
+        url = #{record.url,jdbcType=VARCHAR},
+      </if>
       <if test="record.dataGroupName != null">
         data_group_name = #{record.dataGroupName,jdbcType=VARCHAR},
       </if>
@@ -236,6 +246,7 @@
       application_name = #{record.applicationName,jdbcType=VARCHAR},
       application_ip = #{record.applicationIp,jdbcType=VARCHAR},
       monitor_type = #{record.monitorType,jdbcType=VARCHAR},
+      url = #{record.url,jdbcType=VARCHAR},
       data_group_name = #{record.dataGroupName,jdbcType=VARCHAR},
       data_group_key = #{record.dataGroupKey,jdbcType=VARCHAR},
       data_id = #{record.dataId,jdbcType=VARCHAR},
@@ -259,6 +270,9 @@
       <if test="monitorType != null">
         monitor_type = #{monitorType,jdbcType=VARCHAR},
       </if>
+      <if test="url != null">
+        url = #{url,jdbcType=VARCHAR},
+      </if>
       <if test="dataGroupName != null">
         data_group_name = #{dataGroupName,jdbcType=VARCHAR},
       </if>
@@ -288,6 +302,7 @@
     set application_name = #{applicationName,jdbcType=VARCHAR},
       application_ip = #{applicationIp,jdbcType=VARCHAR},
       monitor_type = #{monitorType,jdbcType=VARCHAR},
+      url = #{url,jdbcType=VARCHAR},
       data_group_name = #{dataGroupName,jdbcType=VARCHAR},
       data_group_key = #{dataGroupKey,jdbcType=VARCHAR},
       data_id = #{dataId,jdbcType=VARCHAR},

+ 0 - 1
jay-monitor-data-server/src/test/java/com/jay/monitor/data/server/MonitorDataServerTest.java

@@ -49,7 +49,6 @@ public class MonitorDataServerTest {
 
             SQLMonitorDTO monitorDTO = new SQLMonitorDTO();
             monitorDTO.setSqlId("asdasdf");
-            monitorDTO.setType(MsgTypeEnums.SQL);
             // Arrays.asList(monitorDTO)
             List<BaseDTO> dtos = new ArrayList<>();
             dtos.add(monitorDTO);

+ 61 - 0
pom.xml

@@ -149,4 +149,65 @@
         </dependencies>
     </dependencyManagement>
 
+    <build>
+        <plugins>
+            <plugin>
+                <groupId>org.apache.maven.plugins</groupId>
+                <artifactId>maven-compiler-plugin</artifactId>
+                <configuration>
+                    <source>${java.version}</source>
+                    <target>${java.version}</target>
+                </configuration>
+            </plugin>
+
+            <!-- 打包源码插件 -->
+            <plugin>
+                <groupId>org.apache.maven.plugins</groupId>
+                <artifactId>maven-source-plugin</artifactId>
+                <executions>
+                    <execution>
+                        <id>attach-sources</id>
+                        <goals>
+                            <goal>jar</goal>
+                        </goals>
+                    </execution>
+                </executions>
+            </plugin>
+
+            <!-- 打包javadoc插件 -->
+            <plugin>
+                <groupId>org.apache.maven.plugins</groupId>
+                <artifactId>maven-javadoc-plugin</artifactId>
+                <version>3.0.1</version>
+                <executions>
+                    <execution>
+                        <id>attach-javadocs</id>
+                        <goals>
+                            <goal>jar</goal>
+                        </goals>
+                        <configuration>
+                            <!--<additionalparam>-Xdoclint:none</additionalparam>-->
+                            <charset>UTF-8</charset>
+                            <encoding>UTF-8</encoding>
+                            <docencoding>UTF-8</docencoding>
+                            <doclint>none</doclint>
+                        </configuration>
+                    </execution>
+                </executions>
+            </plugin>
+        </plugins>
+    </build>
+
+    <distributionManagement>
+        <!--<repository>-->
+        <!--<id>releases</id>-->
+        <!--<name>Nexus Release Repository</name>-->
+        <!--<url>http://192.168.0.11:8081/nexus/content/repositories/elab/</url>-->
+        <!--</repository>-->
+        <snapshotRepository>
+            <id>snapshots</id>
+            <name>User Project SNAPSHOTS</name>
+            <url>http://192.168.0.11:8081/nexus/content/repositories/snapshots/</url>
+        </snapshotRepository>
+    </distributionManagement>
 </project>