如何为Java JVM向JMX添加一些操作系统级别的度量标准

时间:2018-06-23 05:57:59

标签: jmx mbeans

使用JConsole,除了可以处理特定指标外,其他人还可以访问针对操作系统默认收集的指标,例如内存,CPU负载和...。我的问题是我们是否可以添加一些操作系统自定义指标,例如使用Java Files API来使用某些目录或检查特定端口是否响应? 我使用远程SSH和du -sh /directory之类的命令收集了所谓的指标,这些命令有很多延迟,我想使用JMX来获取它,以便它运行得更快。

question讨论了添加弹性指标。

1 个答案:

答案 0 :(得分:0)

如链接的问题所示,将Java类公开为MBean很容易,因此您可以肯定地编写一个类来收集所需的指标。用Java实现du并不困难。但是,我不确定它是否可以解决您的问题。 du -sh /directory的示例可能很慢,因为它需要递归地测量目录层次结构的大小。在Java中那将同样慢(可能更慢!)。

作为旁注,我通常会使用collectd或Telegraf进行此类操作,但是再次发现磁盘使用情况的I / O成本将是相同的。

我建议将一些带有时间的日志添加到当前脚本中,以便您可以看到它在哪里花费时间。例如,如果使用SSH连接不到一秒钟并且确定目录大小需要15秒,那么从SSH迁移到JMX将无济于事。