Javamis 监控管理 - 服务监控模块开发过程详述(超详细图文说明)

欢迎访问Javamis博客 / 2024-02-22 / 原文

文章目录

一、第一章、为什么要研发 [服务监控] 功能模块
二、第二章、[服务监控] 功能模块开发过程
  2.1.、引入依赖包
  2.2、开发过程
    2.2.1、实体类
    2.2.2、控制层类
    2.2.3、页面展示
 
 
 

 前言

       本来想着等待javamis低代码开发平台完全研发完成后,再按照功能模块的方式一一将功能点详细写出来,但随着javamis平台越研发越大,就会导致前面研发功能模块过程的知识点遗漏记下来,经过仔细思考后,决定还是先不要那么完美,在开发过程遇到哪些功能点就记录哪些,以免知识点再次遗漏,待整个javamis平台研发完,再整理博客的顺序 - 便于小伙伴们的参考,同时,请小伙伴们届时留意我的动态发布内容,欢迎加入QQ技术交流群:327773608

 

1章 为什么要研发 [服务监控] 功能模块

  这是因为,服务监控模块可以实现实时动态的展示出java 虚拟机(jvm)的动态情况,帮助管理人员对服务器的软件、硬件的维护~

2章 搭建开发环境(windows环境)

2.1.  引入依赖包

javamis-parent父工程下,pom.xml文件添加以下依赖

1 <properties>
2     <oshi.version>6.4.5</oshi.version>
3     <jna.version>5.10.0</jna.version>
4 </properties>

 

 1 <dependencyManagement>
 2      <dependencies>
 3          <!-- 监控服务-获取系统信息 -->
 4          <dependency>
 5             <groupId>com.github.oshi</groupId>
 6             <artifactId>oshi-core</artifactId>
 7             <version>${oshi.version}</version>
 8         </dependency>
 9             <dependency>
10             <groupId>net.java.dev.jna</groupId>
11             <artifactId>jna</artifactId>
12         <version>${jna.version}</version>
13         </dependency>
14         <dependency>
15             <groupId>net.java.dev.jna</groupId>
16             <artifactId>jna-platform</artifactId>
17             <version>${jna.version}</version>
18         </dependency>
19       </dependencies>
20 </dependencyManagement>                

 

javamis-core 子核心工程下,pom.xml文件引用父工程的依赖

 1    <dependencies> 
 2         <!-- 监控服务-获取系统信息 -->
 3         <dependency>
 4             <groupId>com.github.oshi</groupId>
 5             <artifactId>oshi-core</artifactId>
 6         </dependency>
 7         <dependency>
 8             <groupId>net.java.dev.jna</groupId>
 9             <artifactId>jna</artifactId>
10         </dependency>
11         <dependency>
12             <groupId>net.java.dev.jna</groupId>
13             <artifactId>jna-platform</artifactId>
14         </dependency>
15     </dependencies>

 

2.2.  开发过程

2.2.1.   实体类

Monitor.java

  1 /**
  2  * @name:   用户实体类
  3  * @version:1.0.2
  4  * @author:    HuiJia
  5  * @QQ号:     763236277
  6  * @QQ群:     327773608
  7  * @邮箱:     javamis@163.com
  8  * @site:    http://www.javamis.com
  9  */
 10 @Data
 11 @EqualsAndHashCode(callSuper = false)
 12 @Accessors(chain = true)
 13 public class Monitor implements Serializable {
 14     private static final long serialVersionUID = 1L;
 15     
 16     private static final int OSHI_WAIT_SECOND = 1000;
 17     
 18     /********************以下是CPU的监控信息******************************/
 19     /**
 20      * 核心数
 21      */
 22     //private int cpuKernelNum;
 23     private int cpuNum;
 24 
 25     /**
 26      * CPU总的使用率
 27      */
 28     private double cpuTotal;
 29 
 30     /**
 31      * CPU系统使用率
 32      */
 33     private double cpuSys;
 34 
 35     /**
 36      * CPU用户使用率
 37      */
 38     private double cpuUsed;
 39 
 40     /**
 41      * CPU当前等待率
 42      */
 43     private double cpuWait;
 44 
 45     /**
 46      * CPU当前空闲率
 47      */
 48     private double cpuFree;
 49     
 50     /********************以下是JVM虚拟机的监控信息******************************/
 51     /**
 52      * 当前JVM占用的内存总数(M)
 53      */
 54     private double jvmTotal;
 55 
 56     /**
 57      * JVM最大可用内存总数(M)
 58      */
 59     private double jvmMax;
 60 
 61     /**
 62      * JVM空闲内存(M)
 63      */
 64     private double jvmFree;
 65 
 66     /**
 67      * JDK版本
 68      */
 69     private String jvmVersion;
 70 
 71     /**
 72      * JDK路径
 73      */
 74     private String jvmHome;
 75     
 76     /********************以下是内存的监控信息******************************/
 77     /**
 78      * 内存总量
 79      */
 80     private double memoryTotal;
 81 
 82     /**
 83      * 已用内存
 84      */
 85     private double memoryUsed;
 86 
 87     /**
 88      * 剩余内存
 89      */
 90     private double memoryFree;
 91     
 92     /********************以下是服务器的监控信息******************************/
 93     /**
 94      * 服务器名称
 95      */
 96     private String computerName;
 97 
 98     /**
 99      * 服务器Ip
100      */
101     private String computerIp;
102 
103     /**
104      * 项目路径
105      */
106     private String userDir;
107 
108     /**
109      * 操作系统
110      */
111     private String osName;
112 
113     /**
114      * 系统架构
115      */
116     
117     /********************以下是磁盘的监控信息******************************/
118     private List<SysFile> sysFiles = new LinkedList<SysFile>();