mirror of
http://git.pig4cloud.com/pig/pigx.git
synced 2026-11-08 04:39:00 +08:00
refactor(pigx-monitor): 移除 fastjson 依赖,改用 hutool-json 处理 JSON 序列化与反序列化
This commit is contained in:
1 parent
7461394f99
commit
6248d60e62
8 files changed
+379
-299
No files matched your search
@@ -73,8 +73,8 @@
|
||||
</dependency>
|
||||
<!--monitor json 操作-->
|
||||
<dependency>
|
||||
<groupId>com.alibaba</groupId>
|
||||
<artifactId>fastjson</artifactId>
|
||||
<groupId>cn.hutool</groupId>
|
||||
<artifactId>hutool-json</artifactId>
|
||||
</dependency>
|
||||
</dependencies>
|
||||
|
||||
|
||||
+21
-14
@@ -1,61 +1,68 @@
|
||||
package com.pig4cloud.pigx.monitor.model.dto;
|
||||
|
||||
import com.alibaba.fastjson.annotation.JSONField;
|
||||
import io.swagger.v3.oas.annotations.media.Schema;
|
||||
import lombok.Data;
|
||||
import lombok.NoArgsConstructor;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* Druid 数据源活跃连接响应。
|
||||
* <p>
|
||||
* JSON 字段名与 Druid 监控接口保持一致。
|
||||
*
|
||||
* @author linchtech
|
||||
* @date 2020-09-21 9:26
|
||||
**/
|
||||
|
||||
@NoArgsConstructor
|
||||
@Data
|
||||
@Schema(description = "Druid 数据源活跃连接响应")
|
||||
public class ConnectionResult {
|
||||
|
||||
@JSONField(name = "ResultCode")
|
||||
@Schema(description = "Druid 原始字段:ResultCode")
|
||||
private int ResultCode;
|
||||
|
||||
@JSONField(name = "Content")
|
||||
@Schema(description = "Druid 原始字段:Content")
|
||||
private List<ContentBean> Content;
|
||||
|
||||
/** Druid 数据源活跃连接明细。 */
|
||||
@NoArgsConstructor
|
||||
@Data
|
||||
@Schema(description = "Druid 数据源活跃连接明细")
|
||||
public static class ContentBean {
|
||||
|
||||
@JSONField(name = "id")
|
||||
@Schema(description = "Druid 原始字段:id")
|
||||
private int id;
|
||||
|
||||
@JSONField(name = "connectionId")
|
||||
@Schema(description = "Druid 原始字段:connectionId")
|
||||
private int connectionId;
|
||||
|
||||
@JSONField(name = "useCount")
|
||||
@Schema(description = "Druid 原始字段:useCount")
|
||||
private int useCount;
|
||||
|
||||
@JSONField(name = "lastActiveTime")
|
||||
@Schema(description = "Druid 原始字段:lastActiveTime")
|
||||
private String lastActiveTime;
|
||||
|
||||
@JSONField(name = "connectTime")
|
||||
@Schema(description = "Druid 原始字段:connectTime")
|
||||
private String connectTime;
|
||||
|
||||
@JSONField(name = "holdability")
|
||||
@Schema(description = "Druid 原始字段:holdability")
|
||||
private int holdability;
|
||||
|
||||
@JSONField(name = "transactionIsolation")
|
||||
@Schema(description = "Druid 原始字段:transactionIsolation")
|
||||
private int transactionIsolation;
|
||||
|
||||
@JSONField(name = "autoCommit")
|
||||
@Schema(description = "Druid 原始字段:autoCommit")
|
||||
private boolean autoCommit;
|
||||
|
||||
@JSONField(name = "readoOnly")
|
||||
@Schema(description = "Druid 原始字段:readoOnly")
|
||||
private boolean readoOnly;
|
||||
|
||||
@JSONField(name = "keepAliveCheckCount")
|
||||
@Schema(description = "Druid 原始字段:keepAliveCheckCount")
|
||||
private int keepAliveCheckCount;
|
||||
|
||||
@JSONField(name = "pscache")
|
||||
@Schema(description = "Druid 原始字段:pscache")
|
||||
private List<?> pscache;
|
||||
|
||||
}
|
||||
|
||||
+79
-71
@@ -1,233 +1,241 @@
|
||||
package com.pig4cloud.pigx.monitor.model.dto;
|
||||
|
||||
import com.alibaba.fastjson.annotation.JSONField;
|
||||
import io.swagger.v3.oas.annotations.media.Schema;
|
||||
import lombok.Data;
|
||||
import lombok.NoArgsConstructor;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* Druid 数据源统计响应。
|
||||
* <p>
|
||||
* JSON 字段名与 Druid 监控接口保持一致。
|
||||
*
|
||||
* @author linchtech
|
||||
* @date 2020-09-16 18:32
|
||||
**/
|
||||
@Data
|
||||
@NoArgsConstructor
|
||||
@Schema(description = "Druid 数据源统计响应")
|
||||
public class DataSourceResult {
|
||||
|
||||
@JSONField(name = "ResultCode")
|
||||
@Schema(description = "Druid 原始字段:ResultCode")
|
||||
private int ResultCode;
|
||||
|
||||
@JSONField(name = "Content")
|
||||
@Schema(description = "Druid 原始字段:Content")
|
||||
private List<ContentBean> Content;
|
||||
|
||||
/** Druid 数据源统计明细。 */
|
||||
@NoArgsConstructor
|
||||
@Data
|
||||
@Schema(description = "Druid 数据源统计明细")
|
||||
public static class ContentBean {
|
||||
|
||||
@Schema(description = "服务实例 ID")
|
||||
private String serviceId;
|
||||
|
||||
@JSONField(name = "Identity")
|
||||
@Schema(description = "Druid 原始字段:Identity")
|
||||
private int Identity;
|
||||
|
||||
@JSONField(name = "Name")
|
||||
@Schema(description = "Druid 原始字段:Name")
|
||||
private String Name;
|
||||
|
||||
@JSONField(name = "DbType")
|
||||
@Schema(description = "Druid 原始字段:DbType")
|
||||
private String DbType;
|
||||
|
||||
@JSONField(name = "DriverClassName")
|
||||
@Schema(description = "Druid 原始字段:DriverClassName")
|
||||
private String DriverClassName;
|
||||
|
||||
@JSONField(name = "URL")
|
||||
@Schema(description = "Druid 原始字段:URL")
|
||||
private String URL;
|
||||
|
||||
@JSONField(name = "UserName")
|
||||
@Schema(description = "Druid 原始字段:UserName")
|
||||
private String UserName;
|
||||
|
||||
@JSONField(name = "WaitThreadCount")
|
||||
@Schema(description = "Druid 原始字段:WaitThreadCount")
|
||||
private int WaitThreadCount;
|
||||
|
||||
@JSONField(name = "NotEmptyWaitCount")
|
||||
@Schema(description = "Druid 原始字段:NotEmptyWaitCount")
|
||||
private int NotEmptyWaitCount;
|
||||
|
||||
@JSONField(name = "NotEmptyWaitMillis")
|
||||
@Schema(description = "Druid 原始字段:NotEmptyWaitMillis")
|
||||
private int NotEmptyWaitMillis;
|
||||
|
||||
@JSONField(name = "PoolingCount")
|
||||
@Schema(description = "Druid 原始字段:PoolingCount")
|
||||
private int PoolingCount;
|
||||
|
||||
@JSONField(name = "PoolingPeak")
|
||||
@Schema(description = "Druid 原始字段:PoolingPeak")
|
||||
private int PoolingPeak;
|
||||
|
||||
@JSONField(name = "PoolingPeakTime")
|
||||
@Schema(description = "Druid 原始字段:PoolingPeakTime")
|
||||
private String PoolingPeakTime;
|
||||
|
||||
@JSONField(name = "ActiveCount")
|
||||
@Schema(description = "Druid 原始字段:ActiveCount")
|
||||
private int ActiveCount;
|
||||
|
||||
@JSONField(name = "ActivePeak")
|
||||
@Schema(description = "Druid 原始字段:ActivePeak")
|
||||
private int ActivePeak;
|
||||
|
||||
@JSONField(name = "ActivePeakTime")
|
||||
@Schema(description = "Druid 原始字段:ActivePeakTime")
|
||||
private String ActivePeakTime;
|
||||
|
||||
@JSONField(name = "InitialSize")
|
||||
@Schema(description = "Druid 原始字段:InitialSize")
|
||||
private int InitialSize;
|
||||
|
||||
@JSONField(name = "MinIdle")
|
||||
@Schema(description = "Druid 原始字段:MinIdle")
|
||||
private int MinIdle;
|
||||
|
||||
@JSONField(name = "MaxActive")
|
||||
@Schema(description = "Druid 原始字段:MaxActive")
|
||||
private int MaxActive;
|
||||
|
||||
@JSONField(name = "QueryTimeout")
|
||||
@Schema(description = "Druid 原始字段:QueryTimeout")
|
||||
private int QueryTimeout;
|
||||
|
||||
@JSONField(name = "TransactionQueryTimeout")
|
||||
@Schema(description = "Druid 原始字段:TransactionQueryTimeout")
|
||||
private int TransactionQueryTimeout;
|
||||
|
||||
@JSONField(name = "LoginTimeout")
|
||||
@Schema(description = "Druid 原始字段:LoginTimeout")
|
||||
private int LoginTimeout;
|
||||
|
||||
@JSONField(name = "ValidConnectionCheckerClassName")
|
||||
@Schema(description = "Druid 原始字段:ValidConnectionCheckerClassName")
|
||||
private String ValidConnectionCheckerClassName;
|
||||
|
||||
@JSONField(name = "ExceptionSorterClassName")
|
||||
@Schema(description = "Druid 原始字段:ExceptionSorterClassName")
|
||||
private String ExceptionSorterClassName;
|
||||
|
||||
@JSONField(name = "TestOnBorrow")
|
||||
@Schema(description = "Druid 原始字段:TestOnBorrow")
|
||||
private boolean TestOnBorrow;
|
||||
|
||||
@JSONField(name = "TestOnReturn")
|
||||
@Schema(description = "Druid 原始字段:TestOnReturn")
|
||||
private boolean TestOnReturn;
|
||||
|
||||
@JSONField(name = "TestWhileIdle")
|
||||
@Schema(description = "Druid 原始字段:TestWhileIdle")
|
||||
private boolean TestWhileIdle;
|
||||
|
||||
@JSONField(name = "DefaultAutoCommit")
|
||||
@Schema(description = "Druid 原始字段:DefaultAutoCommit")
|
||||
private boolean DefaultAutoCommit;
|
||||
|
||||
@JSONField(name = "DefaultReadOnly")
|
||||
@Schema(description = "Druid 原始字段:DefaultReadOnly")
|
||||
private Object DefaultReadOnly;
|
||||
|
||||
@JSONField(name = "DefaultTransactionIsolation")
|
||||
@Schema(description = "Druid 原始字段:DefaultTransactionIsolation")
|
||||
private Object DefaultTransactionIsolation;
|
||||
|
||||
@JSONField(name = "LogicConnectCount")
|
||||
@Schema(description = "Druid 原始字段:LogicConnectCount")
|
||||
private int LogicConnectCount;
|
||||
|
||||
@JSONField(name = "LogicCloseCount")
|
||||
@Schema(description = "Druid 原始字段:LogicCloseCount")
|
||||
private int LogicCloseCount;
|
||||
|
||||
@JSONField(name = "LogicConnectErrorCount")
|
||||
@Schema(description = "Druid 原始字段:LogicConnectErrorCount")
|
||||
private int LogicConnectErrorCount;
|
||||
|
||||
@JSONField(name = "PhysicalConnectCount")
|
||||
@Schema(description = "Druid 原始字段:PhysicalConnectCount")
|
||||
private int PhysicalConnectCount;
|
||||
|
||||
@JSONField(name = "PhysicalCloseCount")
|
||||
@Schema(description = "Druid 原始字段:PhysicalCloseCount")
|
||||
private int PhysicalCloseCount;
|
||||
|
||||
@JSONField(name = "PhysicalConnectErrorCount")
|
||||
@Schema(description = "Druid 原始字段:PhysicalConnectErrorCount")
|
||||
private int PhysicalConnectErrorCount;
|
||||
|
||||
@JSONField(name = "ExecuteCount")
|
||||
@Schema(description = "Druid 原始字段:ExecuteCount")
|
||||
private int ExecuteCount;
|
||||
|
||||
@JSONField(name = "ExecuteUpdateCount")
|
||||
@Schema(description = "Druid 原始字段:ExecuteUpdateCount")
|
||||
private int ExecuteUpdateCount;
|
||||
|
||||
@JSONField(name = "ExecuteQueryCount")
|
||||
@Schema(description = "Druid 原始字段:ExecuteQueryCount")
|
||||
private int ExecuteQueryCount;
|
||||
|
||||
@JSONField(name = "ExecuteBatchCount")
|
||||
@Schema(description = "Druid 原始字段:ExecuteBatchCount")
|
||||
private int ExecuteBatchCount;
|
||||
|
||||
@JSONField(name = "ErrorCount")
|
||||
@Schema(description = "Druid 原始字段:ErrorCount")
|
||||
private int ErrorCount;
|
||||
|
||||
@JSONField(name = "CommitCount")
|
||||
@Schema(description = "Druid 原始字段:CommitCount")
|
||||
private int CommitCount;
|
||||
|
||||
@JSONField(name = "RollbackCount")
|
||||
@Schema(description = "Druid 原始字段:RollbackCount")
|
||||
private int RollbackCount;
|
||||
|
||||
@JSONField(name = "PSCacheAccessCount")
|
||||
@Schema(description = "Druid 原始字段:PSCacheAccessCount")
|
||||
private int PSCacheAccessCount;
|
||||
|
||||
@JSONField(name = "PSCacheHitCount")
|
||||
@Schema(description = "Druid 原始字段:PSCacheHitCount")
|
||||
private int PSCacheHitCount;
|
||||
|
||||
@JSONField(name = "PSCacheMissCount")
|
||||
@Schema(description = "Druid 原始字段:PSCacheMissCount")
|
||||
private int PSCacheMissCount;
|
||||
|
||||
@JSONField(name = "StartTransactionCount")
|
||||
@Schema(description = "Druid 原始字段:StartTransactionCount")
|
||||
private int StartTransactionCount;
|
||||
|
||||
@JSONField(name = "RemoveAbandoned")
|
||||
@Schema(description = "Druid 原始字段:RemoveAbandoned")
|
||||
private boolean RemoveAbandoned;
|
||||
|
||||
@JSONField(name = "ClobOpenCount")
|
||||
@Schema(description = "Druid 原始字段:ClobOpenCount")
|
||||
private int ClobOpenCount;
|
||||
|
||||
@JSONField(name = "BlobOpenCount")
|
||||
@Schema(description = "Druid 原始字段:BlobOpenCount")
|
||||
private int BlobOpenCount;
|
||||
|
||||
@JSONField(name = "KeepAliveCheckCount")
|
||||
@Schema(description = "Druid 原始字段:KeepAliveCheckCount")
|
||||
private int KeepAliveCheckCount;
|
||||
|
||||
@JSONField(name = "KeepAlive")
|
||||
@Schema(description = "Druid 原始字段:KeepAlive")
|
||||
private boolean KeepAlive;
|
||||
|
||||
@JSONField(name = "FailFast")
|
||||
@Schema(description = "Druid 原始字段:FailFast")
|
||||
private boolean FailFast;
|
||||
|
||||
@JSONField(name = "MaxWait")
|
||||
@Schema(description = "Druid 原始字段:MaxWait")
|
||||
private int MaxWait;
|
||||
|
||||
@JSONField(name = "MaxWaitThreadCount")
|
||||
@Schema(description = "Druid 原始字段:MaxWaitThreadCount")
|
||||
private int MaxWaitThreadCount;
|
||||
|
||||
@JSONField(name = "PoolPreparedStatements")
|
||||
@Schema(description = "Druid 原始字段:PoolPreparedStatements")
|
||||
private boolean PoolPreparedStatements;
|
||||
|
||||
@JSONField(name = "MaxPoolPreparedStatementPerConnectionSize")
|
||||
@Schema(description = "Druid 原始字段:MaxPoolPreparedStatementPerConnectionSize")
|
||||
private int MaxPoolPreparedStatementPerConnectionSize;
|
||||
|
||||
@JSONField(name = "MinEvictableIdleTimeMillis")
|
||||
@Schema(description = "Druid 原始字段:MinEvictableIdleTimeMillis")
|
||||
private int MinEvictableIdleTimeMillis;
|
||||
|
||||
@JSONField(name = "MaxEvictableIdleTimeMillis")
|
||||
@Schema(description = "Druid 原始字段:MaxEvictableIdleTimeMillis")
|
||||
private int MaxEvictableIdleTimeMillis;
|
||||
|
||||
@JSONField(name = "LogDifferentThread")
|
||||
@Schema(description = "Druid 原始字段:LogDifferentThread")
|
||||
private boolean LogDifferentThread;
|
||||
|
||||
@JSONField(name = "RecycleErrorCount")
|
||||
@Schema(description = "Druid 原始字段:RecycleErrorCount")
|
||||
private int RecycleErrorCount;
|
||||
|
||||
@JSONField(name = "PreparedStatementOpenCount")
|
||||
@Schema(description = "Druid 原始字段:PreparedStatementOpenCount")
|
||||
private int PreparedStatementOpenCount;
|
||||
|
||||
@JSONField(name = "PreparedStatementClosedCount")
|
||||
@Schema(description = "Druid 原始字段:PreparedStatementClosedCount")
|
||||
private int PreparedStatementClosedCount;
|
||||
|
||||
@JSONField(name = "UseUnfairLock")
|
||||
@Schema(description = "Druid 原始字段:UseUnfairLock")
|
||||
private boolean UseUnfairLock;
|
||||
|
||||
@JSONField(name = "InitGlobalVariants")
|
||||
@Schema(description = "Druid 原始字段:InitGlobalVariants")
|
||||
private boolean InitGlobalVariants;
|
||||
|
||||
@JSONField(name = "InitVariants")
|
||||
@Schema(description = "Druid 原始字段:InitVariants")
|
||||
private boolean InitVariants;
|
||||
|
||||
@JSONField(name = "FilterClassNames")
|
||||
@Schema(description = "Druid 原始字段:FilterClassNames")
|
||||
private List<String> FilterClassNames;
|
||||
|
||||
@JSONField(name = "TransactionHistogram")
|
||||
@Schema(description = "Druid 原始字段:TransactionHistogram")
|
||||
private List<Integer> TransactionHistogram;
|
||||
|
||||
@JSONField(name = "ConnectionHoldTimeHistogram")
|
||||
@Schema(description = "Druid 原始字段:ConnectionHoldTimeHistogram")
|
||||
private List<Integer> ConnectionHoldTimeHistogram;
|
||||
|
||||
}
|
||||
|
||||
+57
-50
@@ -1,168 +1,175 @@
|
||||
package com.pig4cloud.pigx.monitor.model.dto;
|
||||
|
||||
import com.alibaba.fastjson.annotation.JSONField;
|
||||
import io.swagger.v3.oas.annotations.media.Schema;
|
||||
import lombok.Data;
|
||||
import lombok.NoArgsConstructor;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* Druid SQL 监控详情响应。
|
||||
* <p>
|
||||
* JSON 字段名与 Druid 监控接口保持一致。
|
||||
*
|
||||
* @author linchtech
|
||||
* @date 2020-09-16 16:18
|
||||
**/
|
||||
@NoArgsConstructor
|
||||
@Data
|
||||
@Schema(description = "Druid SQL 监控详情响应")
|
||||
public class SqlDetailResult {
|
||||
|
||||
@JSONField(name = "ResultCode")
|
||||
@Schema(description = "Druid 原始字段:ResultCode")
|
||||
private int ResultCode;
|
||||
|
||||
@JSONField(name = "Content")
|
||||
@Schema(description = "Druid 原始字段:Content")
|
||||
private ContentBean Content;
|
||||
|
||||
/** Druid SQL 监控详情。 */
|
||||
@NoArgsConstructor
|
||||
@Data
|
||||
@Schema(description = "Druid SQL 监控详情")
|
||||
public static class ContentBean {
|
||||
|
||||
@JSONField(name = "ExecuteAndResultSetHoldTime")
|
||||
@Schema(description = "Druid 原始字段:ExecuteAndResultSetHoldTime")
|
||||
private int ExecuteAndResultSetHoldTime;
|
||||
|
||||
@JSONField(name = "LastErrorMessage")
|
||||
@Schema(description = "Druid 原始字段:LastErrorMessage")
|
||||
private Object LastErrorMessage;
|
||||
|
||||
@JSONField(name = "InputStreamOpenCount")
|
||||
@Schema(description = "Druid 原始字段:InputStreamOpenCount")
|
||||
private int InputStreamOpenCount;
|
||||
|
||||
@JSONField(name = "BatchSizeTotal")
|
||||
@Schema(description = "Druid 原始字段:BatchSizeTotal")
|
||||
private int BatchSizeTotal;
|
||||
|
||||
@JSONField(name = "FetchRowCountMax")
|
||||
@Schema(description = "Druid 原始字段:FetchRowCountMax")
|
||||
private int FetchRowCountMax;
|
||||
|
||||
@JSONField(name = "ErrorCount")
|
||||
@Schema(description = "Druid 原始字段:ErrorCount")
|
||||
private int ErrorCount;
|
||||
|
||||
@JSONField(name = "BatchSizeMax")
|
||||
@Schema(description = "Druid 原始字段:BatchSizeMax")
|
||||
private int BatchSizeMax;
|
||||
|
||||
@JSONField(name = "URL")
|
||||
@Schema(description = "Druid 原始字段:URL")
|
||||
private Object URL;
|
||||
|
||||
@JSONField(name = "Name")
|
||||
@Schema(description = "Druid 原始字段:Name")
|
||||
private Object Name;
|
||||
|
||||
@JSONField(name = "LastErrorTime")
|
||||
@Schema(description = "Druid 原始字段:LastErrorTime")
|
||||
private Object LastErrorTime;
|
||||
|
||||
@JSONField(name = "ReaderOpenCount")
|
||||
@Schema(description = "Druid 原始字段:ReaderOpenCount")
|
||||
private int ReaderOpenCount;
|
||||
|
||||
@JSONField(name = "parsedRelationships")
|
||||
@Schema(description = "Druid 原始字段:parsedRelationships")
|
||||
private String parsedRelationships;
|
||||
|
||||
@JSONField(name = "EffectedRowCountMax")
|
||||
@Schema(description = "Druid 原始字段:EffectedRowCountMax")
|
||||
private int EffectedRowCountMax;
|
||||
|
||||
@JSONField(name = "LastErrorClass")
|
||||
@Schema(description = "Druid 原始字段:LastErrorClass")
|
||||
private Object LastErrorClass;
|
||||
|
||||
@JSONField(name = "InTransactionCount")
|
||||
@Schema(description = "Druid 原始字段:InTransactionCount")
|
||||
private int InTransactionCount;
|
||||
|
||||
@JSONField(name = "LastErrorStackTrace")
|
||||
@Schema(description = "Druid 原始字段:LastErrorStackTrace")
|
||||
private Object LastErrorStackTrace;
|
||||
|
||||
@JSONField(name = "ResultSetHoldTime")
|
||||
@Schema(description = "Druid 原始字段:ResultSetHoldTime")
|
||||
private int ResultSetHoldTime;
|
||||
|
||||
@JSONField(name = "TotalTime")
|
||||
@Schema(description = "Druid 原始字段:TotalTime")
|
||||
private int TotalTime;
|
||||
|
||||
@JSONField(name = "ID")
|
||||
@Schema(description = "Druid 原始字段:ID")
|
||||
private int ID;
|
||||
|
||||
@JSONField(name = "ConcurrentMax")
|
||||
@Schema(description = "Druid 原始字段:ConcurrentMax")
|
||||
private int ConcurrentMax;
|
||||
|
||||
@JSONField(name = "RunningCount")
|
||||
@Schema(description = "Druid 原始字段:RunningCount")
|
||||
private int RunningCount;
|
||||
|
||||
@JSONField(name = "FetchRowCount")
|
||||
@Schema(description = "Druid 原始字段:FetchRowCount")
|
||||
private int FetchRowCount;
|
||||
|
||||
@JSONField(name = "parsedFields")
|
||||
@Schema(description = "Druid 原始字段:parsedFields")
|
||||
private String parsedFields;
|
||||
|
||||
@JSONField(name = "MaxTimespanOccurTime")
|
||||
@Schema(description = "Druid 原始字段:MaxTimespanOccurTime")
|
||||
private String MaxTimespanOccurTime;
|
||||
|
||||
@JSONField(name = "LastSlowParameters")
|
||||
@Schema(description = "Druid 原始字段:LastSlowParameters")
|
||||
private Object LastSlowParameters;
|
||||
|
||||
@JSONField(name = "ReadBytesLength")
|
||||
@Schema(description = "Druid 原始字段:ReadBytesLength")
|
||||
private int ReadBytesLength;
|
||||
|
||||
@JSONField(name = "formattedSql")
|
||||
@Schema(description = "Druid 原始字段:formattedSql")
|
||||
private String formattedSql;
|
||||
|
||||
@JSONField(name = "DbType")
|
||||
@Schema(description = "Druid 原始字段:DbType")
|
||||
private String DbType;
|
||||
|
||||
@JSONField(name = "DataSource")
|
||||
@Schema(description = "Druid 原始字段:DataSource")
|
||||
private Object DataSource;
|
||||
|
||||
@JSONField(name = "SQL")
|
||||
@Schema(description = "Druid 原始字段:SQL")
|
||||
private String SQL;
|
||||
|
||||
@JSONField(name = "HASH")
|
||||
@Schema(description = "Druid 原始字段:HASH")
|
||||
private long HASH;
|
||||
|
||||
@JSONField(name = "LastError")
|
||||
@Schema(description = "Druid 原始字段:LastError")
|
||||
private Object LastError;
|
||||
|
||||
@JSONField(name = "MaxTimespan")
|
||||
@Schema(description = "Druid 原始字段:MaxTimespan")
|
||||
private int MaxTimespan;
|
||||
|
||||
@JSONField(name = "parsedTable")
|
||||
@Schema(description = "Druid 原始字段:parsedTable")
|
||||
private String parsedTable;
|
||||
|
||||
@JSONField(name = "parsedOrderbycolumns")
|
||||
@Schema(description = "Druid 原始字段:parsedOrderbycolumns")
|
||||
private String parsedOrderbycolumns;
|
||||
|
||||
@JSONField(name = "BlobOpenCount")
|
||||
@Schema(description = "Druid 原始字段:BlobOpenCount")
|
||||
private int BlobOpenCount;
|
||||
|
||||
@JSONField(name = "ExecuteCount")
|
||||
@Schema(description = "Druid 原始字段:ExecuteCount")
|
||||
private int ExecuteCount;
|
||||
|
||||
@JSONField(name = "EffectedRowCount")
|
||||
@Schema(description = "Druid 原始字段:EffectedRowCount")
|
||||
private int EffectedRowCount;
|
||||
|
||||
@JSONField(name = "ReadStringLength")
|
||||
@Schema(description = "Druid 原始字段:ReadStringLength")
|
||||
private int ReadStringLength;
|
||||
|
||||
@JSONField(name = "File")
|
||||
@Schema(description = "Druid 原始字段:File")
|
||||
private Object File;
|
||||
|
||||
@JSONField(name = "ClobOpenCount")
|
||||
@Schema(description = "Druid 原始字段:ClobOpenCount")
|
||||
private int ClobOpenCount;
|
||||
|
||||
@JSONField(name = "LastTime")
|
||||
@Schema(description = "Druid 原始字段:LastTime")
|
||||
private String LastTime;
|
||||
|
||||
@JSONField(name = "parsedConditions")
|
||||
@Schema(description = "Druid 原始字段:parsedConditions")
|
||||
private String parsedConditions;
|
||||
|
||||
@JSONField(name = "EffectedRowCountHistogram")
|
||||
@Schema(description = "Druid 原始字段:EffectedRowCountHistogram")
|
||||
private List<Integer> EffectedRowCountHistogram;
|
||||
|
||||
@JSONField(name = "Histogram")
|
||||
@Schema(description = "Druid 原始字段:Histogram")
|
||||
private List<Integer> Histogram;
|
||||
|
||||
@JSONField(name = "ExecuteAndResultHoldTimeHistogram")
|
||||
@Schema(description = "Druid 原始字段:ExecuteAndResultHoldTimeHistogram")
|
||||
private List<Integer> ExecuteAndResultHoldTimeHistogram;
|
||||
|
||||
@JSONField(name = "FetchRowCountHistogram")
|
||||
@Schema(description = "Druid 原始字段:FetchRowCountHistogram")
|
||||
private List<Integer> FetchRowCountHistogram;
|
||||
|
||||
}
|
||||
|
||||
+54
-44
@@ -1,156 +1,166 @@
|
||||
package com.pig4cloud.pigx.monitor.model.dto;
|
||||
|
||||
import com.alibaba.fastjson.annotation.JSONField;
|
||||
import io.swagger.v3.oas.annotations.media.Schema;
|
||||
import lombok.Data;
|
||||
import lombok.NoArgsConstructor;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* Druid SQL 监控列表响应。
|
||||
* <p>
|
||||
* JSON 字段名与 Druid 监控接口保持一致。
|
||||
*
|
||||
* @author linchtech
|
||||
* @date 2020-09-16 14:37
|
||||
**/
|
||||
@NoArgsConstructor
|
||||
@Data
|
||||
@Schema(description = "Druid SQL 监控列表响应")
|
||||
public class SqlListResult {
|
||||
|
||||
@JSONField(name = "ResultCode")
|
||||
@Schema(description = "Druid 原始字段:ResultCode")
|
||||
private int ResultCode;
|
||||
|
||||
@JSONField(name = "Content")
|
||||
@Schema(description = "Druid 原始字段:Content")
|
||||
private List<ContentBean> Content;
|
||||
|
||||
/** Druid SQL 监控列表明细。 */
|
||||
@NoArgsConstructor
|
||||
@Data
|
||||
@Schema(description = "Druid SQL 监控列表明细")
|
||||
public static class ContentBean {
|
||||
|
||||
@Schema(description = "服务实例 ID")
|
||||
private String serviceId;
|
||||
|
||||
@Schema(description = "服务实例地址")
|
||||
private String address;
|
||||
|
||||
@Schema(description = "服务实例端口")
|
||||
private Integer port;
|
||||
|
||||
@JSONField(name = "ExecuteAndResultSetHoldTime")
|
||||
@Schema(description = "Druid 原始字段:ExecuteAndResultSetHoldTime")
|
||||
private int ExecuteAndResultSetHoldTime;
|
||||
|
||||
@JSONField(name = "LastErrorMessage")
|
||||
@Schema(description = "Druid 原始字段:LastErrorMessage")
|
||||
private Object LastErrorMessage;
|
||||
|
||||
@JSONField(name = "InputStreamOpenCount")
|
||||
@Schema(description = "Druid 原始字段:InputStreamOpenCount")
|
||||
private int InputStreamOpenCount;
|
||||
|
||||
@JSONField(name = "BatchSizeTotal")
|
||||
@Schema(description = "Druid 原始字段:BatchSizeTotal")
|
||||
private int BatchSizeTotal;
|
||||
|
||||
@JSONField(name = "FetchRowCountMax")
|
||||
@Schema(description = "Druid 原始字段:FetchRowCountMax")
|
||||
private int FetchRowCountMax;
|
||||
|
||||
@JSONField(name = "ErrorCount")
|
||||
@Schema(description = "Druid 原始字段:ErrorCount")
|
||||
private int ErrorCount;
|
||||
|
||||
@JSONField(name = "BatchSizeMax")
|
||||
@Schema(description = "Druid 原始字段:BatchSizeMax")
|
||||
private int BatchSizeMax;
|
||||
|
||||
@JSONField(name = "URL")
|
||||
@Schema(description = "Druid 原始字段:URL")
|
||||
private Object URL;
|
||||
|
||||
@JSONField(name = "Name")
|
||||
@Schema(description = "Druid 原始字段:Name")
|
||||
private Object Name;
|
||||
|
||||
@JSONField(name = "LastErrorTime")
|
||||
@Schema(description = "Druid 原始字段:LastErrorTime")
|
||||
private Object LastErrorTime;
|
||||
|
||||
@JSONField(name = "ReaderOpenCount")
|
||||
@Schema(description = "Druid 原始字段:ReaderOpenCount")
|
||||
private int ReaderOpenCount;
|
||||
|
||||
@JSONField(name = "EffectedRowCountMax")
|
||||
@Schema(description = "Druid 原始字段:EffectedRowCountMax")
|
||||
private int EffectedRowCountMax;
|
||||
|
||||
@JSONField(name = "LastErrorClass")
|
||||
@Schema(description = "Druid 原始字段:LastErrorClass")
|
||||
private Object LastErrorClass;
|
||||
|
||||
@JSONField(name = "InTransactionCount")
|
||||
@Schema(description = "Druid 原始字段:InTransactionCount")
|
||||
private int InTransactionCount;
|
||||
|
||||
@JSONField(name = "LastErrorStackTrace")
|
||||
@Schema(description = "Druid 原始字段:LastErrorStackTrace")
|
||||
private Object LastErrorStackTrace;
|
||||
|
||||
@JSONField(name = "ResultSetHoldTime")
|
||||
@Schema(description = "Druid 原始字段:ResultSetHoldTime")
|
||||
private int ResultSetHoldTime;
|
||||
|
||||
@JSONField(name = "TotalTime")
|
||||
@Schema(description = "Druid 原始字段:TotalTime")
|
||||
private int TotalTime;
|
||||
|
||||
@JSONField(name = "ID")
|
||||
@Schema(description = "Druid 原始字段:ID")
|
||||
private int ID;
|
||||
|
||||
@JSONField(name = "ConcurrentMax")
|
||||
@Schema(description = "Druid 原始字段:ConcurrentMax")
|
||||
private int ConcurrentMax;
|
||||
|
||||
@JSONField(name = "RunningCount")
|
||||
@Schema(description = "Druid 原始字段:RunningCount")
|
||||
private int RunningCount;
|
||||
|
||||
@JSONField(name = "FetchRowCount")
|
||||
@Schema(description = "Druid 原始字段:FetchRowCount")
|
||||
private int FetchRowCount;
|
||||
|
||||
@JSONField(name = "MaxTimespanOccurTime")
|
||||
@Schema(description = "Druid 原始字段:MaxTimespanOccurTime")
|
||||
private String MaxTimespanOccurTime;
|
||||
|
||||
@JSONField(name = "LastSlowParameters")
|
||||
@Schema(description = "Druid 原始字段:LastSlowParameters")
|
||||
private Object LastSlowParameters;
|
||||
|
||||
@JSONField(name = "ReadBytesLength")
|
||||
@Schema(description = "Druid 原始字段:ReadBytesLength")
|
||||
private int ReadBytesLength;
|
||||
|
||||
@JSONField(name = "DbType")
|
||||
@Schema(description = "Druid 原始字段:DbType")
|
||||
private String DbType;
|
||||
|
||||
@JSONField(name = "DataSource")
|
||||
@Schema(description = "Druid 原始字段:DataSource")
|
||||
private Object DataSource;
|
||||
|
||||
@JSONField(name = "SQL")
|
||||
@Schema(description = "Druid 原始字段:SQL")
|
||||
private String SQL;
|
||||
|
||||
@JSONField(name = "HASH")
|
||||
@Schema(description = "Druid 原始字段:HASH")
|
||||
private long HASH;
|
||||
|
||||
@JSONField(name = "LastError")
|
||||
@Schema(description = "Druid 原始字段:LastError")
|
||||
private Object LastError;
|
||||
|
||||
@JSONField(name = "MaxTimespan")
|
||||
@Schema(description = "Druid 原始字段:MaxTimespan")
|
||||
private int MaxTimespan;
|
||||
|
||||
@JSONField(name = "BlobOpenCount")
|
||||
@Schema(description = "Druid 原始字段:BlobOpenCount")
|
||||
private int BlobOpenCount;
|
||||
|
||||
@JSONField(name = "ExecuteCount")
|
||||
@Schema(description = "Druid 原始字段:ExecuteCount")
|
||||
private int ExecuteCount;
|
||||
|
||||
@JSONField(name = "EffectedRowCount")
|
||||
@Schema(description = "Druid 原始字段:EffectedRowCount")
|
||||
private int EffectedRowCount;
|
||||
|
||||
@JSONField(name = "ReadStringLength")
|
||||
@Schema(description = "Druid 原始字段:ReadStringLength")
|
||||
private int ReadStringLength;
|
||||
|
||||
@JSONField(name = "File")
|
||||
@Schema(description = "Druid 原始字段:File")
|
||||
private Object File;
|
||||
|
||||
@JSONField(name = "ClobOpenCount")
|
||||
@Schema(description = "Druid 原始字段:ClobOpenCount")
|
||||
private int ClobOpenCount;
|
||||
|
||||
@JSONField(name = "LastTime")
|
||||
@Schema(description = "Druid 原始字段:LastTime")
|
||||
private String LastTime;
|
||||
|
||||
@JSONField(name = "EffectedRowCountHistogram")
|
||||
@Schema(description = "Druid 原始字段:EffectedRowCountHistogram")
|
||||
private List<Integer> EffectedRowCountHistogram;
|
||||
|
||||
@JSONField(name = "Histogram")
|
||||
@Schema(description = "Druid 原始字段:Histogram")
|
||||
private List<Integer> Histogram;
|
||||
|
||||
@JSONField(name = "ExecuteAndResultHoldTimeHistogram")
|
||||
@Schema(description = "Druid 原始字段:ExecuteAndResultHoldTimeHistogram")
|
||||
private List<Integer> ExecuteAndResultHoldTimeHistogram;
|
||||
|
||||
@JSONField(name = "FetchRowCountHistogram")
|
||||
@Schema(description = "Druid 原始字段:FetchRowCountHistogram")
|
||||
private List<Integer> FetchRowCountHistogram;
|
||||
|
||||
}
|
||||
|
||||
+48
-29
@@ -1,6 +1,6 @@
|
||||
package com.pig4cloud.pigx.monitor.model.dto;
|
||||
|
||||
import com.alibaba.fastjson.annotation.JSONField;
|
||||
import io.swagger.v3.oas.annotations.media.Schema;
|
||||
import lombok.Data;
|
||||
import lombok.NoArgsConstructor;
|
||||
|
||||
@@ -9,106 +9,119 @@ import java.util.Collections;
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* Druid SQL 防火墙统计响应。
|
||||
* <p>
|
||||
* JSON 字段名与 Druid 监控接口保持一致。
|
||||
*
|
||||
* @author linchtech
|
||||
* @date 2020-09-17 18:18
|
||||
**/
|
||||
@Data
|
||||
@NoArgsConstructor
|
||||
@Schema(description = "Druid SQL 防火墙统计响应")
|
||||
public class WallResult {
|
||||
|
||||
@JSONField(name = "ResultCode")
|
||||
@Schema(description = "Druid 原始字段:ResultCode")
|
||||
private int ResultCode;
|
||||
|
||||
@JSONField(name = "Content")
|
||||
@Schema(description = "Druid 原始字段:Content")
|
||||
private ContentBean Content = new ContentBean();
|
||||
|
||||
/** Druid SQL 防火墙统计内容。 */
|
||||
@NoArgsConstructor
|
||||
@Data
|
||||
@Schema(description = "Druid SQL 防火墙统计内容")
|
||||
public static class ContentBean {
|
||||
|
||||
@JSONField(name = "checkCount")
|
||||
@Schema(description = "Druid 原始字段:checkCount")
|
||||
private int checkCount;
|
||||
|
||||
@JSONField(name = "hardCheckCount")
|
||||
@Schema(description = "Druid 原始字段:hardCheckCount")
|
||||
private int hardCheckCount;
|
||||
|
||||
@JSONField(name = "violationCount")
|
||||
@Schema(description = "Druid 原始字段:violationCount")
|
||||
private int violationCount;
|
||||
|
||||
@JSONField(name = "violationEffectRowCount")
|
||||
@Schema(description = "Druid 原始字段:violationEffectRowCount")
|
||||
private int violationEffectRowCount;
|
||||
|
||||
@JSONField(name = "blackListHitCount")
|
||||
@Schema(description = "Druid 原始字段:blackListHitCount")
|
||||
private int blackListHitCount;
|
||||
|
||||
@JSONField(name = "blackListSize")
|
||||
@Schema(description = "Druid 原始字段:blackListSize")
|
||||
private int blackListSize;
|
||||
|
||||
@JSONField(name = "whiteListHitCount")
|
||||
@Schema(description = "Druid 原始字段:whiteListHitCount")
|
||||
private int whiteListHitCount;
|
||||
|
||||
@JSONField(name = "whiteListSize")
|
||||
@Schema(description = "Druid 原始字段:whiteListSize")
|
||||
private int whiteListSize;
|
||||
|
||||
@JSONField(name = "syntaxErrorCount")
|
||||
@Schema(description = "Druid 原始字段:syntaxErrorCount")
|
||||
private int syntaxErrorCount;
|
||||
|
||||
@JSONField(name = "tables")
|
||||
@Schema(description = "Druid 原始字段:tables")
|
||||
private List<TablesBean> tables = new ArrayList<>();
|
||||
|
||||
@JSONField(name = "functions")
|
||||
@Schema(description = "Druid 原始字段:functions")
|
||||
private List<FunctionsBean> functions = new ArrayList<>();
|
||||
|
||||
@JSONField(name = "blackList")
|
||||
@Schema(description = "Druid 原始字段:blackList")
|
||||
private List<Object> blackList = new ArrayList<>();
|
||||
|
||||
@JSONField(name = "whiteList")
|
||||
@Schema(description = "Druid 原始字段:whiteList")
|
||||
private List<WhiteListBean> whiteList = new ArrayList<>();
|
||||
|
||||
/** Druid SQL 防火墙表统计。 */
|
||||
@NoArgsConstructor
|
||||
@Data
|
||||
@Schema(description = "Druid SQL 防火墙表统计")
|
||||
public static class TablesBean {
|
||||
|
||||
@JSONField(name = "name")
|
||||
@Schema(description = "Druid 原始字段:name")
|
||||
private String name;
|
||||
|
||||
@JSONField(name = "selectCount")
|
||||
@Schema(description = "Druid 原始字段:selectCount")
|
||||
private int selectCount;
|
||||
|
||||
@JSONField(name = "fetchRowCount")
|
||||
@Schema(description = "Druid 原始字段:fetchRowCount")
|
||||
private int fetchRowCount;
|
||||
|
||||
@JSONField(name = "fetchRowCountHistogram")
|
||||
@Schema(description = "Druid 原始字段:fetchRowCountHistogram")
|
||||
private List<Integer> fetchRowCountHistogram;
|
||||
|
||||
}
|
||||
|
||||
/** Druid SQL 防火墙函数统计。 */
|
||||
@NoArgsConstructor
|
||||
@Data
|
||||
@Schema(description = "Druid SQL 防火墙函数统计")
|
||||
public static class FunctionsBean {
|
||||
|
||||
@JSONField(name = "name")
|
||||
@Schema(description = "Druid 原始字段:name")
|
||||
private String name;
|
||||
|
||||
@JSONField(name = "invokeCount")
|
||||
@Schema(description = "Druid 原始字段:invokeCount")
|
||||
private int invokeCount;
|
||||
|
||||
}
|
||||
|
||||
/** Druid SQL 防火墙白名单统计。 */
|
||||
@NoArgsConstructor
|
||||
@Data
|
||||
@Schema(description = "Druid SQL 防火墙白名单统计")
|
||||
public static class WhiteListBean {
|
||||
|
||||
@JSONField(name = "sql")
|
||||
@Schema(description = "Druid 原始字段:sql")
|
||||
private String sql;
|
||||
|
||||
@JSONField(name = "sample")
|
||||
@Schema(description = "Druid 原始字段:sample")
|
||||
private String sample;
|
||||
|
||||
@JSONField(name = "executeCount")
|
||||
@Schema(description = "Druid 原始字段:executeCount")
|
||||
private int executeCount;
|
||||
|
||||
@JSONField(name = "fetchRowCount")
|
||||
@Schema(description = "Druid 原始字段:fetchRowCount")
|
||||
private int fetchRowCount;
|
||||
|
||||
}
|
||||
@@ -116,11 +129,17 @@ public class WallResult {
|
||||
}
|
||||
|
||||
/**
|
||||
* 累加结果
|
||||
* @param wallResult 需要累加的对象
|
||||
* @param sumResult 累加后的对象
|
||||
* 将单个节点的 SQL 防火墙统计累加到汇总结果中。
|
||||
* <p>
|
||||
* {@code wallResult}、{@code sumResult} 或其 {@code Content} 为空时直接返回,不修改汇总结果。
|
||||
* @param wallResult 待累加的节点统计;为 {@code null} 时忽略
|
||||
* @param sumResult 累加目标;为 {@code null} 时忽略
|
||||
*/
|
||||
public void sum(WallResult wallResult, WallResult sumResult) {
|
||||
if (wallResult == null || sumResult == null || wallResult.getContent() == null
|
||||
|| sumResult.getContent() == null) {
|
||||
return;
|
||||
}
|
||||
sumResult.getContent()
|
||||
.setCheckCount(sumResult.getContent().getCheckCount() + wallResult.getContent().getCheckCount());
|
||||
sumResult.getContent()
|
||||
|
||||
+35
-28
@@ -1,102 +1,109 @@
|
||||
package com.pig4cloud.pigx.monitor.model.dto;
|
||||
|
||||
import com.alibaba.fastjson.annotation.JSONField;
|
||||
import io.swagger.v3.oas.annotations.media.Schema;
|
||||
import lombok.Data;
|
||||
import lombok.NoArgsConstructor;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* Druid Web URI 统计响应。
|
||||
* <p>
|
||||
* JSON 字段名与 Druid 监控接口保持一致。
|
||||
*
|
||||
* @author linchtech
|
||||
* @date 2020-09-17 18:27
|
||||
**/
|
||||
@NoArgsConstructor
|
||||
@Data
|
||||
@Schema(description = "Druid Web URI 统计响应")
|
||||
public class WebResult {
|
||||
|
||||
@JSONField(name = "ResultCode")
|
||||
@Schema(description = "Druid 原始字段:ResultCode")
|
||||
private int ResultCode;
|
||||
|
||||
@JSONField(name = "Content")
|
||||
@Schema(description = "Druid 原始字段:Content")
|
||||
private List<ContentBean> Content;
|
||||
|
||||
/** Druid Web URI 统计明细。 */
|
||||
@NoArgsConstructor
|
||||
@Data
|
||||
@Schema(description = "Druid Web URI 统计明细")
|
||||
public static class ContentBean {
|
||||
|
||||
@JSONField(name = "URI")
|
||||
@Schema(description = "Druid 原始字段:URI")
|
||||
private String URI;
|
||||
|
||||
@JSONField(name = "RunningCount")
|
||||
@Schema(description = "Druid 原始字段:RunningCount")
|
||||
private int RunningCount;
|
||||
|
||||
@JSONField(name = "ConcurrentMax")
|
||||
@Schema(description = "Druid 原始字段:ConcurrentMax")
|
||||
private int ConcurrentMax;
|
||||
|
||||
@JSONField(name = "RequestCount")
|
||||
@Schema(description = "Druid 原始字段:RequestCount")
|
||||
private int RequestCount;
|
||||
|
||||
@JSONField(name = "RequestTimeMillis")
|
||||
@Schema(description = "Druid 原始字段:RequestTimeMillis")
|
||||
private int RequestTimeMillis;
|
||||
|
||||
@JSONField(name = "ErrorCount")
|
||||
@Schema(description = "Druid 原始字段:ErrorCount")
|
||||
private int ErrorCount;
|
||||
|
||||
@JSONField(name = "LastAccessTime")
|
||||
@Schema(description = "Druid 原始字段:LastAccessTime")
|
||||
private String LastAccessTime;
|
||||
|
||||
@JSONField(name = "JdbcCommitCount")
|
||||
@Schema(description = "Druid 原始字段:JdbcCommitCount")
|
||||
private int JdbcCommitCount;
|
||||
|
||||
@JSONField(name = "JdbcRollbackCount")
|
||||
@Schema(description = "Druid 原始字段:JdbcRollbackCount")
|
||||
private int JdbcRollbackCount;
|
||||
|
||||
@JSONField(name = "JdbcExecuteCount")
|
||||
@Schema(description = "Druid 原始字段:JdbcExecuteCount")
|
||||
private int JdbcExecuteCount;
|
||||
|
||||
@JSONField(name = "JdbcExecuteErrorCount")
|
||||
@Schema(description = "Druid 原始字段:JdbcExecuteErrorCount")
|
||||
private int JdbcExecuteErrorCount;
|
||||
|
||||
@JSONField(name = "JdbcExecutePeak")
|
||||
@Schema(description = "Druid 原始字段:JdbcExecutePeak")
|
||||
private int JdbcExecutePeak;
|
||||
|
||||
@JSONField(name = "JdbcExecuteTimeMillis")
|
||||
@Schema(description = "Druid 原始字段:JdbcExecuteTimeMillis")
|
||||
private int JdbcExecuteTimeMillis;
|
||||
|
||||
@JSONField(name = "JdbcFetchRowCount")
|
||||
@Schema(description = "Druid 原始字段:JdbcFetchRowCount")
|
||||
private int JdbcFetchRowCount;
|
||||
|
||||
@JSONField(name = "JdbcFetchRowPeak")
|
||||
@Schema(description = "Druid 原始字段:JdbcFetchRowPeak")
|
||||
private int JdbcFetchRowPeak;
|
||||
|
||||
@JSONField(name = "JdbcUpdateCount")
|
||||
@Schema(description = "Druid 原始字段:JdbcUpdateCount")
|
||||
private int JdbcUpdateCount;
|
||||
|
||||
@JSONField(name = "JdbcUpdatePeak")
|
||||
@Schema(description = "Druid 原始字段:JdbcUpdatePeak")
|
||||
private int JdbcUpdatePeak;
|
||||
|
||||
@JSONField(name = "JdbcPoolConnectionOpenCount")
|
||||
@Schema(description = "Druid 原始字段:JdbcPoolConnectionOpenCount")
|
||||
private int JdbcPoolConnectionOpenCount;
|
||||
|
||||
@JSONField(name = "JdbcPoolConnectionCloseCount")
|
||||
@Schema(description = "Druid 原始字段:JdbcPoolConnectionCloseCount")
|
||||
private int JdbcPoolConnectionCloseCount;
|
||||
|
||||
@JSONField(name = "JdbcResultSetOpenCount")
|
||||
@Schema(description = "Druid 原始字段:JdbcResultSetOpenCount")
|
||||
private int JdbcResultSetOpenCount;
|
||||
|
||||
@JSONField(name = "JdbcResultSetCloseCount")
|
||||
@Schema(description = "Druid 原始字段:JdbcResultSetCloseCount")
|
||||
private int JdbcResultSetCloseCount;
|
||||
|
||||
@JSONField(name = "RequestTimeMillisMax")
|
||||
@Schema(description = "Druid 原始字段:RequestTimeMillisMax")
|
||||
private int RequestTimeMillisMax;
|
||||
|
||||
@JSONField(name = "RequestTimeMillisMaxOccurTime")
|
||||
@Schema(description = "Druid 原始字段:RequestTimeMillisMaxOccurTime")
|
||||
private String RequestTimeMillisMaxOccurTime;
|
||||
|
||||
@JSONField(name = "Histogram")
|
||||
@Schema(description = "Druid 原始字段:Histogram")
|
||||
private List<Integer> Histogram;
|
||||
|
||||
@JSONField(name = "Profiles")
|
||||
@Schema(description = "Druid 原始字段:Profiles")
|
||||
private List<?> Profiles;
|
||||
|
||||
}
|
||||
|
||||
+83
-61
@@ -1,15 +1,14 @@
|
||||
package com.pig4cloud.pigx.monitor.service.impl;
|
||||
|
||||
import cn.hutool.core.util.StrUtil;
|
||||
import cn.hutool.http.HttpUtil;
|
||||
import cn.hutool.json.JSONConfig;
|
||||
import cn.hutool.json.JSONUtil;
|
||||
import com.alibaba.druid.stat.DruidStatServiceMBean;
|
||||
import com.alibaba.druid.support.http.stat.WebAppStatManager;
|
||||
import com.alibaba.druid.support.json.JSONUtils;
|
||||
import com.alibaba.druid.support.spring.stat.SpringStatManager;
|
||||
import com.alibaba.druid.util.MapComparator;
|
||||
import com.alibaba.druid.util.StringUtils;
|
||||
import com.alibaba.fastjson.JSON;
|
||||
import com.alibaba.fastjson.JSONArray;
|
||||
import com.alibaba.fastjson.JSONObject;
|
||||
import com.pig4cloud.pigx.monitor.config.DruidMonitorConfigurer;
|
||||
import com.pig4cloud.pigx.monitor.model.ServiceNode;
|
||||
import com.pig4cloud.pigx.monitor.model.dto.*;
|
||||
@@ -24,7 +23,9 @@ import java.util.function.Function;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
/**
|
||||
* 分布式环境下 druid 监控数据采集,copy from https://u.nu/8-shl
|
||||
* 分布式 Druid 监控数据聚合服务。
|
||||
* <p>
|
||||
* 负责从注册中心发现被监控实例,采集各实例的 Druid 数据并保持 Druid 控制台要求的 JSON 字段与数值类型。
|
||||
*
|
||||
* @author linchtech
|
||||
* @date 2020-09-16 11:12
|
||||
@@ -33,8 +34,10 @@ import java.util.stream.Collectors;
|
||||
@Component
|
||||
public class MonitorStatService implements DruidStatServiceMBean {
|
||||
|
||||
/** Druid 请求处理成功状态码。 */
|
||||
public final static int RESULT_CODE_SUCCESS = 1;
|
||||
|
||||
/** Druid 请求处理失败状态码。 */
|
||||
public final static int RESULT_CODE_ERROR = -1;
|
||||
|
||||
private final static int DEFAULT_PAGE = 1;
|
||||
@@ -50,7 +53,7 @@ public class MonitorStatService implements DruidStatServiceMBean {
|
||||
private static final String DEFAULT_ORDERBY = "SQL";
|
||||
|
||||
/**
|
||||
* 以consul注册的服务的id为key,value为某个微服务节点
|
||||
* 以注册中心服务实例 ID 为键,保存对应的微服务节点。
|
||||
*/
|
||||
public static Map<String, ServiceNode> serviceIdMap = new HashMap<>();
|
||||
|
||||
@@ -61,8 +64,8 @@ public class MonitorStatService implements DruidStatServiceMBean {
|
||||
private DruidMonitorConfigurer.MonitorProperties monitorProperties;
|
||||
|
||||
/**
|
||||
* 获取所有服务信息
|
||||
* @return
|
||||
* 获取配置范围内的全部服务节点。
|
||||
* @return 以服务名、地址和端口组合值为键的服务节点映射
|
||||
*/
|
||||
public Map<String, ServiceNode> getAllServiceNodeMap() {
|
||||
List<String> services = discoveryClient.getServices();
|
||||
@@ -92,9 +95,9 @@ public class MonitorStatService implements DruidStatServiceMBean {
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取指定服务名的所有节点
|
||||
* @param parameters
|
||||
* @return
|
||||
* 获取指定服务名的全部节点。
|
||||
* @param parameters Druid 请求参数,必须包含 {@code serviceName}
|
||||
* @return 以服务名、地址和端口组合值为键的服务节点映射
|
||||
*/
|
||||
public Map<String, ServiceNode> getServiceAllNodeMap(Map<String, String> parameters) {
|
||||
String requestServiceName = parameters.get("serviceName");
|
||||
@@ -125,11 +128,12 @@ public class MonitorStatService implements DruidStatServiceMBean {
|
||||
Function.identity(), (v1, v2) -> v2));
|
||||
}
|
||||
|
||||
/** {@inheritDoc} */
|
||||
@Override
|
||||
public String service(String url) {
|
||||
Map<String, String> parameters = getParameters(url);
|
||||
if (url.endsWith("serviceList.json")) {
|
||||
return JSON.toJSONString(monitorProperties.getApplications());
|
||||
return JSONUtil.toJsonStr(monitorProperties.getApplications());
|
||||
}
|
||||
|
||||
if (url.equals("/datasource.json")) {
|
||||
@@ -203,20 +207,35 @@ public class MonitorStatService implements DruidStatServiceMBean {
|
||||
return returnJSONResult(RESULT_CODE_ERROR, "Do not support this request, please contact with administrator.");
|
||||
}
|
||||
|
||||
/**
|
||||
* 将 Druid 本地监控结果包装成标准响应。
|
||||
* @param resultCode Druid 响应状态码
|
||||
* @param content 响应内容
|
||||
* @return Druid 标准 JSON 响应
|
||||
*/
|
||||
public static String returnJSONResult(int resultCode, Object content) {
|
||||
Map<String, Object> dataMap = new LinkedHashMap<String, Object>();
|
||||
dataMap.put("ResultCode", resultCode);
|
||||
dataMap.put("Content", content);
|
||||
return JSONUtils.toJSONString(dataMap);
|
||||
return JSONUtil.createObj(JSONConfig.create().setIgnoreNullValue(false))
|
||||
.set("ResultCode", resultCode)
|
||||
.set("Content", content)
|
||||
.toString();
|
||||
}
|
||||
|
||||
/**
|
||||
* 聚合指定服务全部节点的 SQL 防火墙统计。
|
||||
* @param parameters Druid 请求参数
|
||||
* @return 聚合后的 Druid JSON 响应
|
||||
*/
|
||||
public String getWallStatMap(Map<String, String> parameters) {
|
||||
Map<String, ServiceNode> allNodeMap = getServiceAllNodeMap(parameters);
|
||||
List<WallResult> countResult = new ArrayList<>();
|
||||
for (String nodeKey : allNodeMap.keySet()) {
|
||||
ServiceNode serviceNode = allNodeMap.get(nodeKey);
|
||||
String url = getRequestUrl(parameters, serviceNode, "/druid/wall.json");
|
||||
WallResult wallResult = JSONObject.parseObject(HttpUtil.get(url), WallResult.class);
|
||||
WallResult wallResult = readJson(HttpUtil.get(url), WallResult.class);
|
||||
// 节点无响应或 JSON 为空时 readJson 返回 null,跳过避免聚合 NPE
|
||||
if (wallResult == null) {
|
||||
continue;
|
||||
}
|
||||
countResult.add(wallResult);
|
||||
}
|
||||
WallResult lastCount = new WallResult();
|
||||
@@ -224,7 +243,7 @@ public class MonitorStatService implements DruidStatServiceMBean {
|
||||
for (WallResult wallResult : countResult) {
|
||||
lastCount.sum(wallResult, lastCount);
|
||||
}
|
||||
return JSON.toJSONString(lastCount);
|
||||
return JSONUtil.toJsonStr(lastCount);
|
||||
}
|
||||
|
||||
private List<Map<String, Object>> getSpringStatDataList(Map<String, String> parameters) {
|
||||
@@ -232,32 +251,25 @@ public class MonitorStatService implements DruidStatServiceMBean {
|
||||
return comparatorOrderBy(array, parameters);
|
||||
}
|
||||
|
||||
@SuppressWarnings("unchecked")
|
||||
private String getWebURIStatDataList(Map<String, String> parameters) {
|
||||
Map<String, ServiceNode> allNodeMap = getServiceAllNodeMap(parameters);
|
||||
List<Map<String, Object>> arrayMap = new ArrayList<>();
|
||||
for (String nodeKey : allNodeMap.keySet()) {
|
||||
ServiceNode serviceNode = allNodeMap.get(nodeKey);
|
||||
String url = getRequestUrl(parameters, serviceNode, "/druid/weburi.json");
|
||||
WebResult dataSourceResult = JSONObject.parseObject(HttpUtil.get(url), WebResult.class);
|
||||
WebResult dataSourceResult = readJson(HttpUtil.get(url), WebResult.class);
|
||||
if (dataSourceResult != null) {
|
||||
List<WebResult.ContentBean> nodeContent = dataSourceResult.getContent();
|
||||
if (nodeContent != null) {
|
||||
for (WebResult.ContentBean contentBean : nodeContent) {
|
||||
Map<String, Object> map = JSONObject.parseObject(JSONObject.toJSONString(contentBean),
|
||||
Map.class);
|
||||
Map<String, Object> map = JSONUtil.parseObj(contentBean);
|
||||
arrayMap.add(map);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
List<Map<String, Object>> maps = comparatorOrderBy(arrayMap, parameters);
|
||||
String jsonString = JSON.toJSONString(maps);
|
||||
JSONArray objects = JSON.parseArray(jsonString);
|
||||
JSONObject jsonObject = new JSONObject();
|
||||
jsonObject.put("ResultCode", RESULT_CODE_SUCCESS);
|
||||
jsonObject.put("Content", objects);
|
||||
return jsonObject.toJSONString();
|
||||
return JSONUtil.createObj().set("ResultCode", RESULT_CODE_SUCCESS).set("Content", maps).toString();
|
||||
}
|
||||
|
||||
private Map<String, Object> getWebURIStatData(String uri) {
|
||||
@@ -283,34 +295,39 @@ public class MonitorStatService implements DruidStatServiceMBean {
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取sql详情
|
||||
* @param id
|
||||
* @param serviceId consul获取的服务id
|
||||
* @return
|
||||
* 获取指定服务节点的 SQL 详情。
|
||||
* @param id Druid SQL 记录 ID
|
||||
* @param serviceId 注册中心服务实例 ID
|
||||
* @return Druid SQL 详情 JSON
|
||||
*/
|
||||
private String getSqlStat(Integer id, String serviceId) {
|
||||
log.info("serviceId:{}", serviceId);
|
||||
ServiceNode serviceNode = serviceIdMap.get(serviceId);
|
||||
String url = "http://" + serviceNode.getAddress() + ":" + serviceNode.getPort() + "/druid/sql-" + id + ".json";
|
||||
SqlDetailResult sqlDetailResult = JSONObject.parseObject(HttpUtil.get(url), SqlDetailResult.class);
|
||||
return JSON.toJSONString(sqlDetailResult);
|
||||
SqlDetailResult sqlDetailResult = readJson(HttpUtil.get(url), SqlDetailResult.class);
|
||||
return JSONUtil.toJsonStr(sqlDetailResult);
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取指定数据源的活跃连接信息。
|
||||
* @param id Druid 数据源 ID
|
||||
* @param serviceId 注册中心服务实例 ID
|
||||
* @return Druid 活跃连接信息 JSON
|
||||
*/
|
||||
public String getPoolingConnectionInfoByDataSourceId(Integer id, String serviceId) {
|
||||
getAllServiceNodeMap();
|
||||
ServiceNode serviceNode = serviceIdMap.get(serviceId);
|
||||
String url = "http://" + serviceNode.getAddress() + ":" + serviceNode.getPort() + "/druid/connectionInfo-" + id
|
||||
+ ".json";
|
||||
ConnectionResult connectionResult = JSONObject.parseObject(HttpUtil.get(url), ConnectionResult.class);
|
||||
return JSON.toJSONString(connectionResult);
|
||||
ConnectionResult connectionResult = readJson(HttpUtil.get(url), ConnectionResult.class);
|
||||
return JSONUtil.toJsonStr(connectionResult);
|
||||
}
|
||||
|
||||
/**
|
||||
* SQL监控列表
|
||||
* @param parameters
|
||||
* @return
|
||||
* 聚合指定服务全部节点的 SQL 监控列表。
|
||||
* @param parameters Druid 请求参数
|
||||
* @return Druid SQL 监控列表 JSON
|
||||
*/
|
||||
@SuppressWarnings("unchecked")
|
||||
public String getSqlStatDataList(Map<String, String> parameters) {
|
||||
Map<String, ServiceNode> serviceAllNodeMap = getServiceAllNodeMap(parameters);
|
||||
List<Map<String, Object>> arrayMap = new ArrayList<>();
|
||||
@@ -319,7 +336,7 @@ public class MonitorStatService implements DruidStatServiceMBean {
|
||||
String serviceName = serviceNode.getServiceName();
|
||||
|
||||
String url = getRequestUrl(parameters, serviceNode, "/druid/sql.json");
|
||||
SqlListResult sqlListResult = JSONObject.parseObject(HttpUtil.get(url), SqlListResult.class);
|
||||
SqlListResult sqlListResult = readJson(HttpUtil.get(url), SqlListResult.class);
|
||||
if (sqlListResult != null) {
|
||||
List<SqlListResult.ContentBean> nodeContent = sqlListResult.getContent();
|
||||
if (nodeContent != null) {
|
||||
@@ -328,25 +345,19 @@ public class MonitorStatService implements DruidStatServiceMBean {
|
||||
contentBean.setAddress(serviceNode.getAddress());
|
||||
contentBean.setPort(serviceNode.getPort());
|
||||
contentBean.setServiceId(serviceNode.getId());
|
||||
Map map = JSONObject.parseObject(JSONObject.toJSONString(contentBean), Map.class);
|
||||
Map<String, Object> map = JSONUtil.parseObj(contentBean);
|
||||
arrayMap.add(map);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
List<Map<String, Object>> maps = comparatorOrderBy(arrayMap, parameters);
|
||||
String jsonString = JSON.toJSONString(maps);
|
||||
JSONArray objects = JSON.parseArray(jsonString);
|
||||
JSONObject jsonObject = new JSONObject();
|
||||
jsonObject.put("ResultCode", RESULT_CODE_SUCCESS);
|
||||
jsonObject.put("Content", objects);
|
||||
return jsonObject.toJSONString();
|
||||
return JSONUtil.createObj().set("ResultCode", RESULT_CODE_SUCCESS).set("Content", maps).toString();
|
||||
}
|
||||
|
||||
/**
|
||||
* 数据源监控
|
||||
* @param
|
||||
* @return
|
||||
* 聚合配置范围内全部节点的数据源监控信息。
|
||||
* @return Druid 数据源监控 JSON
|
||||
*/
|
||||
public String getDataSourceStatData() {
|
||||
Map<String, ServiceNode> allNodeMap = getAllServiceNodeMap();
|
||||
@@ -358,7 +369,7 @@ public class MonitorStatService implements DruidStatServiceMBean {
|
||||
String serviceName = serviceNode.getServiceName();
|
||||
|
||||
String url = "http://" + serviceNode.getAddress() + ":" + serviceNode.getPort() + "/druid/datasource.json";
|
||||
DataSourceResult dataSourceResult = JSONObject.parseObject(HttpUtil.get(url), DataSourceResult.class);
|
||||
DataSourceResult dataSourceResult = readJson(HttpUtil.get(url), DataSourceResult.class);
|
||||
|
||||
if (dataSourceResult != null) {
|
||||
List<DataSourceResult.ContentBean> nodeContent = dataSourceResult.getContent();
|
||||
@@ -372,15 +383,26 @@ public class MonitorStatService implements DruidStatServiceMBean {
|
||||
}
|
||||
}
|
||||
lastResult.setContent(contentBeans);
|
||||
return JSON.toJSONString(lastResult);
|
||||
return JSONUtil.toJsonStr(lastResult);
|
||||
}
|
||||
|
||||
/**
|
||||
* 拼接url
|
||||
* @param parameters
|
||||
* @param serviceNode
|
||||
* @param prefix
|
||||
* @return
|
||||
* 将 Druid JSON 解析为指定类型。
|
||||
* @param content Druid JSON 文本
|
||||
* @param valueType 目标类型
|
||||
* @param <T> 目标类型
|
||||
* @return 解析结果;输入为空时返回 {@code null}
|
||||
*/
|
||||
private <T> T readJson(String content, Class<T> valueType) {
|
||||
return StrUtil.isBlank(content) ? null : JSONUtil.toBean(content, valueType);
|
||||
}
|
||||
|
||||
/**
|
||||
* 拼接远端 Druid 请求地址。
|
||||
* @param parameters Druid 请求参数
|
||||
* @param serviceNode 目标服务节点
|
||||
* @param prefix Druid 接口路径
|
||||
* @return 远端 Druid 请求地址
|
||||
*/
|
||||
private String getRequestUrl(Map<String, String> parameters, ServiceNode serviceNode, String prefix) {
|
||||
StringBuilder stringBuilder = new StringBuilder("http://");
|
||||
@@ -401,9 +423,9 @@ public class MonitorStatService implements DruidStatServiceMBean {
|
||||
}
|
||||
|
||||
/**
|
||||
* 处理请求参数
|
||||
* @param url
|
||||
* @return
|
||||
* 解析 Druid 请求查询参数。
|
||||
* @param url Druid 请求地址
|
||||
* @return 查询参数映射;请求地址为空时返回空映射
|
||||
*/
|
||||
public static Map<String, String> getParameters(String url) {
|
||||
if (url == null || (url = url.trim()).length() == 0) {
|
||||
|
||||
Reference in new issue
Block a user