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


目录
相关文章
|
3月前
|
SQL 监控 druid
springboot-druid数据源的配置方式及配置后台监控-自定义和导入stater(推荐-简单方便使用)两种方式配置druid数据源
这篇文章介绍了如何在Spring Boot项目中配置和监控Druid数据源,包括自定义配置和使用Spring Boot Starter两种方法。
|
2月前
|
存储 数据挖掘 虚拟化
服务器数据恢复—Raid5阵列两块硬盘硬件故障掉线的数据恢复案例
服务器数据恢复环境: 一台某品牌存储设备上有一组由10块硬盘(9块数据盘+1块热备盘)组建的raid5阵列,上层部署vmware exsi虚拟化平台。 服务器故障: raid5阵列中两块硬盘对应的指示灯亮黄灯掉线。硬盘序列号无法读取,通过SAS扩展卡也无法读取。
|
20天前
|
Prometheus 监控 Java
如何全面监控所有的 Spring Boot 微服务
如何全面监控所有的 Spring Boot 微服务
32 3
|
26天前
|
监控 IDE Java
如何在无需重新启动服务器的情况下在 Spring Boot 上重新加载我的更改?
如何在无需重新启动服务器的情况下在 Spring Boot 上重新加载我的更改?
45 8
|
2月前
|
SQL NoSQL Java
springboot操作nosql的mongodb,或者是如何在mongodb官网创建服务器并进行操作
本文介绍了如何在Spring Boot中操作NoSQL数据库MongoDB,包括在MongoDB官网创建服务器、配置Spring Boot项目、创建实体类、仓库类、服务类和控制器类,以及如何进行测试。
24 1
springboot操作nosql的mongodb,或者是如何在mongodb官网创建服务器并进行操作
|
2月前
|
监控 Dubbo Java
dubbo学习三:springboot整合dubbo+zookeeper,并使用dubbo管理界面监控服务是否注册到zookeeper上。
这篇文章详细介绍了如何将Spring Boot与Dubbo和Zookeeper整合,并通过Dubbo管理界面监控服务注册情况。
154 0
dubbo学习三:springboot整合dubbo+zookeeper,并使用dubbo管理界面监控服务是否注册到zookeeper上。
|
2月前
|
前端开发 Java
学习SpringMVC,建立连接,请求,响应 SpringBoot初学,如何前后端交互(后端版)?最简单的能通过网址访问的后端服务器代码举例
文章介绍了如何使用SpringBoot创建简单的后端服务器来处理HTTP请求,包括建立连接、编写Controller处理请求,并返回响应给前端或网址。
60 0
学习SpringMVC,建立连接,请求,响应 SpringBoot初学,如何前后端交互(后端版)?最简单的能通过网址访问的后端服务器代码举例
|
3月前
|
存储 弹性计算 运维
自动化监控和响应ECS系统事件
阿里云提供的ECS系统事件用于记录云资源信息,如实例启停、到期通知等。为实现自动化运维,如故障处理与动态调度,可使用云助手插件`ecs-tool-event`。该插件定时获取并转化ECS事件为日志存储,便于监控与响应,无需额外开发,适用于大规模集群管理。详情及示例可见链接文档。
消息中间件 缓存 监控
144 0
|
3月前
|
存储 监控 Linux
监控Linux服务器
详细介绍了如何监控Linux服务器,包括监控CPU、内存、磁盘存储和带宽的使用情况,以及使用各种系统监控工具如vmstat、iostat、sar、top和dstat来分析系统性能,并推荐了一些开源监控系统。
61 0
监控Linux服务器
下一篇
DataWorks