添加依赖
- JNA(Java Native Access )提供一组Java工具类用于在运行期间动态访问系统本地库(native library:如Window的dll)而不需要编写任何Native/JNI代码。开发人员只要在一个java接口中描述目标native library的函数与结构,JNA将自动实现Java接口到native function的映射。 
- OSHI(Operating System and Hardware Information)是一个开源的Java库,用于获取和操作操作系统和硬件信息。它提供了一组简单易用的API,可以用于检索和监控诸如操作系统类型、处理器信息、内存使用情况、硬盘信息、网络接口等系统和硬件相关的数据。 
| 1 | <dependency> | 
更多版本:mvnrepository
模型
- CpuModel - 1 
 2
 3
 4
 5
 6
 7
 8
 9
 10
 11
 12
 13
 14
 15
 16
 17
 18
 19
 20
 21
 22
 23
 24
 25
 26
 27
 28
 29- package com.heifan.code.domain.monitor; 
 import com.alibaba.fastjson.annotation.JSONField;
 import io.swagger.v3.oas.annotations.media.Schema;
 import lombok.Data;
 /**
 *
 * @author HiF
 * @date 2024/8/9 10:43
 */
 public class CpuModel {
 
 private String name;
 
 
 private String packageName;
 
 private String core;
 
 private int coreNumber;
 
 private String logic;
 
 private String used;
 
 private String idle;
 }
- DiskModel - 1 
 2
 3
 4
 5
 6
 7
 8
 9
 10
 11
 12
 13
 14
 15
 16
 17
 18
 19
 20
 21- package com.heifan.code.domain.monitor; 
 import io.swagger.v3.oas.annotations.media.Schema;
 import lombok.Data;
 /**
 *
 * @author HiF
 * @date 2024/8/9 10:44
 */
 public class DiskModel {
 
 private String total;
 
 private String available;
 
 private String used;
 
 private String usageRate;
 }
- MemoryModel - 1 
 2
 3
 4
 5
 6
 7
 8
 9
 10
 11
 12
 13
 14
 15
 16
 17
 18
 19
 20
 21- package com.heifan.code.domain.monitor; 
 import io.swagger.v3.oas.annotations.media.Schema;
 import lombok.Data;
 /**
 *
 * @author HiF
 * @date 2024/8/9 10:44
 */
 public class MemoryModel {
 
 private String total;
 
 private String available;
 
 private String used;
 
 private String usageRate;
 }
- MonitorListVO - 1 
 2
 3
 4
 5
 6
 7
 8
 9
 10
 11
 12
 13
 14
 15
 16
 17
 18
 19
 20
 21
 22
 23- package com.heifan.code.domain.monitor; 
 import io.swagger.v3.oas.annotations.media.Schema;
 import lombok.Data;
 /**
 *
 * @author HiF
 * @date 2024/8/9 10:44
 */
 public class MonitorListVO {
 
 private SystemModel system;
 
 private CpuModel cpu;
 
 private MemoryModel memory;
 
 private DiskModel disk;
 
 private Long time;
 }
- SwapModel - 1 
 2
 3
 4
 5
 6
 7
 8
 9
 10
 11
 12
 13
 14
 15
 16- package com.heifan.code.domain.monitor; 
 import lombok.Data;
 /**
 *
 * @author HiF
 * @date 2024/8/9 10:44
 */
 public class SwapModel {
 private String total;
 private String available;
 private String used;
 private String usageRate;
 }
- SystemModel - 1 
 2
 3
 4
 5
 6
 7
 8
 9
 10
 11
 12
 13
 14
 15
 16
 17
 18
 19- package com.heifan.code.domain.monitor; 
 import io.swagger.v3.oas.annotations.media.Schema;
 import lombok.Data;
 /**
 *
 * @author HiF
 * @date 2024/8/9 10:44
 */
 public class SystemModel {
 
 private String os;
 
 private String ip;
 
 private String day;
 }
工具类
MonitorUtil
| 1 | package com.heifan.code.utils; | 
使用
| 1 | 
 | 
效果
| 1 | { | 
可能遇到的问题
runtime exception:Unmapped relationship: 7
| 1 | { | 
解决方法:降低jna-platform的版本。上述两个版本实测兼容。
总结
从成熟的项目里还是能学到东西的。