爱组搭 AiZuDa 爱组搭 AiZuDa
首页
  • 主题初衷与诞生
  • 介绍
  • 快速上手
  • 单点登录SSO
  • 图片验证码
  • 接口权限
  • 分布式锁(限流)
  • 消息通知(群机器人)
  • 系统监控
  • mgs api 服务
  • 开源低代码解决方案
问答
💖支持
GitHub (opens new window)
首页
  • 主题初衷与诞生
  • 介绍
  • 快速上手
  • 单点登录SSO
  • 图片验证码
  • 接口权限
  • 分布式锁(限流)
  • 消息通知(群机器人)
  • 系统监控
  • mgs api 服务
  • 开源低代码解决方案
问答
💖支持
GitHub (opens new window)
  • 指南

    • 主题初衷与诞生
    • 介绍
    • 快速上手
  • 安全

    • 单点登录SSO
    • 图片验证码
    • 接口权限
    • 分布式锁(限流)
  • 消息&监控

    • 消息通知(群机器人)
    • 系统监控
      • 介绍
      • 安装
      • 演示效果
      • SpringBoot使用
      • 操作系统信息 SysInfo
      • CPU信息 CpuInfo
      • 磁盘信息 DiskInfo
      • JVM虚拟机信息 JvmInfo
      • 系统内存信息 MemoryInfo
      • 网络带宽信息 NetIoInfo
  • 免费 API 服务

    • mgs 基础 api 服务
  • 低代码

    • 开源低代码解决方案

系统监控

# 介绍

主要功能 操作系统 cpu 内存 jvm 系统 数据查询 等,该模块核心是集成oshi实现对服务器及应用的监控。

第三方组件 oshi (opens new window) 是基于 JNA 的(本地)操作系统和硬件信息库。它不需要安装任何其他额外的本地库,旨在提供一种跨平台的实现来检索系统信息,例如操作系统版本、进程、内存和 CPU 使用率、磁盘和分区、设备、传感器等。

# 安装

  • Maven
<dependency>
  <groupId>com.aizuda</groupId>
  <artifactId>aizuda-monitor</artifactId>
  <version>1.0.0</version>
</dependency>
  • Gradle
implementation 'com.aizuda:aizuda-monitor:1.0.0'

# 演示效果

演示效果

# SpringBoot使用

案例代码

@RequestMapping("/v1/monitor")
public class MonitorController {
    // 注入监控模块 Oshi 调用类
    @Resource
    private OshiMonitor oshiMonitor;

    @PostMapping("/server")
    public Map<String, Object> monitor() {
        Map<String, Object> server = new HashMap<>(5);
        // 系统信息
        server.put("sysInfo", oshiMonitor.getSysInfo());
        // CPU 信息
        server.put("cupInfo", oshiMonitor.getCpuInfo());
        // 内存信息
        server.put("memoryInfo", oshiMonitor.getMemoryInfo());
        // Jvm 虚拟机信息
        server.put("jvmInfo", oshiMonitor.getJvmInfo());
        // 磁盘信息
        List<DiskInfo> diskInfos = oshiMonitor.getDiskInfos();
        server.put("diskInfos", diskInfos);
        if (CollectionUtils.isNotEmpty(diskInfos)) {
            long usableSpace = 0;
            long totalSpace = 0;
            for (DiskInfo diskInfo : diskInfos) {
                usableSpace += diskInfo.getUsableSpace();
                totalSpace += diskInfo.getTotalSpace();
            }
            double usedSize = (totalSpace - usableSpace);
            // 统计所有磁盘的使用率
            server.put("diskUsePercent", oshiMonitor.formatDouble(usedSize / totalSpace * 100));
        }

        // 系统前 10 个进程
        List<OSProcess> processList = oshiMonitor.getOperatingSystem().getProcesses(null,
                OperatingSystem.ProcessSorting.CPU_DESC, 10);
        List<Map<String, Object>> processMapList = new ArrayList<>();
        for (OSProcess process : processList) {
            Map<String, Object> processMap = new HashMap<>(5);
            processMap.put("name", process.getName());
            processMap.put("pid", process.getProcessID());
            processMap.put("cpu", oshiMonitor.formatDouble(process.getProcessCpuLoadCumulative()));
            processMapList.add(processMap);
        }
        server.put("processList", processMapList);
        return server;
    }
}

# 属性说明

# 操作系统信息 SysInfo

:::

属性 说明
name 系统名称
ip 系统 ip
osName 操作系统
userDir 项目路径

# CPU信息 CpuInfo

:::

属性 说明
physicalProcessorCount 物理处理器数量
logicalProcessorCount 逻辑处理器数量
systemPercent 系统使用率
userPercent 用户使用率
waitPercent 当前等待率
usePercent 当前使用率

# 磁盘信息 DiskInfo

:::

属性 说明
name 磁盘名称
volume 文件系统的卷名
label 标签
logicalVolume 文件系统的逻辑卷名
mount 文件系统的挂载点
description 文件系统的描述
options 文件系统的选项
type 文件系统的类型(FAT、NTFS、etx2、ext4等)
UUID UUID/GUID
size 分区大小(字符串类型,例如 1GB)
totalSpace 分区大小(Long类型原始值)
used 已使用(Long类型原始值)
usableSpace 已使用(Long类型原始值)
avail 已使用(字符串类型,例如 1GB)
usePercent 已使用百分比

# JVM虚拟机信息 JvmInfo

:::

属性 说明
jdkVersion jdk版本
jdkHome jdk安装目录
jdkName jdk名称
jvmTotalMemory 总内存
maxMemory Java虚拟机将尝试使用的最大内存量
freeMemory 空闲内存
usedMemory 已使用内存
usePercent 内存使用率
startTime 返回Java虚拟机的启动时间(毫秒)。此属性返回Java虚拟机启动的大致时间。
size 分区大小(字符串类型,例如 1GB)
uptime 返回Java虚拟机的正常运行时间(毫秒)

# 系统内存信息 MemoryInfo

:::

属性 说明
total 总计内存
used 已使用内存
free 未使用内存
usePercent 使用率

# 网络带宽信息 NetIoInfo

:::

属性 说明
rxpck 每秒钟接收的数据包,rxpck/s
txpck 每秒钟发送的数据包,txpck/s
rxbyt 每秒钟接收的KB数,rxkB/s
txbyt 每秒钟发送的KB数,txkB/s
上次更新: 2022/03/28, 23:18:48
消息通知(群机器人)
mgs 基础 api 服务

← 消息通知(群机器人) mgs 基础 api 服务→

Theme by Vdoing | Copyright © 2022-2022 AiZuDa | MIT License
  • 跟随系统
  • 浅色模式
  • 深色模式
  • 阅读模式
×