Jelajahi Sumber

add internal monitor

何知谦 4 tahun lalu
induk
melakukan
61cb480115
16 mengubah file dengan 97 tambahan dan 11 penghapusan
  1. 10 3
      PaasMonitor-client/src/main/java/com/nju/edu/paasMonitorClient/MonitorClient.java
  2. TEMPAT SAMPAH
      PaasMonitor-client/target/app.jar
  3. TEMPAT SAMPAH
      PaasMonitor-client/target/classes/com/nju/edu/paasMonitorClient/MonitorClient.class
  4. TEMPAT SAMPAH
      PaasMonitor-common/target/app.jar
  5. 2 2
      PaasMonitor-server/src/main/java/com/nju/edu/paasMonitorServer/process/MessageConsumer.java
  6. 66 0
      PaasMonitor-server/src/main/java/com/nju/edu/paasMonitorServer/service/impl/InternalClient.java
  7. 5 4
      PaasMonitor-server/src/main/java/com/nju/edu/paasMonitorServer/service/impl/MessageServiceImpl.java
  8. 12 2
      PaasMonitor-server/src/main/java/com/nju/edu/paasMonitorServer/web/exception/ExceptionHandler.java
  9. TEMPAT SAMPAH
      PaasMonitor-server/target/app.jar
  10. TEMPAT SAMPAH
      PaasMonitor-server/target/app.jar.original
  11. TEMPAT SAMPAH
      PaasMonitor-server/target/classes/com/nju/edu/paasMonitorServer/process/MessageConsumer.class
  12. TEMPAT SAMPAH
      PaasMonitor-server/target/classes/com/nju/edu/paasMonitorServer/service/impl/InternalClient.class
  13. TEMPAT SAMPAH
      PaasMonitor-server/target/classes/com/nju/edu/paasMonitorServer/service/impl/MessageServiceImpl.class
  14. TEMPAT SAMPAH
      PaasMonitor-server/target/classes/com/nju/edu/paasMonitorServer/web/exception/ExceptionHandler.class
  15. 1 0
      PaasMonitor-server/target/maven-status/maven-compiler-plugin/compile/default-compile/createdFiles.lst
  16. 1 0
      PaasMonitor-server/target/maven-status/maven-compiler-plugin/compile/default-compile/inputFiles.lst

+ 10 - 3
PaasMonitor-client/src/main/java/com/nju/edu/paasMonitorClient/MonitorClient.java

@@ -8,8 +8,6 @@ import com.nju.edu.paasMonitorCommon.enums.EventStatus;
 import com.nju.edu.paasMonitorCommon.enums.MetricType;
 import com.nju.edu.paasMonitorCommon.enums.SeecSystem;
 
