diff --git a/xjs-business/xjs-business-monitor/pom.xml b/xjs-business/xjs-business-monitor/pom.xml index ec06503b..b3a52689 100644 --- a/xjs-business/xjs-business-monitor/pom.xml +++ b/xjs-business/xjs-business-monitor/pom.xml @@ -18,27 +18,4 @@ - - - \ No newline at end of file diff --git a/xjs-business/xjs-business-monitor/src/main/java/com/xjs/XjsMonitorApp.java b/xjs-business/xjs-business-monitor/src/main/java/com/xjs/XjsMonitorApp.java index bb4f52f4..83e24173 100644 --- a/xjs-business/xjs-business-monitor/src/main/java/com/xjs/XjsMonitorApp.java +++ b/xjs-business/xjs-business-monitor/src/main/java/com/xjs/XjsMonitorApp.java @@ -5,6 +5,7 @@ import com.ruoyi.common.security.annotation.EnableRyFeignClients; import com.ruoyi.common.security.config.ApplicationConfig; import com.ruoyi.common.security.feign.FeignAutoConfiguration; import com.ruoyi.common.swagger.annotation.EnableCustomSwagger2; +import io.seata.spring.boot.autoconfigure.SeataAutoConfiguration; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; import org.springframework.boot.autoconfigure.jdbc.DataSourceAutoConfiguration; @@ -18,8 +19,10 @@ import org.springframework.scheduling.annotation.EnableAsync; * @desc 业务监控服务启动器 * @create 2022-01-02 */ -//排除两个关于数据源的自动配置类 -@SpringBootApplication(exclude = {DynamicDataSourceAutoConfiguration.class, DataSourceAutoConfiguration.class}) +//排除两个关于数据源的自动配置类、及seata配置类 +@SpringBootApplication(exclude = {DynamicDataSourceAutoConfiguration.class, + DataSourceAutoConfiguration.class, + SeataAutoConfiguration.class}) // 表示通过aop框架暴露该代理对象,AopContext能够访问 @EnableAspectJAutoProxy(exposeProxy = true) // 开启线程异步执行 diff --git a/xjs-business/xjs-business-monitor/src/main/java/com/xjs/servicemonitor/controller/ServiceMonitorController.java b/xjs-business/xjs-business-monitor/src/main/java/com/xjs/servicemonitor/controller/ServiceMonitorController.java new file mode 100644 index 00000000..578e2e56 --- /dev/null +++ b/xjs-business/xjs-business-monitor/src/main/java/com/xjs/servicemonitor/controller/ServiceMonitorController.java @@ -0,0 +1,51 @@ +package com.xjs.servicemonitor.controller; + +import com.ruoyi.common.core.web.domain.AjaxResult; +import com.xjs.servicemonitor.domain.ServiceMonitorInfo; +import com.xjs.servicemonitor.service.JvmMonitorService; +import com.xjs.servicemonitor.service.SystemOSService; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + +/** + * @author xiejs + * @desc 业务监控控制器 + * @create 2022-01-02 + */ +@RestController +@RequestMapping("servicemonitor") +public class ServiceMonitorController { + @Autowired + private JvmMonitorService jvmMonitorService; + + @Autowired + private SystemOSService systemOSService; + + @GetMapping + public AjaxResult getServiceMonitor() { + ServiceMonitorInfo serviceMonitorInfo = new ServiceMonitorInfo(); + serviceMonitorInfo.setFreeMemory(systemOSService.getRuntimeInfo().getFreeMemory()); + serviceMonitorInfo.setCurrentDir(systemOSService.getUserInfo().getCurrentDir()); + serviceMonitorInfo.setHomeDir(systemOSService.getUserInfo().getHomeDir()); + serviceMonitorInfo.setHostAddress(systemOSService.getHostInfo().getAddress()); + serviceMonitorInfo.setHostName(systemOSService.getHostInfo().getName()); + serviceMonitorInfo.setJreName(jvmMonitorService.getJavaRuntimeInfo().getName()); + serviceMonitorInfo.setJreHoneDir(jvmMonitorService.getJavaRuntimeInfo().getHomeDir()); + serviceMonitorInfo.setMaxMemory(systemOSService.getRuntimeInfo().getMaxMemory()); + serviceMonitorInfo.setJreVersion(jvmMonitorService.getJavaRuntimeInfo().getVersion()); + serviceMonitorInfo.setJvmVersion(jvmMonitorService.getJvmInfo().getVersion()); + serviceMonitorInfo.setUserName(systemOSService.getUserInfo().getName()); + serviceMonitorInfo.setOsArch(systemOSService.getOsInfo().getArch()); + serviceMonitorInfo.setOsVersion(systemOSService.getOsInfo().getVersion()); + serviceMonitorInfo.setTotalMemory(systemOSService.getRuntimeInfo().getTotalMemory()); + serviceMonitorInfo.setUsableMemory(systemOSService.getRuntimeInfo().getUsableMemory()); + serviceMonitorInfo.setUserLanguage(systemOSService.getUserInfo().getLanguage()); + serviceMonitorInfo.setUserCountry(systemOSService.getUserInfo().getCountry()); + serviceMonitorInfo.setOsName(systemOSService.getOsInfo().getName()); + return AjaxResult.success(serviceMonitorInfo); + } + + +} diff --git a/xjs-business/xjs-business-monitor/src/main/java/com/xjs/servicemonitor/domain/ServiceMonitorInfo.java b/xjs-business/xjs-business-monitor/src/main/java/com/xjs/servicemonitor/domain/ServiceMonitorInfo.java new file mode 100644 index 00000000..66a29f25 --- /dev/null +++ b/xjs-business/xjs-business-monitor/src/main/java/com/xjs/servicemonitor/domain/ServiceMonitorInfo.java @@ -0,0 +1,104 @@ +package com.xjs.servicemonitor.domain; + +import lombok.Data; + +/** + * @author xiejs + * @desc 业务监控实体类 + * @create 2022-01-02 + */ +@Data +public class ServiceMonitorInfo { + + + /** + * jvm版本 + */ + private String jvmVersion; + + + /** + * jre安装路径 + */ + private String jreHoneDir; + + /** + * jre版本 + */ + private String jreVersion; + + /** + * jre名称 + */ + private String jreName; + + + /** + * 系统名称 + */ + private String osName; + + /** + * 系统版本 + */ + private String osVersion; + + /** + * 当前系统架构 + */ + private String osArch; + + /** + * 主机名 + */ + private String hostName; + /** + * 主机地址 + */ + private String hostAddress; + + /** + * 当前系统登录名 + */ + private String userName; + + /** + * 当前用户路径 + */ + private String homeDir; + + /** + * current 当前目录 + */ + private String currentDir; + + /** + * 当前用户登录语言 + */ + private String userLanguage; + + /** + * 当前用户登录区域 + */ + private String userCountry; + + + /** + * 最大jvm内存 + */ + private Long maxMemory; + /** + * 已分配内存 + */ + private Long totalMemory; + /** + 已分配内存中的剩余空间 + */ + private Long freeMemory; + + /** + 最大可用内存 + */ + private Long usableMemory; + +} diff --git a/xjs-business/xjs-business-monitor/src/main/java/com/xjs/servicemonitor/service/JvmMonitorService.java b/xjs-business/xjs-business-monitor/src/main/java/com/xjs/servicemonitor/service/JvmMonitorService.java new file mode 100644 index 00000000..d52fbe22 --- /dev/null +++ b/xjs-business/xjs-business-monitor/src/main/java/com/xjs/servicemonitor/service/JvmMonitorService.java @@ -0,0 +1,33 @@ +package com.xjs.servicemonitor.service; + +import cn.hutool.system.JavaRuntimeInfo; +import cn.hutool.system.JvmInfo; +import cn.hutool.system.JvmSpecInfo; + +/** + * @author xiejs + * @desc 获取jvm信息 + * @create 2022-01-02 + */ +public interface JvmMonitorService { + + /** + * 获取jvm规格信息 + * @return JvmSpecInfo + */ + JvmSpecInfo getJvmSpecInfo(); + + /** + * 获取jvm基本信息 + * @return JvmInfo + */ + JvmInfo getJvmInfo(); + + /** + * 获取java运行时信息 + * @return JavaRuntimeInfo + */ + JavaRuntimeInfo getJavaRuntimeInfo(); + + +} diff --git a/xjs-business/xjs-business-monitor/src/main/java/com/xjs/servicemonitor/service/SystemOSService.java b/xjs-business/xjs-business-monitor/src/main/java/com/xjs/servicemonitor/service/SystemOSService.java new file mode 100644 index 00000000..ded83d20 --- /dev/null +++ b/xjs-business/xjs-business-monitor/src/main/java/com/xjs/servicemonitor/service/SystemOSService.java @@ -0,0 +1,38 @@ +package com.xjs.servicemonitor.service; + +import cn.hutool.system.HostInfo; +import cn.hutool.system.OsInfo; +import cn.hutool.system.RuntimeInfo; +import cn.hutool.system.UserInfo; + +/** + * @author xiejs + * @desc 电脑系统信息 + * @create 2022-01-02 + */ +public interface SystemOSService { + + /** + * 获取os信息 + * @return OsInfo + */ + OsInfo getOsInfo(); + + /** + * 获取系统的用户信息 + * @return UserInfo + */ + UserInfo getUserInfo(); + + /** + * 获取网络地址信息 + * @return HostInfo + */ + HostInfo getHostInfo(); + + /** + * 获取电脑运行时参数信息 + * @return RuntimeInfo + */ + RuntimeInfo getRuntimeInfo(); +} diff --git a/xjs-business/xjs-business-monitor/src/main/java/com/xjs/servicemonitor/service/impl/JvmMonitorServiceImpl.java b/xjs-business/xjs-business-monitor/src/main/java/com/xjs/servicemonitor/service/impl/JvmMonitorServiceImpl.java new file mode 100644 index 00000000..010ed089 --- /dev/null +++ b/xjs-business/xjs-business-monitor/src/main/java/com/xjs/servicemonitor/service/impl/JvmMonitorServiceImpl.java @@ -0,0 +1,33 @@ +package com.xjs.servicemonitor.service.impl; + +import cn.hutool.system.JavaRuntimeInfo; +import cn.hutool.system.JvmInfo; +import cn.hutool.system.JvmSpecInfo; +import cn.hutool.system.SystemUtil; +import com.xjs.servicemonitor.service.JvmMonitorService; +import org.springframework.stereotype.Service; + +/** + * @author xiejs + * @desc + * @create 2022-01-02 + */ +@Service +public class JvmMonitorServiceImpl implements JvmMonitorService { + + + @Override + public JvmSpecInfo getJvmSpecInfo() { + return SystemUtil.getJvmSpecInfo(); + } + + @Override + public JvmInfo getJvmInfo() { + return SystemUtil.getJvmInfo(); + } + + @Override + public JavaRuntimeInfo getJavaRuntimeInfo() { + return SystemUtil.getJavaRuntimeInfo(); + } +} diff --git a/xjs-business/xjs-business-monitor/src/main/java/com/xjs/servicemonitor/service/impl/SystemOSServiceImpl.java b/xjs-business/xjs-business-monitor/src/main/java/com/xjs/servicemonitor/service/impl/SystemOSServiceImpl.java new file mode 100644 index 00000000..5af3d0d6 --- /dev/null +++ b/xjs-business/xjs-business-monitor/src/main/java/com/xjs/servicemonitor/service/impl/SystemOSServiceImpl.java @@ -0,0 +1,33 @@ +package com.xjs.servicemonitor.service.impl; + +import cn.hutool.system.*; +import com.xjs.servicemonitor.service.SystemOSService; +import org.springframework.stereotype.Service; + +/** + * @author xiejs + * @desc + * @create 2022-01-02 + */ +@Service +public class SystemOSServiceImpl implements SystemOSService { + @Override + public OsInfo getOsInfo() { + return SystemUtil.getOsInfo(); + } + + @Override + public UserInfo getUserInfo() { + return SystemUtil.getUserInfo(); + } + + @Override + public HostInfo getHostInfo() { + return SystemUtil.getHostInfo(); + } + + @Override + public RuntimeInfo getRuntimeInfo() { + return SystemUtil.getRuntimeInfo(); + } +} diff --git a/xjs-business/xjs-business-monitor/src/test/java/com/xjs/servicemonitor/service/JvmMonitorServiceTest.java b/xjs-business/xjs-business-monitor/src/test/java/com/xjs/servicemonitor/service/JvmMonitorServiceTest.java new file mode 100644 index 00000000..432cf821 --- /dev/null +++ b/xjs-business/xjs-business-monitor/src/test/java/com/xjs/servicemonitor/service/JvmMonitorServiceTest.java @@ -0,0 +1,43 @@ +package com.xjs.servicemonitor.service; + +import cn.hutool.system.JavaRuntimeInfo; +import cn.hutool.system.JvmInfo; +import cn.hutool.system.JvmSpecInfo; +import com.xjs.XjsMonitorApp; +import org.junit.jupiter.api.Test; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.boot.test.context.SpringBootTest; + +import static org.junit.jupiter.api.Assertions.*; + +/** + * @author xiejs + * @desc + * @create 2022-01-02 + */ +@SpringBootTest(classes = XjsMonitorApp.class) +class JvmMonitorServiceTest { + + @Autowired + JvmMonitorService jvmMonitorService; + + + @Test + void getJvmSpecInfo() { + JvmSpecInfo jvmSpecInfo = jvmMonitorService.getJvmSpecInfo(); + System.out.println(jvmSpecInfo); + + } + + @Test + void getJvmInfo() { + JvmInfo jvmInfo = jvmMonitorService.getJvmInfo(); + System.out.println(jvmInfo); + } + + @Test + void getJavaRuntimeInfo() { + JavaRuntimeInfo javaRuntimeInfo = jvmMonitorService.getJavaRuntimeInfo(); + System.out.println(javaRuntimeInfo); + } +} \ No newline at end of file