如何通过 JMX 获取网络 I/O 和磁盘 I/O

Vin*_*esh 4 java jmx

我一直致力于使用 JMX 获取系统指标,例如 CPU、内存、网络 I/O、磁盘 I/O。

  • 对于 CPU,我使用了函数 OperatingSystemMXBean.getSystemLoadAverage() 并获得了 CPU 的负载。

  • 对于内存,我使用了函数 OperatingSystemMXBean.getTotalPhysicalMemorySize() 和 OperatingSystemMXBean.getFreePhysicalMemorySize()。

有没有通过JMX获取网络I/O和磁盘I/O的功能?

Hei*_*upp 5

大多数虚拟机(全部?)不公开这些数据。您需要使用像sigar这样的库(源在github),它可以收集这些值,然后通过 JMX 公开 sigar 的返回值。

我们在http://rhq-project.org/ 中成功使用了 sigar