我想在我的应用程序中监控系统指标。我使用的是Spring Boot Actuator,但它没有任何CPU使用率指标。我知道Spring Boot Actuator的这些指标从这里检索:
OperatingSystemMXBean
它有以下方法:
getSystemLoadAverage
getAvailableProcessors
还有另一个课程:
MemoryUsage
您可以在其中检索此类指标:
getUsed
getCommitted
但是我在java.lang.management
看不到Java应用程序的CPU使用率的任何指标。我怎样才能找回它?
答案 0 :(得分:1)
您正在讨论java.lang.management包的OperatingSystemMXBean类。 com.sun.management包中有相同的名称类。 在这个类中,关于cpu info的方法很少:
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,你可能会遇到一些关于访问限制的问题,如果发生这种情况你可以轻松地修复它in this way。
答案 1 :(得分:0)
只是建议,我认为我们不应该在我们的应用程序中使用测量,只是因为除了我们的应用程序的工作量,还有测量的工作量,因此结果不再是 在这种情况下,Jconsole或Visualvm是您可以关注的绝佳外部工具。不仅是springboot,还可以测量所有java应用程序类型。