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月前
|
Prometheus 监控 Cloud Native
Spring Boot 可视化监控
本文介绍了如何通过Spring Actuator、Micrometer、Prometheus和Grafana为Spring Boot应用程序添加监控功能。首先创建了一个Spring Boot应用,并配置了Spring Actuator以暴露健康状态和指标接口。接着,利用Micrometer收集应用性能数据,并通过Prometheus抓取这些数据进行存储。最后,使用Grafana将Prometheus中的数据可视化,展示在精美的仪表板上。整个过程简单易行,为Spring Boot应用提供了基本的监控能力,同时也为后续扩展更详细的监控指标奠定了基础。
619 2
|
6月前
|
前端开发 Cloud Native Java
Java||Springboot读取本地目录的文件和文件结构,读取服务器文档目录数据供前端渲染的API实现
博客不应该只有代码和解决方案,重点应该在于给出解决方案的同时分享思维模式,只有思维才能可持续地解决问题,只有思维才是真正值得学习和分享的核心要素。如果这篇博客能给您带来一点帮助,麻烦您点个赞支持一下,还可以收藏起来以备不时之需,有疑问和错误欢迎在评论区指出~
Java||Springboot读取本地目录的文件和文件结构,读取服务器文档目录数据供前端渲染的API实现
|
11月前
|
存储 数据挖掘 虚拟化
服务器数据恢复—Raid5阵列两块硬盘硬件故障掉线的数据恢复案例
服务器数据恢复环境: 一台某品牌存储设备上有一组由10块硬盘(9块数据盘+1块热备盘)组建的raid5阵列,上层部署vmware exsi虚拟化平台。 服务器故障: raid5阵列中两块硬盘对应的指示灯亮黄灯掉线。硬盘序列号无法读取,通过SAS扩展卡也无法读取。
|
8月前
|
XML Java 应用服务中间件
Spring Boot 两种部署到服务器的方式
本文介绍了Spring Boot项目的两种部署方式:jar包和war包。Jar包方式使用内置Tomcat,只需配置JDK 1.8及以上环境,通过`nohup java -jar`命令后台运行,并开放服务器端口即可访问。War包则需将项目打包后放入外部Tomcat的webapps目录,修改启动类继承`SpringBootServletInitializer`并调整pom.xml中的打包类型为war,最后启动Tomcat访问应用。两者各有优劣,jar包更简单便捷,而war包适合传统部署场景。需要注意的是,war包部署时,内置Tomcat的端口配置不会生效。
2140 17
Spring Boot 两种部署到服务器的方式
|
8月前
|
存储 人工智能 运维
面向AI的服务器计算软硬件架构实践和创新
阿里云在新一代通用计算服务器设计中,针对处理器核心数迅速增长(2024年超100核)、超多核心带来的业务和硬件挑战、网络IO与CPU性能增速不匹配、服务器物理机型复杂等问题,推出了磐久F系列通用计算服务器。该系列服务器采用单路设计减少爆炸半径,优化散热支持600瓦TDP,并实现CIPU节点比例灵活配比及部件模块化可插拔设计,提升运维效率和客户响应速度。此外,还介绍了面向AI的服务器架构挑战与软硬件结合创新,包括内存墙问题、板级工程能力挑战以及AI Infra 2.0服务器的开放架构特点。最后,探讨了大模型高效推理中的显存优化和量化压缩技术,旨在降低部署成本并提高系统效率。
|
10月前
|
监控 IDE Java
如何在无需重新启动服务器的情况下在 Spring Boot 上重新加载我的更改?
如何在无需重新启动服务器的情况下在 Spring Boot 上重新加载我的更改?
902 8
|
9月前
|
Prometheus 监控 Java
如何全面监控所有的 Spring Boot 微服务
如何全面监控所有的 Spring Boot 微服务
407 3
|
11月前
|
SQL NoSQL Java
springboot操作nosql的mongodb,或者是如何在mongodb官网创建服务器并进行操作
本文介绍了如何在Spring Boot中操作NoSQL数据库MongoDB,包括在MongoDB官网创建服务器、配置Spring Boot项目、创建实体类、仓库类、服务类和控制器类,以及如何进行测试。
154 1
springboot操作nosql的mongodb,或者是如何在mongodb官网创建服务器并进行操作
|
11月前
|
监控 Dubbo Java
dubbo学习三:springboot整合dubbo+zookeeper,并使用dubbo管理界面监控服务是否注册到zookeeper上。
这篇文章详细介绍了如何将Spring Boot与Dubbo和Zookeeper整合,并通过Dubbo管理界面监控服务注册情况。
768 0
dubbo学习三:springboot整合dubbo+zookeeper,并使用dubbo管理界面监控服务是否注册到zookeeper上。
|
30天前
|
弹性计算 编解码 大数据
性价比最高提升50%!阿里云企业级云服务器上新
阿里云ECS云服务器推出全新升级的u2系列实例,包括基于Intel的u2i实例与首个基于AMD的u2a实例,提供企业级独享算力,综合性价比最高提升50%。u2i实例已开放公测,适用于中小型数据库、企业网站建设等场景。同时发布基于AMD的第九代旗舰实例g9ae,性能提升65%,适用于大数据、视频转码等密集型业务。
165 0

热门文章

最新文章