|
...
|
...
|
@@ -11,9 +11,12 @@ import com.ruoyi.common.utils.GsonConstructor; |
|
|
|
import com.ruoyi.common.utils.ServletUtils;
|
|
|
|
import com.ruoyi.common.utils.ip.IpUtils;
|
|
|
|
import com.ruoyi.framework.web.domain.Server;
|
|
|
|
import com.ruoyi.system.domain.sys.SysMonitorApplication;
|
|
|
|
import com.ruoyi.system.domain.sys.SysMonitorApplicationLog;
|
|
|
|
import com.ruoyi.system.domain.sys.SysMonitorServer;
|
|
|
|
import com.ruoyi.system.domain.sys.SysMonitorServerLog;
|
|
|
|
import com.zhonglai.luhui.action.BaseController;
|
|
|
|
import com.zhonglai.luhui.admin.dto.MonitorServerUploadApplicationDto;
|
|
|
|
import com.zhonglai.luhui.admin.dto.MonitorServerUploadDto;
|
|
|
|
import com.zhonglai.luhui.admin.qywx.AesException;
|
|
|
|
import com.zhonglai.luhui.admin.qywx.QyWxApplication;
|
|
...
|
...
|
@@ -26,6 +29,7 @@ import io.swagger.annotations.ApiOperation; |
|
|
|
import org.springframework.beans.factory.annotation.Autowired;
|
|
|
|
import org.springframework.scheduling.concurrent.ThreadPoolTaskExecutor;
|
|
|
|
import org.springframework.security.access.prepost.PreAuthorize;
|
|
|
|
import org.springframework.transaction.annotation.Transactional;
|
|
|
|
import org.springframework.util.StreamUtils;
|
|
|
|
import org.springframework.web.bind.annotation.*;
|
|
|
|
import org.w3c.dom.Document;
|
|
...
|
...
|
@@ -73,6 +77,7 @@ public class ServerController extends BaseController |
|
|
|
}
|
|
|
|
|
|
|
|
@ApiOperation("上传状态")
|
|
|
|
@Transactional
|
|
|
|
@PostMapping("/upload")
|
|
|
|
public AjaxResult upload(@RequestBody MonitorServerUploadDto monitorServerUploadDto)
|
|
|
|
{
|
|
...
|
...
|
@@ -84,12 +89,30 @@ public class ServerController extends BaseController |
|
|
|
sysMonitorServer.setIp(ip+"("+monitorServerUploadDto.getLocalip()+")");
|
|
|
|
}
|
|
|
|
Long st = publicService.getObjectListTotle(sysMonitorServer, null);
|
|
|
|
sysMonitorServer.setCpu_usage(new Double(monitorServerUploadDto.getCpu_usage()*100).intValue());
|
|
|
|
sysMonitorServer.setConnection_count(monitorServerUploadDto.getConnection_count());
|
|
|
|
sysMonitorServer.setMemory_usage(new Double(monitorServerUploadDto.getMemory_usage()*100).intValue());
|
|
|
|
sysMonitorServer.setDisk_usage(new Double(monitorServerUploadDto.getDisk_usage()*100).intValue());
|
|
|
|
sysMonitorServer.setCpu_info(tranPsAux(monitorServerUploadDto.getCpu_info()));
|
|
|
|
sysMonitorServer.setMemory_info(tranPsAux(monitorServerUploadDto.getMemory_info()));
|
|
|
|
if(null != monitorServerUploadDto.getCpu_usage())
|
|
|
|
{
|
|
|
|
sysMonitorServer.setCpu_usage(new Double(monitorServerUploadDto.getCpu_usage()*100).intValue());
|
|
|
|
}
|
|
|
|
if(null != monitorServerUploadDto.getConnection_count())
|
|
|
|
{
|
|
|
|
sysMonitorServer.setConnection_count(monitorServerUploadDto.getConnection_count());
|
|
|
|
}
|
|
|
|
if(null != monitorServerUploadDto.getMemory_usage())
|
|
|
|
{
|
|
|
|
sysMonitorServer.setMemory_usage(new Double(monitorServerUploadDto.getMemory_usage()*100).intValue());
|
|
|
|
}
|
|
|
|
if(null != monitorServerUploadDto.getDisk_usage())
|
|
|
|
{
|
|
|
|
sysMonitorServer.setDisk_usage(new Double(monitorServerUploadDto.getDisk_usage()*100).intValue());
|
|
|
|
}
|
|
|
|
if (null != monitorServerUploadDto.getCpu_info())
|
|
|
|
{
|
|
|
|
sysMonitorServer.setCpu_info(tranPsAux(monitorServerUploadDto.getCpu_info()));
|
|
|
|
}
|
|
|
|
if (null != monitorServerUploadDto.getMemory_info())
|
|
|
|
{
|
|
|
|
sysMonitorServer.setMemory_info(tranPsAux(monitorServerUploadDto.getMemory_info()));
|
|
|
|
}
|
|
|
|
|
|
|
|
if(st==0)
|
|
|
|
{
|
|
...
|
...
|
@@ -110,6 +133,48 @@ public class ServerController extends BaseController |
|
|
|
return AjaxResult.success();
|
|
|
|
}
|
|
|
|
|
|
|
|
@ApiOperation("上传应用状态")
|
|
|
|
@Transactional
|
|
|
|
@PostMapping("/uploadApplication")
|
|
|
|
public AjaxResult uploadApplication(@RequestBody MonitorServerUploadApplicationDto monitorServerUploadApplicationDto)
|
|
|
|
{
|
|
|
|
String ip = IpUtils.getIpAddr(ServletUtils.getRequest());
|
|
|
|
|
|
|
|
for(SysMonitorApplication sysMonitorApplication:monitorServerUploadApplicationDto.getData())
|
|
|
|
{
|
|
|
|
SysMonitorApplication selectSysMonitorApplication = publicService.getObject(SysMonitorApplication.class,"remoteIp,name", ip+","+sysMonitorApplication.getName());
|
|
|
|
sysMonitorApplication.setRemoteIp(ip);
|
|
|
|
if(null == selectSysMonitorApplication)
|
|
|
|
{
|
|
|
|
publicService.insert(sysMonitorApplication);
|
|
|
|
}else {
|
|
|
|
sysMonitorApplication.setId(selectSysMonitorApplication.getId());
|
|
|
|
publicService.updateObject(sysMonitorApplication,"id");
|
|
|
|
}
|
|
|
|
SysMonitorApplicationLog sysMonitorApplicationLog = JSONObject.parseObject(JSONObject.toJSONString(sysMonitorApplication),SysMonitorApplicationLog.class);
|
|
|
|
sysMonitorApplicationLog.setId(null);
|
|
|
|
sysMonitorApplicationLog.setMonitorApplicationId(sysMonitorApplication.getId());
|
|
|
|
publicService.insert(sysMonitorApplicationLog);
|
|
|
|
}
|
|
|
|
return AjaxResult.success();
|
|
|
|
}
|
|
|
|
@ApiOperation("获取服务器应用列表")
|
|
|
|
@GetMapping("/getServiceAoolicationList")
|
|
|
|
public Map<String,Object> getServiceAoolicationList()
|
|
|
|
{
|
|
|
|
String ip = IpUtils.getIpAddr(ServletUtils.getRequest());
|
|
|
|
List<Map<String,Object>> list = publicService.getObjectListBySQL("SELECT GROUP_CONCAT(`name`) processes FROM `sys_monitor_application` WHERE remote_ip='"+ip+"' GROUP BY remote_ip");
|
|
|
|
Map<String,Object> map = new HashMap<>();
|
|
|
|
map.put("processes","");
|
|
|
|
if(null != list && list.size()>0)
|
|
|
|
{
|
|
|
|
String pprocesses = list.get(0).get("processes").toString();
|
|
|
|
map.put("processes",pprocesses.split(","));
|
|
|
|
}
|
|
|
|
return map;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
private String tranPsAux(String princmd)
|
|
|
|
{
|
|
|
|
String[] auxs = princmd.split(";");
|
|
...
|
...
|
@@ -211,6 +276,26 @@ public class ServerController extends BaseController |
|
|
|
return getDataTable(list);
|
|
|
|
}
|
|
|
|
|
|
|
|
@ApiOperation("获取应用状态列表")
|
|
|
|
@GetMapping("/getSysMonitorApplicationList")
|
|
|
|
public TableDataInfo getSysMonitorApplicationList(SysMonitorApplication sysMonitorApplication) throws Exception
|
|
|
|
{
|
|
|
|
startPage();
|
|
|
|
startOrderBy();
|
|
|
|
List<Map<String,Object>> list = publicService.getObjectList(sysMonitorApplication,"*",null,null,0,0);
|
|
|
|
return getDataTable(list);
|
|
|
|
}
|
|
|
|
|
|
|
|
@ApiOperation("获取应用状态记录列表")
|
|
|
|
@GetMapping("/getSysMonitorApplicationLogList")
|
|
|
|
public TableDataInfo getSysMonitorApplicationLogList(SysMonitorApplicationLog sysMonitorApplicationLog) throws Exception
|
|
|
|
{
|
|
|
|
startPage();
|
|
|
|
startOrderBy();
|
|
|
|
List<Map<String,Object>> list = publicService.getObjectList(sysMonitorApplicationLog,"*",null,null,0,0);
|
|
|
|
return getDataTable(list);
|
|
|
|
}
|
|
|
|
|
|
|
|
@ApiOperation("获取服务器状态曲线")
|
|
|
|
@GetMapping("/getSysMonitorServerLogList")
|
|
|
|
public TableDataInfo getSysMonitorServerLogList(String ip,Long startTime,Long endTime) throws Exception
|
|
...
|
...
|
@@ -233,4 +318,10 @@ public class ServerController extends BaseController |
|
|
|
SysMonitorServerLog sysMonitorServerLog = publicService.getObject(SysMonitorServerLog.class,"id",id+"");
|
|
|
|
return AjaxResult.success(sysMonitorServerLog);
|
|
|
|
}
|
|
|
|
|
|
|
|
public static void main(String[] args) {
|
|
|
|
String str = "{\"data\":[ {\"timestamp\":\"2025-06-25 22:07:01\",\"hostname\":\"iZ28dmbj1ksZ\",\"name\":\"lh-admin.jar\",\"pid\":5603,\"cpu\":3.3,\"mem\":8.2,\"cmd\":\"/root/jdk1.8.0_291/bin/java -jar -Xmx1024M -Xms256M /www/wwwroot/lh-admin/lh-admin.jar --server.port\u003d6257 --spring.config.location\u003d/www/wwwroot/lh-admin/application.yml\",\"status\":\"running\"},{\"timestamp\":\"2025-06-25 22:07:01\",\"hostname\":\"iZ28dmbj1ksZ\",\"name\":\"ly-zhongyu-device-service.jar\",\"pid\":16942,\"cpu\":0.0,\"mem\":0.0,\"cmd\":\"curl -X POST -H Content-Type: application/json -d {\"cpu_usage\": \"66.7\", \"memory_usage\": \"70.85\", \"disk_usage\": \"61\", \"connection_count\": \"105\", \"memory_info\": \"USERfg9527PIDfg9527MEMORY(M)fg9527COMMAND;mysqlfg952715047fg95272665.56Mfg9527/www/server/mysql/bin/mysqld --basedir\u003d/www/server/mysql --datadir\u003d/www/server/data --plugin-dir\u003d/www/server/mysql/lib/plugin --user\u003dmysql --log-error\u003diZ28dmbj1ksZ.err --open-files-limit\u003d65535 --pid-file\u003d/www/server/data/iZ28dmbj1ksZ.pid --socket\u003d/tmp/mysql.sock --port\u003d3306 ;rootfg95275603fg9527648.18Mfg9527/root/jdk1.8.0_291/bin/java -jar -Xmx1024M -Xms256M /www/wwwroot/lh-admin/lh-admin.jar --server.port\u003d6257 --spring.config.location\u003d/www/wwwroot/lh-admin/application.yml ;gitfg952716053fg9527379.48Mfg9527sidekiq 4.1.2 gitlab-rails [0 of 25 busy] ;gitfg952731125fg9527317.29Mfg9527unicorn worker[1] -D -E production -c /var/opt/gitlab/gitlab-rails/etc/unicorn.rb /opt/gitlab/embedded/service/gitlab-rails/config.ru ;gitfg952718271fg9527316.69Mfg9527unicorn worker[2] -D -E production -c /var/opt/gitlab/gitlab-rails/etc/unicorn.rb /opt/gitlab/embedded/service/gitlab-rails/config.ru ;gitfg952716299fg9527315.64Mfg9527unicorn worker[0] -D -E production -c /var/opt/gitlab/gitlab-rails/etc/unicorn.rb /opt/gitlab/embedded/service/gitlab-rails/config.ru ;rootfg952731718fg9527302.00Mfg9527/root/jdk1.8.0_291/bin/java -jar -Xmx512M -Xms256M /www/wwwroot/ly-zhongyu-device-service/ly-zhongyu-device-service.jar --server.port\u003d7624 ;gitfg952716109fg9527265.38Mfg9527unicorn master -D -E production -c /var/opt/gitlab/gitlab-rails/etc/unicorn.rb /opt/gitlab/embedded/service/gitlab-rails/config.ru ;gitlab-+fg952716056fg952768.73Mfg9527/opt/gitlab/embedded/bin/postgres -D /var/opt/gitlab/postgresql/data ;rootfg952728865fg952768.66Mfg9527/www/server/panel/pyenv/bin/python3 /www/server/panel/BT-Panel ;\", \"cpu_info\": \"USERfg9527PIDfg9527CPU(%)fg9527COMMAND;rootfg952732008fg95273.40%fg9527/usr/local/aegis/aegis_client/aegis_12_53/AliYunDunMonitor ;rootfg95275603fg95273.30%fg9527/root/jdk1.8.0_291/bin/java -jar -Xmx1024M -Xms256M /www/wwwroot/lh-admin/lh-admin.jar --server.port\u003d6257 --spring.config.location\u003d/www/wwwroot/lh-admin/application.yml ;rootfg952731830fg95271.00%fg9527/usr/local/aegis/aegis_client/aegis_12_53/AliYunDun ;gitfg952716299fg95270.60%fg9527unicorn worker[0] -D -E production -c /var/opt/gitlab/gitlab-rails/etc/unicorn.rb /opt/gitlab/embedded/service/gitlab-rails/config.ru ;gitfg952718271fg95270.60%fg9527unicorn worker[2] -D -E production -c /var/opt/gitlab/gitlab-rails/etc/unicorn.rb /opt/gitlab/embedded/service/gitlab-rails/config.ru ;gitfg952731125fg95270.60%fg9527unicorn worker[1] -D -E production -c /var/opt/gitlab/gitlab-rails/etc/unicorn.rb /opt/gitlab/embedded/service/gitlab-rails/config.ru ;gitfg952716053fg95270.50%fg9527sidekiq 4.1.2 gitlab-rails [0 of 25 busy] ;rootfg952731718fg95270.20%fg9527/root/jdk1.8.0_291/bin/java -jar -Xmx512M -Xms256M /www/wwwroot/ly-zhongyu-device-service/ly-zhongyu-device-service.jar --server.port\u003d7624 ;rootfg95279fg95270.10%fg9527[rcu_sched] ;mysqlfg952715047fg95270.10%fg9527/www/server/mysql/bin/mysqld --basedir\u003d/www/server/mysql --datadir\u003d/www/server/data --plugin-dir\u003d/www/server/mysql/lib/plugin --user\u003dmysql --log-error\u003diZ28dmbj1ksZ.err --open-files-limit\u003d65535 --pid-file\u003d/www/server/data/iZ28dmbj1ksZ.pid --socket\u003d/tmp/mysql.sock --port\u003d3306 ;\"} --insecure https://lh.admin.yu2le.com/api/monitor/server/upload\",\"status\":\"running\"},{\"timestamp\":\"2025-06-25 22:07:01\",\"hostname\":\"iZ28dmbj1ksZ\",\"name\":\"ly-zhongyu-device-service.jar\",\"pid\":31718,\"cpu\":0.2,\"mem\":3.8,\"cmd\":\"/root/jdk1.8.0_291/bin/java -jar -Xmx512M -Xms256M /www/wwwroot/ly-zhongyu-device-service/ly-zhongyu-device-service.jar --server.port\u003d7624\",\"status\":\"running\"} ]}";
|
|
|
|
|
|
|
|
System.out.println(JSONObject.parse(str));
|
|
|
|
}
|
|
|
|
} |
...
|
...
|
|