Java管理API获取CPU使用率
我想在我的应用程序中监控系统指标。我使用Spring启动执行器,但它没有任何CPU使用指标。我知道Spring Boot Actuator的这些指标是从这里获取的:Java管理API获取CPU使用率,java,Java,我想在我的应用程序中监控系统指标。我使用Spring启动执行器,但它没有任何CPU使用指标。我知道Spring Boot Actuator的这些指标是从这里获取的: OperatingSystemMXBean 它有如下方法: getSystemLoadAverage getAvailableProcessors 还有一类: MemoryUsage 您可以在其中检索这些度量: getUsed getCommitted 但是,我在Java.lang.management上看不到Java应用程
OperatingSystemMXBean
它有如下方法:
getSystemLoadAverage
getAvailableProcessors
还有一类:
MemoryUsage
您可以在其中检索这些度量:
getUsed
getCommitted
但是,我在
Java.lang.management
上看不到Java应用程序CPU使用的任何指标。如何检索它?您所说的是操作包的SystemMXBean类。
包中有相同名称的类。
在这个类中,有几个关于cpu信息的方法:
double getProcessCpuLoad()
long getProcessCpuTime()
double getSystemCpuLoad()
这是访问bean和检索cpu负载信息的代码:
import java.lang.management.ManagementFactory;
import com.sun.management.OperatingSystemMXBean;
OperatingSystemMXBean bean = (OperatingSystemMXBean) ManagementFactory.getOperatingSystemMXBean();
System.out.println(bean.getProcessCpuLoad());
请注意,强制转换是必要的,因为您需要的类在java.sun.management包中,而不是在java.lang.management中。
如果您使用eclipse,您可能会遇到访问限制方面的一些问题,如果出现这种情况,您可以轻松解决。只是建议,我认为我们不应该在应用程序内部使用度量,因为除了应用程序的工作负载之外,还有度量的工作负载,因此结果不再准确
在这种情况下,Jconsole或Visualvm是非常好的外部工具。不仅可以测量springboot,还可以测量所有java应用程序类型。?@Andrewi SystemCpuLoad是否等于getSystemLoadAverage/getAvailableProcessors?否。
getSystemCpuLoad
返回整个系统最近的CPU使用情况。查看副本实际上,我需要当前Java应用程序的CPU使用率,就像堆使用率一样。这就是为什么我需要一个不同于复制的解决方案。getProcessCpuLoad()
我有一些微服务,我的一个应用程序是一个监控其他应用程序的仪表板。