Springboot + oshi 实现对服务器硬件的监控

简介: OSHI是一个免费的基于JNA的(本机)Java操作系统和硬件信息库。它不需要安装任何额外的本地库,旨在提供跨平台实现来检索系统信息,如操作系统版本、进程、内存和CPU使用情况、磁盘和分区、设备、传感器等。

一、开源项目情况


在网上我们可以看到很多项目都有服务监控功能,类似这样的


oshi1.png

或者这样的

oshi2.png


经过查看他们的源码后,发现他们是用的同一套代码,使用了同一个依赖。那就是 oshi,接下来我们详细学习一下这个工具和它的使用方法

以上两个开源项目的地址分别是:

gitee.com/tony2y/RuoY…

gitee.com/dromara/J2E…


二、oshi 介绍



开源地址:github.com/oshi/oshi

介绍

OSHI is a free JNA-based (native) Operating System and Hardware Information library for Java. It does not require the installation of any additional native libraries and aims to provide a cross-platform implementation to retrieve system information, such as OS version, processes, memory and CPU usage, disks and partitions, devices, sensors, etc.

OSHI是一个免费的基于JNA的(本机)Java操作系统和硬件信息库。它不需要安装任何额外的本地库,旨在提供跨平台实现来检索系统信息,如操作系统版本、进程、内存和CPU使用情况、磁盘和分区、设备、传感器等。

注意: 针对不同的jdk版本,需要对应不同的版本,如下


oshi3.png

支持的功能:


三、支持的功能


  • Computer System and firmware, baseboard 计算机系统和固件,踢脚线
  • Operating System and Version/Build 操作系统和版本/内部版本
  • Physical (core) and Logical (hyperthreaded) CPUs, processor groups, NUMA nodes 物理(核心)和逻辑(超线程)CPU、处理器组、NUMA 节点
  • System and per-processor load, usage tick counters, interrupts, uptime 系统和每个处理器负载、使用时钟周期计数器、中断、正常运行时间
  • Process uptime, CPU, memory usage, user/group, command line args, thread details 进程正常运行时间、CPU、内存使用情况、用户/组、命令行参数、线程详细信息
  • Physical and virtual memory used/available 物理和虚拟内存已用/可用
  • Mounted filesystems (type, usable and total space, options, reads and writes) 挂载的文件系统(类型、可用空间和总空间、选项、读写)
  • Disk drives (model, serial, size, reads and writes) and partitions 磁盘驱动器(型号、串行、大小、读取和写入)和分区
  • Network interfaces (IPs, bandwidth in/out), network parameters, TCP/UDP statistics 网络接口(IP、带宽输入/输出)、网络参数、TCP/UDP 统计信息
  • Battery state (% capacity, time remaining, power usage stats) 电池状态(容量百分比、剩余时间、电量使用情况统计信息)
  • USB Devices
  • Connected displays (with EDID info), graphics and audio cards 连接的显示器(带有 EDID 信息)、图形和音频卡
  • Sensors (temperature, fan speeds, voltage) on some hardware 某些硬件上的传感器(温度、风扇速度、电压)

四、如何使用


  1. 首先看其官方介绍,这是最靠谱的,csdn等博客网站虽然也不错,但也是从官网来的,直接官网,方便快捷


oshi4.png

看不懂没关系,百度翻译咔咔快

  1. 需要在maven或者gradle引入依赖
  2. 创建一个 SystemInfo实例
  3. 使用 SystemInfo 中的 getter 访问硬件或操作系统组件

我们看到上面有个 See SystemInfoTest.java for examples,我们点击他这个例子,看看他咋使用的,我这里只截取一部分


```
/**
     * The main method, demonstrating use of classes.
     *
     * @param args the arguments (unused)
     */
    public static void main(String[] args) {
        logger.info("Initializing System...");
        SystemInfo si = new SystemInfo();
        HardwareAbstractionLayer hal = si.getHardware();
        OperatingSystem os = si.getOperatingSystem();
        printOperatingSystem(os);
        logger.info("Checking computer system...");
        printComputerSystem(hal.getComputerSystem());
        logger.info("Checking Processor...");
        printProcessor(hal.getProcessor());
        logger.info("Checking Memory...");
        printMemory(hal.getMemory());
        logger.info("Checking CPU...");
        printCpu(hal.getProcessor());
        logger.info("Checking Processes...");
        printProcesses(os, hal.getMemory());
        logger.info("Checking Services...");
        printServices(os);
    }

使用超级简单,new 一个实例,然后直接get就能获取到硬件信息

  1. 在springboot中使用,展现出开源项目的效果
  1. 首先引入依赖


<oshi.version>6.4.0</oshi.version>
<!-- 跨平台的系统及硬件信息库 -->
        <dependency>
            <groupId>com.github.oshi</groupId>
            <artifactId>oshi-core</artifactId>
            <version>${oshi.version}</version>
        </dependency>
  1. 将开源项目的代码复制过来,都是实体类没必要重新写(我懒。。)


oshi5.png

  1. 浏览器访问看效果,拿到json结果后,剩下的就看前端想要的展示效果了,结束撒花。

oshi6.png


目录
相关文章
|
19天前
|
Java Linux
Springboot 解决linux服务器下获取不到项目Resources下资源
Springboot 解决linux服务器下获取不到项目Resources下资源
|
1月前
|
弹性计算 监控 数据可视化
ecs自定义监控
ecs自定义监控
26 1
|
1月前
|
Arthas 弹性计算 运维
阿里云ECS监控服务
阿里云ECS监控服务
406 2
|
1月前
|
弹性计算 监控 数据可视化
ECS网络流量监控
ECS网络流量监控
63 2
|
1月前
|
弹性计算 运维 监控
ECS监控与管理
ECS监控与管理
36 5
|
1月前
|
弹性计算 运维 监控
ECS资源监控
ECS资源监控涉及CPU、内存、磁盘I/O、网络流量、系统负载和进程的关键指标,通过云服务商控制台、监控服务、API与SDK、运维工具进行实时监控和告警设置。支持历史数据查询、事件监控,以及使用Windows资源监视器和Linux系统工具进行操作系统层面监控。全面监控确保ECS实例稳定运行、资源有效利用和问题及时处理。如需特定云服务商的指导,请询问。
36 3
|
30天前
|
Prometheus 监控 Cloud Native
Spring Boot 应用可视化监控
Spring Boot 应用可视化监控
18 0
|
1月前
|
弹性计算 运维 监控
ecs监控与评估
阿里云ECS提供全面的监控与评估解决方案,包括云监控服务(实时资源指标、告警)、ECS实例详情页(运行状态查看)、资源负载评估(综合性能得分)、ECS Insight(多维度分析)、报警配置、流量管理优化(负载均衡、CDN)。这些工具帮助用户有效管理资源、识别潜在风险、优化性能,确保云服务稳定高效。
19 1
|
1月前
|
监控 JavaScript 安全
监控内网电脑软件设计与实现:基于Node.js的服务器端架构分析
在当今信息技术高度发达的时代,监控内网电脑的需求日益增长。企业需要确保网络安全,个人用户也需要监控家庭网络以保护隐私和安全。本文将介绍一种基于Node.js的服务器端架构,用于设计和实现监控内网电脑软件。
107 0
|
1月前
|
弹性计算 监控 网络协议
ECS操作系统监控
ECS操作系统监控
16 2

热门文章

最新文章