> statusAgentMapFromAgentStatusMap = buildStatusAgentMapFromAgentStatusMap(initAgentFalseStatusMap);
+
+ // convert
+ statusAgentMapFromAgentStatusMap.entrySet().stream().collect(Collectors.toMap(
+ entry -> entry.getKey(),
+ entry -> String.join(",", entry.getValue())
+ ));
+ // add time
+// statusAgentMapFromAgentStatusMap.put(STATUS_UPDATE_TIME_KEY, );
+// statusAgentMapFromAgentStatusMap.put(STATUS_UPDATE_TIME_KEY, currentFormatTimeString);
+
}
@@ -98,7 +164,7 @@ public class CommonAndStatusCache {
*
* 2023年7月10日 写入Redis中保存一份
*/
- public void updateAllAgentTopicNameCache() {
+ public void commonUpdateAllAgentTopicNameCache() {
//查询DB
List allAgentInfo = coreServerService.serverGetAll();
@@ -119,21 +185,22 @@ public class CommonAndStatusCache {
ALL_AGENT_TOPIC_NAME_LIST.addAll(collect);
ALL_AGENT_TOPIC_NAME_SET.addAll(collect);
+ Jedis jedis = jedisPool.getResource();
+
+ if (jedis.exists(ALL_AGENT_TOPIC_NAME_SET_REDIS_KEY)) {
+ jedis.del(ALL_AGENT_TOPIC_NAME_SET_REDIS_KEY);
+ }
+
String[] all_agent_topic_name_array = new String[ALL_AGENT_TOPIC_NAME_LIST.size()];
ALL_AGENT_TOPIC_NAME_LIST.toArray(all_agent_topic_name_array);
- // 2023年7月10日 同步缓存至Redis中
- redisTemplate
- .opsForSet()
- .add(
- ALL_AGENT_TOPIC_NAME_REDIS_KEY,
- all_agent_topic_name_array
- );
-
+ jedis.sadd(ALL_AGENT_TOPIC_NAME_SET_REDIS_KEY, all_agent_topic_name_array);
}
/**
+ * COMMON-USAGE
+ *
* 根据传入的状态Map更新二级缓存的两个状态Map和健康主机的列表
* ALL_AGENT_STATUS_MAP
* STATUS_AGENT_LIST_MAP
@@ -189,6 +256,11 @@ public class CommonAndStatusCache {
STATUS_UPDATE_TIME_KEY,
Collections.singletonList(timeString)
);
+ // 2023年12月22日
+ ALL_AGENT_STATUS_MAP.put(
+ STATUS_UPDATE_TIME_KEY,
+ Boolean.TRUE
+ );
// 缓存相应的存活Agent
List allHealthyAgentTopicNames = agentAliveStatusMap
@@ -213,12 +285,59 @@ public class CommonAndStatusCache {
ALL_AGENT_STATUS_MAP
);
+
+ // 2023年12月22日 add
+ Jedis jedis = jedisPool.getResource();
+
+ if (jedis.exists(ALL_AGENT_HEALTHY_MAP_REDIS_KEY)) {
+ // get the old cache
+ //Map all_agent_healthy_map_old = jedis.hgetAll(ALL_AGENT_HEALTHY_MAP_REDIS_KEY);
+ // del the old
+ jedis.del(ALL_AGENT_HEALTHY_MAP_REDIS_KEY);
+ }
+
+ if (jedis.exists(ALL_STATUS_AGENT_MAP_REDIS_KEY)) {
+ jedis.del(ALL_STATUS_AGENT_MAP_REDIS_KEY);
+ }
+
// help gc
agentAliveStatusMap = null;
statusAgentListMap = null;
allHealthyAgentTopicNames = null;
}
+ private Map> buildStatusAgentMapFromAgentStatusMap(Map agentStatusMap) {
+
+ // 2023-01-16 2023年12月22日
+ // 更新 状态-Agent容器 内容为
+ // HEALTHY -> ["agentTopicName-1", "agentTopicName-2"]
+ // FAILED -> ["agentTopicName-1", "agentTopicName-2"]
+ Map> statusAgentListMap = agentStatusMap
+ .entrySet()
+ .stream()
+ .collect(
+ Collectors.groupingBy(
+ Map.Entry::getValue
+ )
+ )
+ .entrySet()
+ .stream()
+ .collect(
+ Collectors.toMap(
+ entry -> entry.getKey() ? "HEALTHY" : "FAILED",
+ entry -> entry
+ .getValue()
+ .stream()
+ .map(
+ Map.Entry::getKey
+ )
+ .collect(Collectors.toList())
+ )
+ );
+
+ return statusAgentListMap;
+ }
+
private String uniformHealthyStatus(String agentStatus) {
switch (agentStatus) {
case "0":
diff --git a/server/src/main/java/io/wdd/rpc/status/beans/AgentMetric.java b/server/src/main/java/io/wdd/rpc/status/beans/AgentMetric.java
new file mode 100644
index 0000000..421d828
--- /dev/null
+++ b/server/src/main/java/io/wdd/rpc/status/beans/AgentMetric.java
@@ -0,0 +1,28 @@
+package io.wdd.rpc.status.beans;
+
+import com.fasterxml.jackson.annotation.JsonProperty;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+import java.util.List;
+
+@NoArgsConstructor
+@Data
+public class AgentMetric {
+
+ @JsonProperty("CPUMetric")
+ private CPUMetric cpuMetric;
+
+ @JsonProperty("MemoryMetric")
+ private MemoryMetric memoryMetric;
+
+ @JsonProperty("NetworkMetric")
+ private List networkMetricList;
+
+ @JsonProperty("DiskInfo")
+ private List diskInfoList;
+
+ @JsonProperty("DockerMetric")
+ private DockerMetric dockerMetric;
+
+}
diff --git a/server/src/main/java/io/wdd/rpc/status/beans/AgentStatus.java b/server/src/main/java/io/wdd/rpc/status/beans/AgentStatus.java
deleted file mode 100644
index c6bad73..0000000
--- a/server/src/main/java/io/wdd/rpc/status/beans/AgentStatus.java
+++ /dev/null
@@ -1,23 +0,0 @@
-package io.wdd.rpc.status.beans;
-
-import com.fasterxml.jackson.annotation.JsonProperty;
-import lombok.Data;
-import lombok.NoArgsConstructor;
-
-@NoArgsConstructor
-@Data
-public class AgentStatus {
-
- @JsonProperty("CPUStatus")
- private CPUStatus cpuStatus;
-
- @JsonProperty("MemoryStatus")
- private MemoryStatus memoryStatus;
-
- @JsonProperty("NetworkStatus")
- private NetworkStatus networkStatus;
-
- @JsonProperty("DiskStatus")
- private DiskStatus diskStatus;
-
-}
diff --git a/server/src/main/java/io/wdd/rpc/status/beans/CPUMetric.java b/server/src/main/java/io/wdd/rpc/status/beans/CPUMetric.java
new file mode 100644
index 0000000..4c01b14
--- /dev/null
+++ b/server/src/main/java/io/wdd/rpc/status/beans/CPUMetric.java
@@ -0,0 +1,53 @@
+package io.wdd.rpc.status.beans;
+
+import com.fasterxml.jackson.annotation.JsonProperty;
+import lombok.AllArgsConstructor;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+import lombok.experimental.SuperBuilder;
+
+@Data
+@AllArgsConstructor
+@NoArgsConstructor
+@SuperBuilder(toBuilder = true)
+public class CPUMetric {
+
+ /**
+ * numCores
+ */
+ @JsonProperty("NumCores")
+ private Integer numCores;
+ /**
+ * cPUPercent
+ */
+ @JsonProperty("CPUPercent")
+ private Double cPUPercent;
+ /**
+ * cPULoads
+ */
+ @JsonProperty("CPULoads")
+ private CPULoadsDTO cPULoads;
+
+ /**
+ * CPULoadsDTO
+ */
+ @NoArgsConstructor
+ @Data
+ public static class CPULoadsDTO {
+ /**
+ * load1
+ */
+ @JsonProperty("load1")
+ private Double load1;
+ /**
+ * load5
+ */
+ @JsonProperty("load5")
+ private Double load5;
+ /**
+ * load15
+ */
+ @JsonProperty("load15")
+ private Double load15;
+ }
+}
diff --git a/server/src/main/java/io/wdd/rpc/status/beans/CPUStatus.java b/server/src/main/java/io/wdd/rpc/status/beans/CPUStatus.java
deleted file mode 100644
index 40532c1..0000000
--- a/server/src/main/java/io/wdd/rpc/status/beans/CPUStatus.java
+++ /dev/null
@@ -1,81 +0,0 @@
-package io.wdd.rpc.status.beans;
-
-import com.fasterxml.jackson.annotation.JsonProperty;
-import lombok.AllArgsConstructor;
-import lombok.Data;
-import lombok.NoArgsConstructor;
-import lombok.experimental.SuperBuilder;
-
-import java.util.List;
-
-@Data
-@AllArgsConstructor
-@NoArgsConstructor
-@SuperBuilder(toBuilder = true)
-public class CPUStatus {
-
-
- @JsonProperty("NumCores")
- private Integer numCores;
- @JsonProperty("CPUInfo")
- private List cPUInfo;
- @JsonProperty("CPUPercent")
- private Double cPUPercent;
- @JsonProperty("CPULoads")
- private CPULoadsDTO cPULoads;
- @JsonProperty("SystemLoads")
- private SystemLoadsDTO systemLoads;
-
- @NoArgsConstructor
- @Data
- public static class CPULoadsDTO {
- @JsonProperty("load1")
- private Integer load1;
- @JsonProperty("load5")
- private Integer load5;
- @JsonProperty("load15")
- private Integer load15;
- }
-
- @NoArgsConstructor
- @Data
- public static class SystemLoadsDTO {
- @JsonProperty("load1")
- private Integer load1;
- @JsonProperty("load5")
- private Integer load5;
- @JsonProperty("load15")
- private Integer load15;
- }
-
- @NoArgsConstructor
- @Data
- public static class CPUInfoDTO {
- @JsonProperty("cpu")
- private Integer cpu;
- @JsonProperty("vendorId")
- private String vendorId;
- @JsonProperty("family")
- private String family;
- @JsonProperty("model")
- private String model;
- @JsonProperty("stepping")
- private Integer stepping;
- @JsonProperty("physicalId")
- private String physicalId;
- @JsonProperty("coreId")
- private String coreId;
- @JsonProperty("cores")
- private Integer cores;
- @JsonProperty("modelName")
- private String modelName;
- @JsonProperty("mhz")
- private Integer mhz;
- @JsonProperty("cacheSize")
- private Integer cacheSize;
- @JsonProperty("flags")
- private List> flags;
- @JsonProperty("microcode")
- private String microcode;
- }
-}
diff --git a/server/src/main/java/io/wdd/rpc/status/beans/DiskInfo.java b/server/src/main/java/io/wdd/rpc/status/beans/DiskInfo.java
new file mode 100644
index 0000000..7a6da87
--- /dev/null
+++ b/server/src/main/java/io/wdd/rpc/status/beans/DiskInfo.java
@@ -0,0 +1,47 @@
+package io.wdd.rpc.status.beans;
+
+import com.fasterxml.jackson.annotation.JsonProperty;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+@NoArgsConstructor
+@Data
+public class DiskInfo {
+
+
+ /**
+ * device
+ */
+ @JsonProperty("device")
+ private String device;
+ /**
+ * mountpoint
+ */
+ @JsonProperty("mountpoint")
+ private String mountpoint;
+ /**
+ * fstype
+ */
+ @JsonProperty("fstype")
+ private String fstype;
+ /**
+ * total
+ */
+ @JsonProperty("total")
+ private Long total;
+ /**
+ * free
+ */
+ @JsonProperty("free")
+ private Long free;
+ /**
+ * used
+ */
+ @JsonProperty("used")
+ private Long used;
+ /**
+ * usedPercent
+ */
+ @JsonProperty("usedPercent")
+ private Double usedPercent;
+}
diff --git a/server/src/main/java/io/wdd/rpc/status/beans/DiskStatus.java b/server/src/main/java/io/wdd/rpc/status/beans/DiskStatus.java
deleted file mode 100644
index d58aa3b..0000000
--- a/server/src/main/java/io/wdd/rpc/status/beans/DiskStatus.java
+++ /dev/null
@@ -1,30 +0,0 @@
-package io.wdd.rpc.status.beans;
-
-import com.fasterxml.jackson.annotation.JsonProperty;
-import lombok.Data;
-import lombok.NoArgsConstructor;
-
-@NoArgsConstructor
-@Data
-public class DiskStatus {
-
- @JsonProperty("Total")
- private Long total;
- @JsonProperty("Used")
- private Long used;
-// @JsonProperty("LogicalDisk")
-// private List logicalDisk;
-
-// @NoArgsConstructor
-// @Data
-// public static class LogicalDiskDTO {
-// @JsonProperty("device")
-// private String device;
-// @JsonProperty("mountpoint")
-// private String mountpoint;
-// @JsonProperty("fstype")
-// private String fstype;
-// @JsonProperty("opts")
-// private List opts;
-// }
-}
diff --git a/server/src/main/java/io/wdd/rpc/status/beans/DockerMetric.java b/server/src/main/java/io/wdd/rpc/status/beans/DockerMetric.java
new file mode 100644
index 0000000..bcec462
--- /dev/null
+++ b/server/src/main/java/io/wdd/rpc/status/beans/DockerMetric.java
@@ -0,0 +1,52 @@
+package io.wdd.rpc.status.beans;
+
+import com.fasterxml.jackson.annotation.JsonProperty;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+import java.util.List;
+
+@NoArgsConstructor
+@Data
+public class DockerMetric {
+
+
+ /**
+ * dockerStats
+ */
+ @JsonProperty("DockerStats")
+ private List dockerStats;
+
+ /**
+ * DockerStatsDTO
+ */
+ @NoArgsConstructor
+ @Data
+ public static class DockerStatsDTO {
+ /**
+ * containerID
+ */
+ @JsonProperty("containerID")
+ private String containerID;
+ /**
+ * name
+ */
+ @JsonProperty("name")
+ private String name;
+ /**
+ * image
+ */
+ @JsonProperty("image")
+ private String image;
+ /**
+ * status
+ */
+ @JsonProperty("status")
+ private String status;
+ /**
+ * running
+ */
+ @JsonProperty("running")
+ private Boolean running;
+ }
+}
diff --git a/server/src/main/java/io/wdd/rpc/status/beans/MemoryStatus.java b/server/src/main/java/io/wdd/rpc/status/beans/MemoryMetric.java
similarity index 53%
rename from server/src/main/java/io/wdd/rpc/status/beans/MemoryStatus.java
rename to server/src/main/java/io/wdd/rpc/status/beans/MemoryMetric.java
index c16e8ba..7f4585a 100644
--- a/server/src/main/java/io/wdd/rpc/status/beans/MemoryStatus.java
+++ b/server/src/main/java/io/wdd/rpc/status/beans/MemoryMetric.java
@@ -6,16 +6,33 @@ import lombok.NoArgsConstructor;
@NoArgsConstructor
@Data
-public class MemoryStatus {
+public class MemoryMetric {
+
+ /**
+ * totalMemory
+ */
@JsonProperty("TotalMemory")
private Long totalMemory;
- @JsonProperty("UsedMemory")
- private Long usedMemory;
+ /**
+ * availableMemory
+ */
@JsonProperty("AvailableMemory")
private Long availableMemory;
- @JsonProperty("TotalVirtualMemory")
- private Long totalVirtualMemory;
- @JsonProperty("UsedVirtualMemory")
- private Long usedVirtualMemory;
+ /**
+ * usedMemory
+ */
+ @JsonProperty("UsedMemory")
+ private Long usedMemory;
+ /**
+ * usedPercent
+ */
+ @JsonProperty("usedPercent")
+ private Double usedPercent;
+ /**
+ * free
+ */
+ @JsonProperty("free")
+ private Long free;
+
}
diff --git a/server/src/main/java/io/wdd/rpc/status/beans/NetworkMetric.java b/server/src/main/java/io/wdd/rpc/status/beans/NetworkMetric.java
new file mode 100644
index 0000000..6cf7886
--- /dev/null
+++ b/server/src/main/java/io/wdd/rpc/status/beans/NetworkMetric.java
@@ -0,0 +1,80 @@
+package io.wdd.rpc.status.beans;
+
+import com.fasterxml.jackson.annotation.JsonProperty;
+import lombok.AllArgsConstructor;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+import lombok.experimental.SuperBuilder;
+
+@NoArgsConstructor
+@Data
+@AllArgsConstructor
+@SuperBuilder(toBuilder = true)
+public class NetworkMetric {
+
+ /**
+ * name
+ */
+ @JsonProperty("name")
+ private String name;
+ /**
+ * bytesSent
+ */
+ @JsonProperty("bytesSent")
+ private Integer bytesSent;
+ /**
+ * bytesRecv
+ */
+ @JsonProperty("bytesRecv")
+ private Integer bytesRecv;
+ /**
+ * packetsSent
+ */
+ @JsonProperty("packetsSent")
+ private Integer packetsSent;
+ /**
+ * packetsRecv
+ */
+ @JsonProperty("packetsRecv")
+ private Integer packetsRecv;
+ /**
+ * errin
+ */
+ @JsonProperty("errin")
+ private Integer errin;
+ /**
+ * errout
+ */
+ @JsonProperty("errout")
+ private Integer errout;
+ /**
+ * dropin
+ */
+ @JsonProperty("dropin")
+ private Integer dropin;
+ /**
+ * dropout
+ */
+ @JsonProperty("dropout")
+ private Integer dropout;
+ /**
+ * fifoin
+ */
+ @JsonProperty("fifoin")
+ private Integer fifoin;
+ /**
+ * fifoout
+ */
+ @JsonProperty("fifoout")
+ private Integer fifoout;
+ /**
+ * sendSpeed
+ */
+ @JsonProperty("SendSpeed")
+ private Double sendSpeed;
+ /**
+ * recvSpeed
+ */
+ @JsonProperty("RecvSpeed")
+ private Double recvSpeed;
+}
diff --git a/server/src/main/java/io/wdd/rpc/status/beans/NetworkStatus.java b/server/src/main/java/io/wdd/rpc/status/beans/NetworkStatus.java
deleted file mode 100644
index 66489d1..0000000
--- a/server/src/main/java/io/wdd/rpc/status/beans/NetworkStatus.java
+++ /dev/null
@@ -1,33 +0,0 @@
-package io.wdd.rpc.status.beans;
-
-import com.fasterxml.jackson.annotation.JsonProperty;
-import lombok.AllArgsConstructor;
-import lombok.Data;
-import lombok.NoArgsConstructor;
-import lombok.experimental.SuperBuilder;
-
-import java.util.List;
-
-@NoArgsConstructor
-@Data
-@AllArgsConstructor
-@SuperBuilder(toBuilder = true)
-public class NetworkStatus {
-
- @JsonProperty("name")
- private String name;
- @JsonProperty("internal_ip_v4")
- private List internalIpV4;
- @JsonProperty("internal_ip_v6")
- private List internalIpV6;
- @JsonProperty("mac")
- private String mac;
- @JsonProperty("sent")
- private Long sent;
- @JsonProperty("recv")
- private Long recv;
- @JsonProperty("sent_rate")
- private String sentRate;
- @JsonProperty("recv_rate")
- private String recvRate;
-}
diff --git a/server/src/main/java/io/wdd/rpc/status/service/SyncStatusService.java b/server/src/main/java/io/wdd/rpc/status/service/SyncStatusService.java
index d9bc4c5..292f4dd 100644
--- a/server/src/main/java/io/wdd/rpc/status/service/SyncStatusService.java
+++ b/server/src/main/java/io/wdd/rpc/status/service/SyncStatusService.java
@@ -1,7 +1,7 @@
package io.wdd.rpc.status.service;
import io.wdd.rpc.beans.request.MetricQueryEntity;
-import io.wdd.rpc.status.beans.AgentStatus;
+import io.wdd.rpc.status.beans.AgentMetric;
import java.util.ArrayList;
import java.util.List;
@@ -16,7 +16,7 @@ public interface SyncStatusService {
* @param aliveStatusWaitMaxTime
* @return
*/
- Map SyncCollectAgentAliveStatus(List agentTopicNameList, int aliveStatusWaitMaxTime);
+ Map SyncCheckAgentIsAlive(List agentTopicNameList, int aliveStatusWaitMaxTime);
/**
* 同步收集 节点的运行状态
@@ -25,7 +25,7 @@ public interface SyncStatusService {
* @param collectMetricWaitMaxTime
* @return
*/
- Map SyncCollectAgentMetricStatus(List agentTopicNameList, int collectMetricWaitMaxTime);
+ Map SyncCollectAgentMetricStatus(List agentTopicNameList, int collectMetricWaitMaxTime);
/* Metric 调用的后端接口 */
@@ -35,6 +35,6 @@ public interface SyncStatusService {
*
* @return
*/
- ArrayList QueryMetricStatus(MetricQueryEntity metricQueryEntity);
+ ArrayList QueryMetricStatus(MetricQueryEntity metricQueryEntity);
}
diff --git a/server/src/main/java/io/wdd/server/beans/po/ServerInfoPO.java b/server/src/main/java/io/wdd/server/beans/po/ServerInfoPO.java
index b1ac154..3514f09 100644
--- a/server/src/main/java/io/wdd/server/beans/po/ServerInfoPO.java
+++ b/server/src/main/java/io/wdd/server/beans/po/ServerInfoPO.java
@@ -19,7 +19,7 @@ public class ServerInfoPO implements Serializable {
/**
* server primary key
*/
- @TableId(value = "server_id", type = IdType.ASSIGN_ID)
+ @TableId(value = "server_id", type = IdType.AUTO)
private Long serverId;
/**
diff --git a/server/src/main/java/io/wdd/server/coreService/CoreServerService.java b/server/src/main/java/io/wdd/server/coreService/CoreServerService.java
index 27496c3..5bd7656 100644
--- a/server/src/main/java/io/wdd/server/coreService/CoreServerService.java
+++ b/server/src/main/java/io/wdd/server/coreService/CoreServerService.java
@@ -14,6 +14,7 @@ public interface CoreServerService {
List serverGetSingle(String serverName, String ipv4, String serverLocation);
+ // list all server that are not deleted
List serverGetAll();
/**
diff --git a/server/src/main/resources/application.yml b/server/src/main/resources/application.yml
index 7b6449e..4c70e46 100644
--- a/server/src/main/resources/application.yml
+++ b/server/src/main/resources/application.yml
@@ -27,31 +27,23 @@ spring:
port: 21370
database: 0
password: boge8tingH
- # cluster:
- # nodes:
- # - 43.154.83.213:21370
- # - 43.154.83.213:21371
- # - 43.154.83.213:21372
- # - 43.154.83.213:21373
- # - 43.154.83.213:21374
- # - 43.154.83.213:21375
- # # 获取失败 最大重定向次数
# max-redirects: 3
- # timeout: 50000
+ timeout: 50000
#如果用以前的jedis,可以把下面的lettuce换成jedis即可
- lettuce:
+ jedis:
pool:
# 连接池最大连接数默认值为8
max-active: 16
# 连接池最大阻塞时间(使用负值表示没有限制)默认值为-1
- max-wait: -1
+ max-wait: 1000
# 连接池中最大空闲连接数默认值为8
- max-idle: 10
+ max-idle: 16
# 连接池中的最小空闲连接数,默认值为0
- min-idle: 10
+ min-idle: 4
time-between-eviction-runs: 50000
+
datasource:
driver-class-name: com.mysql.cj.jdbc.Driver
url: jdbc:mysql://10.250.0.100:21306/octopus_server?autoReconnect=true&useSSL=false&useUnicode=true&characterEncoding=UTF-8&serverTimezone=GMT%2B8
diff --git a/server/src/test/java/io/wdd/server/func/TestBaseFuncScheduler.java b/server/src/test/java/io/wdd/server/func/TestBaseFuncScheduler.java
index 99e1e6d..1326cd3 100644
--- a/server/src/test/java/io/wdd/server/func/TestBaseFuncScheduler.java
+++ b/server/src/test/java/io/wdd/server/func/TestBaseFuncScheduler.java
@@ -55,7 +55,7 @@ public class TestBaseFuncScheduler {
// baseFuncScheduler.runProcedure(projectDeployContext);
-// harborFuncScheduler.runProcedure(projectDeployContext);
+ harborFuncScheduler.runProcedure(projectDeployContext);
appFuncScheduler.runProcedure(projectDeployContext);
}