springboot sigar 监控 服务器_SpringBoot集成oshi实现对服务器及应用的监控

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

使用OSHI我们可以对应用程序进行监控,可以对应用程序所在的服务器资源进行监控,可以监控到很多的指标,如下:

1、计算机系统和固件,底板
2、操作系统和版本/内部版本
3、物理(核心)和逻辑(超线程)CPU,处理器组,NUMA节点
4、系统和每个处理器的负载百分比和滴答计数器
5、CPU正常运行时间,进程和线程
6、进程正常运行时间,CPU,内存使用率,用户/组,命令行
7、已使用/可用的物理和虚拟内存
8、挂载的文件系统(类型,可用空间和总空间)
9、磁盘驱动器(型号,序列号,大小)和分区
10、网络接口(IP,带宽输入/输出)
11、电池状态(电量百分比,剩余时间,电量使用情况统计信息)
12、连接的显示器(带有EDID信息)
13、USB设备
14、传感器(温度,风扇速度,电压)

上面这些指标,很多都不是很懂,不过我们可以参考oshi的api进行相应的操作:http://oshi.github.io/oshi/apidocs/

我们使用java程序集成oshi后,对指标数据进行处理,可以得到一些好看的应用图表,如:

5f91a21bc61b64469a814c00907c9777.png

在实际项目中,对系统的监控我们更多的是采用第三方工具,比如Prometheus等,这个在下一章节中讲解;

我们在SpringBoot工程中,引入以下配置文件

<!-- 获取系统信息 -->
<dependency>
    <groupId>com.github.oshi</groupId>
    <artifactId>oshi-core</artifactId>
    <version>3.9.1</version>
</dependency>
<!--工具类-->
<dependency>
    <groupId>cn.hutool</groupId>
    <artifactId>hutool-core</artifactId>
    <version>4.6.1</version>
</dependency>
<dependency>
    <groupId>net.java.dev.jna</groupId>
    <artifactId>jna</artifactId>
    <version>4.5.2</version>
</dependency>

我们在引入了以上配置文件后,先不要着急写代码,先检查一下项目中引入进来的jar包;打开IDEA的External Libraries功能(在项目Project的最下方),检查一下已经引入的jar包,需要保证的是引入的net.java.dev.jna:jna 包引入的不等于4.2.2,否则在调用方法进行查询的时候就会报错

java.lang.NoSuchMethodError: 
com.sun.jna.platform.win32.WinNT$FILE_NOTIFY_INFORMATION.createFieldsOrder
([Ljava/lang/String;)Ljava/util/List;

之前在集成的时候遇到了很多的问题,参考了网上很多的答案,同时也收获到了更多不同的异常日志;

8c98fa0b44f6698c2824f78362803993.png

最后才发现,只要把net.java.dev.jna:jna包的版本号控制住了,其他的就都好说了;在上述我引入的是net.java.dev.jna:jna包,另外,还有一个jar其实可以引入的,大家可以根据自己在引入包后实际产生的情况进行合理安排,实现项目中只有一个net.java.dev.jna:jna包并且这个包的版本号不是 4.2.2即可;

<dependency>
    <groupId>net.java.dev.jna</groupId>
    <artifactId>jna-platf
  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Spring Boot是一种用于构建独立的、可扩展的Java应用程序的开发框架。而SIGAR是一个Java库,用于获取系统信息,如CPU使用率、内存使用率、磁盘空间等。集成SIGAR可以让我们在Spring Boot应用程序中获取系统的详细信息。 要在Spring Boot中集成SIGAR,我们首先需要将SIGAR库添加到项目的依赖中。可以通过在pom.xml文件中添加如下依赖来实现: ```xml <dependency> <groupId>org.fusesource</groupId> <artifactId>sigar</artifactId> <version>1.6.4</version> <scope>runtime</scope> </dependency> ``` 添加依赖后,我们可以使用SIGAR库提供的API来获取系统信息。例如,我们可以编写一个类来获取CPU使用率的示例: ```java import org.hyperic.sigar.CpuPerc; import org.hyperic.sigar.Sigar; import org.springframework.stereotype.Component; @Component public class SystemInfo { private Sigar sigar; public SystemInfo() { sigar = new Sigar(); } public double getCpuUsage() { try { CpuPerc cpuPerc = sigar.getCpuPerc(); return cpuPerc.getCombined(); } catch (Exception e) { e.printStackTrace(); return 0.0; } } } ``` 在这个示例中,我们使用了Sigar类和CpuPerc类来获取CPU使用率。通过调用getCpuPerc方法,我们可以得到一个CpuPerc对象,然后通过调用getCombined方法获取CPU的使用率。 在这个类上添加@Component注解可以让Spring Boot自动扫描并将其作为一个Bean进行管理。我们可以在其他地方注入SystemInfo类,并调用getCpuUsage方法来获取CPU使用率。 除了获取CPU使用率,SIGAR库还提供了很多其他的功能,如获取内存使用率、磁盘空间等。使用SIGAR库可以让我们更方便地在Spring Boot应用程序中获取系统信息,帮助我们监控和管理应用程序的性能。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值