org.springframework.boot
diff --git a/pigx-visual/pigx-monitor/src/main/java/com/pig4cloud/pigx/monitor/config/DruidMonitorConfigurer.java b/pigx-visual/pigx-monitor/src/main/java/com/pig4cloud/pigx/monitor/config/DruidMonitorConfigurer.java
new file mode 100644
index 000000000..c230693cb
--- /dev/null
+++ b/pigx-visual/pigx-monitor/src/main/java/com/pig4cloud/pigx/monitor/config/DruidMonitorConfigurer.java
@@ -0,0 +1,41 @@
+package com.pig4cloud.pigx.monitor.config;
+
+import com.pig4cloud.pigx.monitor.support.MonitorViewServlet;
+import lombok.Data;
+import org.springframework.boot.context.properties.ConfigurationProperties;
+import org.springframework.boot.web.servlet.ServletRegistrationBean;
+import org.springframework.context.annotation.Bean;
+import org.springframework.context.annotation.Configuration;
+import org.springframework.stereotype.Component;
+
+import java.util.List;
+
+/**
+ * @author lengleng
+ * @date 2020/10/19
+ *
+ * druid 监控配置类
+ */
+@Configuration
+public class DruidMonitorConfigurer {
+
+ @Bean
+ public ServletRegistrationBean statViewServletRegistrationBean() {
+ ServletRegistrationBean registrationBean = new ServletRegistrationBean();
+ registrationBean.setServlet(new MonitorViewServlet());
+ registrationBean.addUrlMappings("/druid/*");
+ return registrationBean;
+ }
+
+
+ @Data
+ @Component
+ @ConfigurationProperties(prefix = "monitor")
+ public class MonitorProperties {
+
+ /**
+ * 需要监控的服务
+ */
+ private List applications;
+ }
+}
diff --git a/pigx-visual/pigx-monitor/src/main/java/com/pig4cloud/pigx/monitor/controller/DruidController.java b/pigx-visual/pigx-monitor/src/main/java/com/pig4cloud/pigx/monitor/controller/DruidController.java
new file mode 100644
index 000000000..9fdf56972
--- /dev/null
+++ b/pigx-visual/pigx-monitor/src/main/java/com/pig4cloud/pigx/monitor/controller/DruidController.java
@@ -0,0 +1,10 @@
+package com.pig4cloud.pigx.monitor.controller;
+
+/**
+ * @author lengleng
+ * @date 2020/10/19
+ *
+ * druid 监控控制器
+ */
+public class DruidController {
+}
diff --git a/pigx-visual/pigx-monitor/src/main/java/com/pig4cloud/pigx/monitor/model/ServiceNode.java b/pigx-visual/pigx-monitor/src/main/java/com/pig4cloud/pigx/monitor/model/ServiceNode.java
new file mode 100755
index 000000000..dab2444f7
--- /dev/null
+++ b/pigx-visual/pigx-monitor/src/main/java/com/pig4cloud/pigx/monitor/model/ServiceNode.java
@@ -0,0 +1,20 @@
+package com.pig4cloud.pigx.monitor.model;
+
+import lombok.Data;
+
+/**
+ * @author linchtech
+ * @date 2020-09-16 14:08
+ **/
+@Data
+public class ServiceNode {
+
+ private String id;
+
+ private Integer port;
+
+ private String address;
+
+ private String serviceName;
+
+}
diff --git a/pigx-visual/pigx-monitor/src/main/java/com/pig4cloud/pigx/monitor/model/dto/ConnectionResult.java b/pigx-visual/pigx-monitor/src/main/java/com/pig4cloud/pigx/monitor/model/dto/ConnectionResult.java
new file mode 100755
index 000000000..c499f37e4
--- /dev/null
+++ b/pigx-visual/pigx-monitor/src/main/java/com/pig4cloud/pigx/monitor/model/dto/ConnectionResult.java
@@ -0,0 +1,50 @@
+package com.pig4cloud.pigx.monitor.model.dto;
+
+import com.alibaba.fastjson.annotation.JSONField;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+import java.util.List;
+
+/**
+ * @author linchtech
+ * @date 2020-09-21 9:26
+ **/
+
+@NoArgsConstructor
+@Data
+public class ConnectionResult {
+
+ @JSONField(name = "ResultCode")
+ private int ResultCode;
+ @JSONField(name = "Content")
+ private List Content;
+
+ @NoArgsConstructor
+ @Data
+ public static class ContentBean {
+
+ @JSONField(name = "id")
+ private int id;
+ @JSONField(name = "connectionId")
+ private int connectionId;
+ @JSONField(name = "useCount")
+ private int useCount;
+ @JSONField(name = "lastActiveTime")
+ private String lastActiveTime;
+ @JSONField(name = "connectTime")
+ private String connectTime;
+ @JSONField(name = "holdability")
+ private int holdability;
+ @JSONField(name = "transactionIsolation")
+ private int transactionIsolation;
+ @JSONField(name = "autoCommit")
+ private boolean autoCommit;
+ @JSONField(name = "readoOnly")
+ private boolean readoOnly;
+ @JSONField(name = "keepAliveCheckCount")
+ private int keepAliveCheckCount;
+ @JSONField(name = "pscache")
+ private List> pscache;
+ }
+}
diff --git a/pigx-visual/pigx-monitor/src/main/java/com/pig4cloud/pigx/monitor/model/dto/DataSourceResult.java b/pigx-visual/pigx-monitor/src/main/java/com/pig4cloud/pigx/monitor/model/dto/DataSourceResult.java
new file mode 100755
index 000000000..a73d794c2
--- /dev/null
+++ b/pigx-visual/pigx-monitor/src/main/java/com/pig4cloud/pigx/monitor/model/dto/DataSourceResult.java
@@ -0,0 +1,165 @@
+package com.pig4cloud.pigx.monitor.model.dto;
+
+import com.alibaba.fastjson.annotation.JSONField;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+import java.util.List;
+
+/**
+ * @author linchtech
+ * @date 2020-09-16 18:32
+ **/
+@Data
+@NoArgsConstructor
+public class DataSourceResult {
+
+ @JSONField(name = "ResultCode")
+ private int ResultCode;
+ @JSONField(name = "Content")
+ private List Content;
+
+ @NoArgsConstructor
+ @Data
+ public static class ContentBean {
+
+ private String serviceId;
+
+ @JSONField(name = "Identity")
+ private int Identity;
+ @JSONField(name = "Name")
+ private String Name;
+ @JSONField(name = "DbType")
+ private String DbType;
+ @JSONField(name = "DriverClassName")
+ private String DriverClassName;
+ @JSONField(name = "URL")
+ private String URL;
+ @JSONField(name = "UserName")
+ private String UserName;
+ @JSONField(name = "WaitThreadCount")
+ private int WaitThreadCount;
+ @JSONField(name = "NotEmptyWaitCount")
+ private int NotEmptyWaitCount;
+ @JSONField(name = "NotEmptyWaitMillis")
+ private int NotEmptyWaitMillis;
+ @JSONField(name = "PoolingCount")
+ private int PoolingCount;
+ @JSONField(name = "PoolingPeak")
+ private int PoolingPeak;
+ @JSONField(name = "PoolingPeakTime")
+ private String PoolingPeakTime;
+ @JSONField(name = "ActiveCount")
+ private int ActiveCount;
+ @JSONField(name = "ActivePeak")
+ private int ActivePeak;
+ @JSONField(name = "ActivePeakTime")
+ private String ActivePeakTime;
+ @JSONField(name = "InitialSize")
+ private int InitialSize;
+ @JSONField(name = "MinIdle")
+ private int MinIdle;
+ @JSONField(name = "MaxActive")
+ private int MaxActive;
+ @JSONField(name = "QueryTimeout")
+ private int QueryTimeout;
+ @JSONField(name = "TransactionQueryTimeout")
+ private int TransactionQueryTimeout;
+ @JSONField(name = "LoginTimeout")
+ private int LoginTimeout;
+ @JSONField(name = "ValidConnectionCheckerClassName")
+ private String ValidConnectionCheckerClassName;
+ @JSONField(name = "ExceptionSorterClassName")
+ private String ExceptionSorterClassName;
+ @JSONField(name = "TestOnBorrow")
+ private boolean TestOnBorrow;
+ @JSONField(name = "TestOnReturn")
+ private boolean TestOnReturn;
+ @JSONField(name = "TestWhileIdle")
+ private boolean TestWhileIdle;
+ @JSONField(name = "DefaultAutoCommit")
+ private boolean DefaultAutoCommit;
+ @JSONField(name = "DefaultReadOnly")
+ private Object DefaultReadOnly;
+ @JSONField(name = "DefaultTransactionIsolation")
+ private Object DefaultTransactionIsolation;
+ @JSONField(name = "LogicConnectCount")
+ private int LogicConnectCount;
+ @JSONField(name = "LogicCloseCount")
+ private int LogicCloseCount;
+ @JSONField(name = "LogicConnectErrorCount")
+ private int LogicConnectErrorCount;
+ @JSONField(name = "PhysicalConnectCount")
+ private int PhysicalConnectCount;
+ @JSONField(name = "PhysicalCloseCount")
+ private int PhysicalCloseCount;
+ @JSONField(name = "PhysicalConnectErrorCount")
+ private int PhysicalConnectErrorCount;
+ @JSONField(name = "ExecuteCount")
+ private int ExecuteCount;
+ @JSONField(name = "ExecuteUpdateCount")
+ private int ExecuteUpdateCount;
+ @JSONField(name = "ExecuteQueryCount")
+ private int ExecuteQueryCount;
+ @JSONField(name = "ExecuteBatchCount")
+ private int ExecuteBatchCount;
+ @JSONField(name = "ErrorCount")
+ private int ErrorCount;
+ @JSONField(name = "CommitCount")
+ private int CommitCount;
+ @JSONField(name = "RollbackCount")
+ private int RollbackCount;
+ @JSONField(name = "PSCacheAccessCount")
+ private int PSCacheAccessCount;
+ @JSONField(name = "PSCacheHitCount")
+ private int PSCacheHitCount;
+ @JSONField(name = "PSCacheMissCount")
+ private int PSCacheMissCount;
+ @JSONField(name = "StartTransactionCount")
+ private int StartTransactionCount;
+ @JSONField(name = "RemoveAbandoned")
+ private boolean RemoveAbandoned;
+ @JSONField(name = "ClobOpenCount")
+ private int ClobOpenCount;
+ @JSONField(name = "BlobOpenCount")
+ private int BlobOpenCount;
+ @JSONField(name = "KeepAliveCheckCount")
+ private int KeepAliveCheckCount;
+ @JSONField(name = "KeepAlive")
+ private boolean KeepAlive;
+ @JSONField(name = "FailFast")
+ private boolean FailFast;
+ @JSONField(name = "MaxWait")
+ private int MaxWait;
+ @JSONField(name = "MaxWaitThreadCount")
+ private int MaxWaitThreadCount;
+ @JSONField(name = "PoolPreparedStatements")
+ private boolean PoolPreparedStatements;
+ @JSONField(name = "MaxPoolPreparedStatementPerConnectionSize")
+ private int MaxPoolPreparedStatementPerConnectionSize;
+ @JSONField(name = "MinEvictableIdleTimeMillis")
+ private int MinEvictableIdleTimeMillis;
+ @JSONField(name = "MaxEvictableIdleTimeMillis")
+ private int MaxEvictableIdleTimeMillis;
+ @JSONField(name = "LogDifferentThread")
+ private boolean LogDifferentThread;
+ @JSONField(name = "RecycleErrorCount")
+ private int RecycleErrorCount;
+ @JSONField(name = "PreparedStatementOpenCount")
+ private int PreparedStatementOpenCount;
+ @JSONField(name = "PreparedStatementClosedCount")
+ private int PreparedStatementClosedCount;
+ @JSONField(name = "UseUnfairLock")
+ private boolean UseUnfairLock;
+ @JSONField(name = "InitGlobalVariants")
+ private boolean InitGlobalVariants;
+ @JSONField(name = "InitVariants")
+ private boolean InitVariants;
+ @JSONField(name = "FilterClassNames")
+ private List FilterClassNames;
+ @JSONField(name = "TransactionHistogram")
+ private List TransactionHistogram;
+ @JSONField(name = "ConnectionHoldTimeHistogram")
+ private List ConnectionHoldTimeHistogram;
+ }
+}
diff --git a/pigx-visual/pigx-monitor/src/main/java/com/pig4cloud/pigx/monitor/model/dto/SqlDetailResult.java b/pigx-visual/pigx-monitor/src/main/java/com/pig4cloud/pigx/monitor/model/dto/SqlDetailResult.java
new file mode 100755
index 000000000..3b85c4a25
--- /dev/null
+++ b/pigx-visual/pigx-monitor/src/main/java/com/pig4cloud/pigx/monitor/model/dto/SqlDetailResult.java
@@ -0,0 +1,120 @@
+package com.pig4cloud.pigx.monitor.model.dto;
+
+import com.alibaba.fastjson.annotation.JSONField;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+import java.util.List;
+
+/**
+ * @author linchtech
+ * @date 2020-09-16 16:18
+ **/
+@NoArgsConstructor
+@Data
+public class SqlDetailResult {
+
+ @JSONField(name = "ResultCode")
+ private int ResultCode;
+ @JSONField(name = "Content")
+ private ContentBean Content;
+
+ @NoArgsConstructor
+ @Data
+ public static class ContentBean {
+ @JSONField(name = "ExecuteAndResultSetHoldTime")
+ private int ExecuteAndResultSetHoldTime;
+ @JSONField(name = "LastErrorMessage")
+ private Object LastErrorMessage;
+ @JSONField(name = "InputStreamOpenCount")
+ private int InputStreamOpenCount;
+ @JSONField(name = "BatchSizeTotal")
+ private int BatchSizeTotal;
+ @JSONField(name = "FetchRowCountMax")
+ private int FetchRowCountMax;
+ @JSONField(name = "ErrorCount")
+ private int ErrorCount;
+ @JSONField(name = "BatchSizeMax")
+ private int BatchSizeMax;
+ @JSONField(name = "URL")
+ private Object URL;
+ @JSONField(name = "Name")
+ private Object Name;
+ @JSONField(name = "LastErrorTime")
+ private Object LastErrorTime;
+ @JSONField(name = "ReaderOpenCount")
+ private int ReaderOpenCount;
+ @JSONField(name = "parsedRelationships")
+ private String parsedRelationships;
+ @JSONField(name = "EffectedRowCountMax")
+ private int EffectedRowCountMax;
+ @JSONField(name = "LastErrorClass")
+ private Object LastErrorClass;
+ @JSONField(name = "InTransactionCount")
+ private int InTransactionCount;
+ @JSONField(name = "LastErrorStackTrace")
+ private Object LastErrorStackTrace;
+ @JSONField(name = "ResultSetHoldTime")
+ private int ResultSetHoldTime;
+ @JSONField(name = "TotalTime")
+ private int TotalTime;
+ @JSONField(name = "ID")
+ private int ID;
+ @JSONField(name = "ConcurrentMax")
+ private int ConcurrentMax;
+ @JSONField(name = "RunningCount")
+ private int RunningCount;
+ @JSONField(name = "FetchRowCount")
+ private int FetchRowCount;
+ @JSONField(name = "parsedFields")
+ private String parsedFields;
+ @JSONField(name = "MaxTimespanOccurTime")
+ private String MaxTimespanOccurTime;
+ @JSONField(name = "LastSlowParameters")
+ private Object LastSlowParameters;
+ @JSONField(name = "ReadBytesLength")
+ private int ReadBytesLength;
+ @JSONField(name = "formattedSql")
+ private String formattedSql;
+ @JSONField(name = "DbType")
+ private String DbType;
+ @JSONField(name = "DataSource")
+ private Object DataSource;
+ @JSONField(name = "SQL")
+ private String SQL;
+ @JSONField(name = "HASH")
+ private long HASH;
+ @JSONField(name = "LastError")
+ private Object LastError;
+ @JSONField(name = "MaxTimespan")
+ private int MaxTimespan;
+ @JSONField(name = "parsedTable")
+ private String parsedTable;
+ @JSONField(name = "parsedOrderbycolumns")
+ private String parsedOrderbycolumns;
+ @JSONField(name = "BlobOpenCount")
+ private int BlobOpenCount;
+ @JSONField(name = "ExecuteCount")
+ private int ExecuteCount;
+ @JSONField(name = "EffectedRowCount")
+ private int EffectedRowCount;
+ @JSONField(name = "ReadStringLength")
+ private int ReadStringLength;
+ @JSONField(name = "File")
+ private Object File;
+ @JSONField(name = "ClobOpenCount")
+ private int ClobOpenCount;
+ @JSONField(name = "LastTime")
+ private String LastTime;
+ @JSONField(name = "parsedConditions")
+ private String parsedConditions;
+ @JSONField(name = "EffectedRowCountHistogram")
+ private List EffectedRowCountHistogram;
+ @JSONField(name = "Histogram")
+ private List Histogram;
+ @JSONField(name = "ExecuteAndResultHoldTimeHistogram")
+ private List ExecuteAndResultHoldTimeHistogram;
+ @JSONField(name = "FetchRowCountHistogram")
+ private List FetchRowCountHistogram;
+ }
+}
diff --git a/pigx-visual/pigx-monitor/src/main/java/com/pig4cloud/pigx/monitor/model/dto/SqlListResult.java b/pigx-visual/pigx-monitor/src/main/java/com/pig4cloud/pigx/monitor/model/dto/SqlListResult.java
new file mode 100755
index 000000000..26070df7e
--- /dev/null
+++ b/pigx-visual/pigx-monitor/src/main/java/com/pig4cloud/pigx/monitor/model/dto/SqlListResult.java
@@ -0,0 +1,114 @@
+package com.pig4cloud.pigx.monitor.model.dto;
+
+import com.alibaba.fastjson.annotation.JSONField;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+import java.util.List;
+
+/**
+ * @author linchtech
+ * @date 2020-09-16 14:37
+ **/
+@NoArgsConstructor
+@Data
+public class SqlListResult {
+
+ @JSONField(name = "ResultCode")
+ private int ResultCode;
+ @JSONField(name = "Content")
+ private List Content;
+
+ @NoArgsConstructor
+ @Data
+ public static class ContentBean {
+
+ private String serviceId;
+ private String address;
+
+ private Integer port;
+
+ @JSONField(name = "ExecuteAndResultSetHoldTime")
+ private int ExecuteAndResultSetHoldTime;
+ @JSONField(name = "LastErrorMessage")
+ private Object LastErrorMessage;
+ @JSONField(name = "InputStreamOpenCount")
+ private int InputStreamOpenCount;
+ @JSONField(name = "BatchSizeTotal")
+ private int BatchSizeTotal;
+ @JSONField(name = "FetchRowCountMax")
+ private int FetchRowCountMax;
+ @JSONField(name = "ErrorCount")
+ private int ErrorCount;
+ @JSONField(name = "BatchSizeMax")
+ private int BatchSizeMax;
+ @JSONField(name = "URL")
+ private Object URL;
+ @JSONField(name = "Name")
+ private Object Name;
+ @JSONField(name = "LastErrorTime")
+ private Object LastErrorTime;
+ @JSONField(name = "ReaderOpenCount")
+ private int ReaderOpenCount;
+ @JSONField(name = "EffectedRowCountMax")
+ private int EffectedRowCountMax;
+ @JSONField(name = "LastErrorClass")
+ private Object LastErrorClass;
+ @JSONField(name = "InTransactionCount")
+ private int InTransactionCount;
+ @JSONField(name = "LastErrorStackTrace")
+ private Object LastErrorStackTrace;
+ @JSONField(name = "ResultSetHoldTime")
+ private int ResultSetHoldTime;
+ @JSONField(name = "TotalTime")
+ private int TotalTime;
+ @JSONField(name = "ID")
+ private int ID;
+ @JSONField(name = "ConcurrentMax")
+ private int ConcurrentMax;
+ @JSONField(name = "RunningCount")
+ private int RunningCount;
+ @JSONField(name = "FetchRowCount")
+ private int FetchRowCount;
+ @JSONField(name = "MaxTimespanOccurTime")
+ private String MaxTimespanOccurTime;
+ @JSONField(name = "LastSlowParameters")
+ private Object LastSlowParameters;
+ @JSONField(name = "ReadBytesLength")
+ private int ReadBytesLength;
+ @JSONField(name = "DbType")
+ private String DbType;
+ @JSONField(name = "DataSource")
+ private Object DataSource;
+ @JSONField(name = "SQL")
+ private String SQL;
+ @JSONField(name = "HASH")
+ private long HASH;
+ @JSONField(name = "LastError")
+ private Object LastError;
+ @JSONField(name = "MaxTimespan")
+ private int MaxTimespan;
+ @JSONField(name = "BlobOpenCount")
+ private int BlobOpenCount;
+ @JSONField(name = "ExecuteCount")
+ private int ExecuteCount;
+ @JSONField(name = "EffectedRowCount")
+ private int EffectedRowCount;
+ @JSONField(name = "ReadStringLength")
+ private int ReadStringLength;
+ @JSONField(name = "File")
+ private Object File;
+ @JSONField(name = "ClobOpenCount")
+ private int ClobOpenCount;
+ @JSONField(name = "LastTime")
+ private String LastTime;
+ @JSONField(name = "EffectedRowCountHistogram")
+ private List EffectedRowCountHistogram;
+ @JSONField(name = "Histogram")
+ private List Histogram;
+ @JSONField(name = "ExecuteAndResultHoldTimeHistogram")
+ private List ExecuteAndResultHoldTimeHistogram;
+ @JSONField(name = "FetchRowCountHistogram")
+ private List FetchRowCountHistogram;
+ }
+}
diff --git a/pigx-visual/pigx-monitor/src/main/java/com/pig4cloud/pigx/monitor/model/dto/WallResult.java b/pigx-visual/pigx-monitor/src/main/java/com/pig4cloud/pigx/monitor/model/dto/WallResult.java
new file mode 100755
index 000000000..5189b5a3f
--- /dev/null
+++ b/pigx-visual/pigx-monitor/src/main/java/com/pig4cloud/pigx/monitor/model/dto/WallResult.java
@@ -0,0 +1,119 @@
+package com.pig4cloud.pigx.monitor.model.dto;
+
+import com.alibaba.fastjson.annotation.JSONField;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+import java.util.ArrayList;
+import java.util.Collections;
+import java.util.List;
+
+/**
+ * @author linchtech
+ * @date 2020-09-17 18:18
+ **/
+@Data
+@NoArgsConstructor
+public class WallResult {
+
+ @JSONField(name = "ResultCode")
+ private int ResultCode;
+ @JSONField(name = "Content")
+ private ContentBean Content = new ContentBean();
+
+ @NoArgsConstructor
+ @Data
+ public static class ContentBean {
+ @JSONField(name = "checkCount")
+ private int checkCount;
+ @JSONField(name = "hardCheckCount")
+ private int hardCheckCount;
+ @JSONField(name = "violationCount")
+ private int violationCount;
+ @JSONField(name = "violationEffectRowCount")
+ private int violationEffectRowCount;
+ @JSONField(name = "blackListHitCount")
+ private int blackListHitCount;
+ @JSONField(name = "blackListSize")
+ private int blackListSize;
+ @JSONField(name = "whiteListHitCount")
+ private int whiteListHitCount;
+ @JSONField(name = "whiteListSize")
+ private int whiteListSize;
+ @JSONField(name = "syntaxErrorCount")
+ private int syntaxErrorCount;
+ @JSONField(name = "tables")
+ private List tables = new ArrayList<>();
+ @JSONField(name = "functions")
+ private List functions = new ArrayList<>();
+ @JSONField(name = "blackList")
+ private List