使用JConsole,除了可以处理特定指标外,其他人还可以访问针对操作系统默认收集的指标,例如内存,CPU负载和...。我的问题是我们是否可以添加一些操作系统自定义指标,例如使用Java Files API来使用某些目录或检查特定端口是否响应?
我使用远程SSH和du -sh /directory
之类的命令收集了所谓的指标,这些命令有很多延迟,我想使用JMX来获取它,以便它运行得更快。
此question讨论了添加弹性指标。
答案 0 :(得分:0)
如链接的问题所示,将Java类公开为MBean很容易,因此您可以肯定地编写一个类来收集所需的指标。用Java实现du
并不困难。但是,我不确定它是否可以解决您的问题。 du -sh /directory
的示例可能很慢,因为它需要递归地测量目录层次结构的大小。在Java中那将同样慢(可能更慢!)。
作为旁注,我通常会使用collectd或Telegraf进行此类操作,但是再次发现磁盘使用情况的I / O成本将是相同的。
我建议将一些带有时间的日志添加到当前脚本中,以便您可以看到它在哪里花费时间。例如,如果使用SSH连接不到一秒钟并且确定目录大小需要15秒,那么从SSH迁移到JMX将无济于事。