通过 java 监控 JVM CPU/RAM 使用情况

时间:2021-01-19 16:15:57

标签: java tomcat monitoring jmx

我使用 JMX 获取 JVM 利用率(CPU、内存、线程...)并在 Jconsole 上显示结果, 但我需要 API 来与 Java 代码集成 并利用 tomcat 然后将数据记录到文件中 Windows 中是否有从命令行使用的 API 技术或服务?

1 个答案:

答案 0 :(得分:2)

JMX 是一种设计用于 Java 程序的技术,所以是的,这是可能的。您需要创建一个 JMX 服务 URL 以指向服务器(大概在本地主机上),然后将其与 JMX 连接器连接:

JMXServiceURL url = new JMXServiceURL("service:jmx:rmi:///jndi/rmi://localhost:9999/server");
JMXConnector jmxc = JMXConnectorFactory.connect(url, null);

一旦你有了它,你就可以按名称获取 MBean,

MBeanServerConnection mbsc = jmxc.getMBeanServerConnection();

从那里您可以获得 MBean,包括在 jconsole 中报告的内容。例如,使用 RuntimeMXBean:

RuntimeMXBean proxy = ManagementFactory.newPlatformMXBeanProxy(
  mbsc,
  ManagementFactory.RUNTIME_MXBEAN_NAME,
  RuntimeMXBean.class);
long uptime = proxy.getUptime();

如果你想检查内存,你需要找出可用的内存池,然后遍历每个。您还可以设置侦听器以查看更改。 请参阅教程了解更多信息:https://docs.oracle.com/javase/8/docs/technotes/guides/jmx/tutorial/tutorialTOC.html