|
|
@@ -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();
|
|
|
+ }
|
|
|
+}
|