-import java.util.Arrays;
-
 public class MonitorClient {
     public static void logError(SeecSystem system, String category, String name, String message) {
         Error error = new Error(system.getVal(), category, name, message, "", "");
@@ -18,7 +16,7 @@ public class MonitorClient {
 
     public static void logError(SeecSystem system, String category, String name, String message, Throwable cause) {
         String exceptionInfo = cause.toString();
-        String stackTrace = Arrays.toString(cause.getStackTrace());
+        String stackTrace = formatStackTrace(cause.getStackTrace());
         Error error = new Error(system.getVal(), category, name, message, exceptionInfo, stackTrace);
         error.complete();
     }
@@ -62,6 +60,15 @@ public class MonitorClient {
         return new Call(system, category);
     }
 
+    private static String formatStackTrace(StackTraceElement[] stackTraceElements) {
+        StringBuilder res = new StringBuilder();
+        for (StackTraceElement stackTraceElement : stackTraceElements) {
+            res.append(stackTraceElement.toString()).append("\n");
+        }
+        res.deleteCharAt(res.length() - 1);
+        return res.toString();
+    }
+
     public static void main(String[] args) throws InterruptedException {
 ////        logEvent(SeecSystem.PAAS, "try", "first try", EventStatus.FAIL);
 ////        logEvent(SeecSystem.PAAS, "try", "first try", EventStatus.SUCCESS);

TEMPAT SAMPAH
PaasMonitor-client/target/app.jar


TEMPAT SAMPAH
PaasMonitor-client/target/classes/com/nju/edu/paasMonitorClient/MonitorClient.class


TEMPAT SAMPAH
PaasMonitor-common/target/app.jar


+ 2 - 2
PaasMonitor-server/src/main/java/com/nju/edu/paasMonitorServer/process/MessageConsumer.java

@@ -42,8 +42,8 @@ public class MessageConsumer implements Runnable {
     private MessageConsumer(BlockingQueue<Message> mq) {
         this.mq = mq;
         threadPoolExecutor = new ThreadPoolExecutor(CORE_POOL_SIZE,
-                (int) (CORE_POOL_SIZE * 1.5), 5000,
-                TimeUnit.MILLISECONDS, new LinkedBlockingQueue<>(3000));
+                CORE_POOL_SIZE, 5000,
+                TimeUnit.MILLISECONDS, new LinkedBlockingQueue<>());
         threadPoolExecutor.allowCoreThreadTimeOut(true);
     }
 

+ 66 - 0
PaasMonitor-server/src/main/java/com/nju/edu/paasMonitorServer/service/impl/InternalClient.java

@@ -0,0 +1,66 @@
+package com.nju.edu.paasMonitorServer.service.impl;
+
+import com.nju.edu.paasMonitorCommon.enums.EventStatus;
+import com.nju.edu.paasMonitorCommon.enums.MetricType;
+import com.nju.edu.paasMonitorCommon.enums.SeecSystem;
+import com.nju.edu.paasMonitorServer.entity.vo.Error;
+import com.nju.edu.paasMonitorServer.entity.vo.Event;
+import com.nju.edu.paasMonitorServer.entity.vo.Message;
+import com.nju.edu.paasMonitorServer.entity.vo.Metric;
+import com.nju.edu.paasMonitorServer.process.analyzer.CallAnalyzer;
+import com.nju.edu.paasMonitorServer.process.analyzer.ErrorAnalyzer;
+import com.nju.edu.paasMonitorServer.process.analyzer.EventAnalyzer;
+import com.nju.edu.paasMonitorServer.process.analyzer.MetricAnalyzer;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+@Service
+public class InternalClient {
+    private final CallAnalyzer callAnalyzer;
+    private final ErrorAnalyzer errorAnalyzer;
+    private final EventAnalyzer eventAnalyzer;
+    private final MetricAnalyzer metricAnalyzer;
+
+    @Autowired
+    public InternalClient(CallAnalyzer callAnalyzer, ErrorAnalyzer errorAnalyzer,
+                          EventAnalyzer eventAnalyzer, MetricAnalyzer metricAnalyzer) {
+        this.callAnalyzer = callAnalyzer;
+        this.errorAnalyzer = errorAnalyzer;
+        this.eventAnalyzer = eventAnalyzer;
+        this.metricAnalyzer = metricAnalyzer;
+    }
+
+    public void logError(String name, Throwable t) {
+        Message message = new Error(SeecSystem.PAAS.getVal(), "internalMonitor", name,
+                System.currentTimeMillis(), "", t.toString(),
+                formatStackTrace(t.getStackTrace()));
+        errorAnalyzer.analyze(message);
+    }
+
+    public void logEvent(String name, EventStatus eventStatus) {
+        Message message = new Event(SeecSystem.PAAS.getVal(), "internalMonitor", name,
+                System.currentTimeMillis(), eventStatus.getVal());
+        eventAnalyzer.analyze(message);
+    }
+
+    public void logMetricForCount(String name, int count) {
+        Message message = new Metric(SeecSystem.PAAS.getVal(), "internalMonitor", name,
+                System.currentTimeMillis(), count, MetricType.COUNT.getVal());
+        metricAnalyzer.analyze(message);
+    }
+
+    public void logMetricForDuration(String name, int count) {
+        Message message = new Metric(SeecSystem.PAAS.getVal(), "internalMonitor", name,
+                System.currentTimeMillis(), count, MetricType.DURATION.getVal());
+        metricAnalyzer.analyze(message);
+    }
+
+    private String formatStackTrace(StackTraceElement[] stackTraceElements) {
+        StringBuilder res = new StringBuilder();
+        for (StackTraceElement stackTraceElement : stackTraceElements) {
+            res.append(stackTraceElement.toString()).append("\n");
+        }
+        res.deleteCharAt(res.length() - 1);
+        return res.toString();
+    }
+}

+ 5 - 4
PaasMonitor-server/src/main/java/com/nju/edu/paasMonitorServer/service/impl/MessageServiceImpl.java

@@ -2,9 +2,6 @@ package com.nju.edu.paasMonitorServer.service.impl;
 
 import com.nju.edu.paasMonitorServer.entity.vo.Message;
 import com.nju.edu.paasMonitorServer.entity.vo.item.SystemLevel;
-import com.nju.edu.paasMonitorServer.entity.vo.item.call.CallSystemLevel;
-import com.nju.edu.paasMonitorServer.entity.vo.item.error.ErrorSystemLevel;
-import com.nju.edu.paasMonitorServer.entity.vo.item.event.EventSystemLevel;
 import com.nju.edu.paasMonitorServer.entity.vo.item.metric.MetricGraphVO;
 import com.nju.edu.paasMonitorServer.process.MessageDistributor;
 import com.nju.edu.paasMonitorServer.process.analyzer.CallAnalyzer;
@@ -24,17 +21,20 @@ public class MessageServiceImpl implements MessageService {
     private final ErrorAnalyzer errorAnalyzer;
     private final EventAnalyzer eventAnalyzer;
     private final CallAnalyzer callAnalyzer;
+    private final InternalClient internalClient;
 
     @Autowired
     public MessageServiceImpl(MetricAnalyzer metricAnalyzer,
                               ErrorAnalyzer errorAnalyzer,
                               EventAnalyzer eventAnalyzer,
-                              CallAnalyzer callAnalyzer
+                              CallAnalyzer callAnalyzer,
+                              InternalClient internalClient
     ) {
         this.metricAnalyzer = metricAnalyzer;
         this.errorAnalyzer = errorAnalyzer;
         this.eventAnalyzer = eventAnalyzer;
         this.callAnalyzer = callAnalyzer;
+        this.internalClient = internalClient;
     }
 
     @Override
@@ -43,6 +43,7 @@ public class MessageServiceImpl implements MessageService {
             messageDistributor = MessageDistributor.getInstance();
         }
         messageDistributor.offer(message);
+        internalClient.logMetricForCount("logMessage", 1);
     }
 
     @Override

+ 12 - 2
PaasMonitor-server/src/main/java/com/nju/edu/paasMonitorServer/web/exception/ExceptionHandler.java

@@ -1,7 +1,9 @@
 package com.nju.edu.paasMonitorServer.web.exception;
 
+import com.nju.edu.paasMonitorServer.service.impl.InternalClient;
 import com.nju.edu.paasMonitorServer.web.response.Response;
 import lombok.extern.slf4j.Slf4j;
+import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.dao.DataAccessException;
 import org.springframework.dao.DuplicateKeyException;
 import org.springframework.http.HttpStatus;
@@ -13,9 +15,16 @@ import javax.servlet.http.HttpServletResponse;
 @Slf4j
 @RestControllerAdvice
 public class ExceptionHandler {
+    private final InternalClient internalClient;
+
+    @Autowired
+    public ExceptionHandler(InternalClient internalClient) {
+        this.internalClient = internalClient;
+    }
+
     @org.springframework.web.bind.annotation.ExceptionHandler({DuplicateKeyException.class})
     @ResponseBody
-    public Response<Object> handleDuplicateKey(HttpServletResponse response, Exception e){
+    public Response<Object> handleDuplicateKey(HttpServletResponse response, Exception e) {
         int error = HttpStatus.BAD_REQUEST.value();
         response.setStatus(error);
         Response<Object> response1 = new Response<>();
@@ -25,7 +34,8 @@ public class ExceptionHandler {
 
     @org.springframework.web.bind.annotation.ExceptionHandler({DataAccessException.class})
     @ResponseBody
-    public Response<Object> handle(HttpServletResponse response, Exception e){
+    public Response<Object> handle(HttpServletResponse response, Exception e) {
+        internalClient.logError("dataAccessException", e);
         int error = HttpStatus.INTERNAL_SERVER_ERROR.value();
         response.setStatus(error);
         Response<Object> response1 = new Response<>();

TEMPAT SAMPAH
PaasMonitor-server/target/app.jar


TEMPAT SAMPAH
PaasMonitor-server/target/app.jar.original


TEMPAT SAMPAH
PaasMonitor-server/target/classes/com/nju/edu/paasMonitorServer/process/MessageConsumer.class


TEMPAT SAMPAH
PaasMonitor-server/target/classes/com/nju/edu/paasMonitorServer/service/impl/InternalClient.class


TEMPAT SAMPAH
PaasMonitor-server/target/classes/com/nju/edu/paasMonitorServer/service/impl/MessageServiceImpl.class


TEMPAT SAMPAH
PaasMonitor-server/target/classes/com/nju/edu/paasMonitorServer/web/exception/ExceptionHandler.class


+ 1 - 0
PaasMonitor-server/target/maven-status/maven-compiler-plugin/compile/default-compile/createdFiles.lst

@@ -81,6 +81,7 @@ com\nju\edu\paasMonitorServer\alert\process\sender\alertmessage\AlertMessage.cla
 com\nju\edu\paasMonitorServer\entity\vo\EnumVO.class
 com\nju\edu\paasMonitorServer\util\TimeCalculator.class
 com\nju\edu\paasMonitorServer\entity\vo\report\MetricReportVO.class
+com\nju\edu\paasMonitorServer\service\impl\InternalClient.class
 com\nju\edu\paasMonitorServer\entity\vo\item\event\EventSystemLevel.class
 com\nju\edu\paasMonitorServer\alert\entity\vo\alertreceiver\AddAlertReceiverVO.class
 com\nju\edu\paasMonitorServer\alert\process\checker\SubConditionChecker.class

+ 1 - 0
PaasMonitor-server/target/maven-status/maven-compiler-plugin/compile/default-compile/inputFiles.lst

@@ -30,6 +30,7 @@ D:\SEEC\PaasMonitor\PaasMonitor-server\src\main\java\com\nju\edu\paasMonitorServ
 D:\SEEC\PaasMonitor\PaasMonitor-server\src\main\java\com\nju\edu\paasMonitorServer\alert\process\sender\alertmessage\AlertMessage.java
 D:\SEEC\PaasMonitor\PaasMonitor-server\src\main\java\com\nju\edu\paasMonitorServer\dao\CallDao.java
 D:\SEEC\PaasMonitor\PaasMonitor-server\src\main\java\com\nju\edu\paasMonitorServer\process\MessageConvertor.java
+D:\SEEC\PaasMonitor\PaasMonitor-server\src\main\java\com\nju\edu\paasMonitorServer\service\impl\InternalClient.java
 D:\SEEC\PaasMonitor\PaasMonitor-server\src\main\java\com\nju\edu\paasMonitorServer\entity\vo\item\CategoryLevel.java
 D:\SEEC\PaasMonitor\PaasMonitor-server\src\main\java\com\nju\edu\paasMonitorServer\entity\vo\item\event\EventItem.java
 D:\SEEC\PaasMonitor\PaasMonitor-server\src\main\java\com\nju\edu\paasMonitorServer\dao\EventDao.java