是否可以使用飞行记录器记录 mbeans 值?当我在 mbean 模式下监视我的服务器时,我绘制java.lang.management.OperatingSystemMXBean.getSystemLoadAverage()
的效果很好。我也想在飞行记录转储中获得这个值。
在飞行记录向导中,我只能选择事件,没有可用的 mbeans 选项。有没有办法做到这一点?
是否可以使用飞行记录器记录 mbeans 值?当我在 mbean 模式下监视我的服务器时,我绘制java.lang.management.OperatingSystemMXBean.getSystemLoadAverage()
的效果很好。我也想在飞行记录转储中获得这个值。
在飞行记录向导中,我只能选择事件,没有可用的 mbeans 选项。有没有办法做到这一点?
您可以自己添加此功能;尽管您必须依赖不受支持的 API 来创建 JFR 事件:
例如,您可以创建一个 Java 代理来重复获取感兴趣的值,并将它们记录为飞行记录器事件。
如果你愿意,我可以创建这样的代理。会写一篇不错的博文,所以我不介意。;)
这取决于您感兴趣的 OperatingSystemMXBean 中的哪个属性,其中一些已经作为 JFR 事件可用,例如 ProcessCpuLoad。
我相信一些更以操作系统为中心的值,比如交换空间,目前没有相应的 JFR 事件。将来可能会添加它们。
通常将 mbeans 中的数据记录到 JFR 中不是我们要做的事情,我也不认为它在任何路线图中。
可以跟踪 mbean 数据并将其保存(称为“JMX 数据持久性”或“历史数据”,具体取决于您的 JMC 版本),但我猜这不是您想要的。
添加一个新答案,因为我确实实施了我在第一个答案中提出的代理:
最简单的方法是在这里下载并使用我实现并添加到我的博客的代理:hirt.se/blog/?p=689