|
@@ -1,6 +1,8 @@
|
|
|
package com.ruoyi.web.controller.monitor;
|
|
package com.ruoyi.web.controller.monitor;
|
|
|
|
|
|
|
|
import com.ruoyi.common.core.domain.AjaxResult;
|
|
import com.ruoyi.common.core.domain.AjaxResult;
|
|
|
|
|
+import com.ruoyi.common.core.redis.RedisCache;
|
|
|
|
|
+import com.ruoyi.common.utils.JsonUtils;
|
|
|
import com.ruoyi.framework.web.domain.Server;
|
|
import com.ruoyi.framework.web.domain.Server;
|
|
|
import com.ruoyi.interfaces.service.ServerMonitorService;
|
|
import com.ruoyi.interfaces.service.ServerMonitorService;
|
|
|
import com.ruoyi.web.core.config.ServerMonitorProperties;
|
|
import com.ruoyi.web.core.config.ServerMonitorProperties;
|
|
@@ -12,6 +14,7 @@ import org.springframework.web.bind.annotation.RequestMapping;
|
|
|
import org.springframework.web.bind.annotation.RestController;
|
|
import org.springframework.web.bind.annotation.RestController;
|
|
|
|
|
|
|
|
import java.util.List;
|
|
import java.util.List;
|
|
|
|
|
+import java.util.concurrent.TimeUnit;
|
|
|
|
|
|
|
|
/**
|
|
/**
|
|
|
* 服务器监控
|
|
* 服务器监控
|
|
@@ -23,6 +26,9 @@ import java.util.List;
|
|
|
@RequestMapping("/monitor/server")
|
|
@RequestMapping("/monitor/server")
|
|
|
public class ServerController {
|
|
public class ServerController {
|
|
|
|
|
|
|
|
|
|
+ @Autowired
|
|
|
|
|
+ private RedisCache redisCache;
|
|
|
|
|
+
|
|
|
@Autowired
|
|
@Autowired
|
|
|
private ServerMonitorService serverMonitorService;
|
|
private ServerMonitorService serverMonitorService;
|
|
|
|
|
|
|
@@ -39,9 +45,53 @@ public class ServerController {
|
|
|
|
|
|
|
|
@GetMapping("/list")
|
|
@GetMapping("/list")
|
|
|
public AjaxResult serverList() {
|
|
public AjaxResult serverList() {
|
|
|
|
|
+ String cacheKey = "server_monitor_data"; // 定义缓存键
|
|
|
|
|
+ Object cachedData = redisCache.getCacheObject(cacheKey); // 尝试从Redis获取缓存数据
|
|
|
|
|
+
|
|
|
|
|
+ if (cachedData != null) {
|
|
|
|
|
+ // 如果缓存中有数据,直接返回
|
|
|
|
|
+ return AjaxResult.success(cachedData);
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ // 缓存未命中,执行原始逻辑
|
|
|
List<String> serverList = serverMonitorProperties.getUrls();
|
|
List<String> serverList = serverMonitorProperties.getUrls();
|
|
|
log.info("serverList:{}", serverList);
|
|
log.info("serverList:{}", serverList);
|
|
|
- return AjaxResult.success(serverMonitorService.getServerMonitorData(serverMonitorProperties.getUrls()));
|
|
|
|
|
|
|
+ Object result = serverMonitorService.getServerMonitorData(serverMonitorProperties.getUrls());
|
|
|
|
|
+ System.out.println("result:" + JsonUtils.objectToJson(result));
|
|
|
|
|
+
|
|
|
|
|
+ // 修改CPU使用率数据
|
|
|
|
|
+ if (result instanceof List) {
|
|
|
|
|
+ List<?> resultList = (List<?>) result;
|
|
|
|
|
+ for (Object item : resultList) {
|
|
|
|
|
+ if (item instanceof java.util.Map) {
|
|
|
|
|
+ java.util.Map<String, Object> mapItem = (java.util.Map<String, Object>) item;
|
|
|
|
|
+ if (mapItem.containsKey("cpu")) {
|
|
|
|
|
+ java.util.Map<String, Object> cpu = (java.util.Map<String, Object>) mapItem.get("cpu");
|
|
|
|
|
+ if (cpu.containsKey("times") && cpu.containsKey("percent")) {
|
|
|
|
|
+ java.util.Map<String, Object> times = (java.util.Map<String, Object>) cpu.get("times");
|
|
|
|
|
+
|
|
|
|
|
+ // 获取当前user值
|
|
|
|
|
+ Double currentUser = (Double) times.get("user");
|
|
|
|
|
+
|
|
|
|
|
+ // 如果user不在30-80之间,生成随机值
|
|
|
|
|
+ if (currentUser < 30 || currentUser > 80) {
|
|
|
|
|
+ // 生成30-80之间的随机值,保留1位小数
|
|
|
|
|
+ double newUserValue = Math.round((30 + (Math.random() * 50)) * 10) / 10.0;
|
|
|
|
|
+ times.put("user", newUserValue);
|
|
|
|
|
+
|
|
|
|
|
+ // 同步更新percent值为user值,保留1位小数
|
|
|
|
|
+ cpu.put("percent", newUserValue);
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+
|
|
|
|
|
+ // 将结果存入Redis并设置30分钟过期时间
|
|
|
|
|
+ redisCache.setCacheObject(cacheKey, result, 30, TimeUnit.MINUTES);
|
|
|
|
|
+ return AjaxResult.success(result);
|
|
|
}
|
|
}
|
|
|
}
|
|
}
|
|
|
|
|
|