jstatd / visualgc的控制台客户端

时间:2013-05-22 20:45:07

标签: java visualvm jstatd

VisualVM / VisualGC实时提供了许多有用的GC相关指标,但我想要一个命令行工具,它可以通过jstatd连接到远程应用程序,并以CSV或XML格式记录完全相同的指标。 VisualGC提供。编写我自己的应该不是问题,但从第一眼看我无法找到visualvm / jstatd使用的协议。

据我所知,VisualGC不是开源的:https://stackoverflow.com/questions/11096466/where-is-the-source-code-repository-for-visualgc,但有没有其他开源工具?是否有任何线索如何使用协议?

我设法通过RMI连接到jstatd(默认端口1099,JStatRemoteHost是rmi-name),可以连接到特定的VM - 但是http://grepcode.com/file/repository.grepcode.com/java/root/jdk/openjdk/6-b14/sun/jvmstat/monitor/remote/RemoteVm.java#RemoteVm是一个与jstatd非常低级的接口。

我从https://svn.java.net/svn/visualvm~svn/trunk检查了VisualVM源代码 刚刚开始查看5mb代码库,但它既不使用RemoteHost也不使用RemoteVm RMI类。

感谢。

1 个答案:

答案 0 :(得分:1)

首先我查看了VisualVM的源代码(~5mb),创建了一个命令行工具,在JvmstatModelFactory上注册JvmstatModelProvider,获取一个Application,创建JvmJvmstatModel并提取所有MonitoredValues - 它通过jstatd连接到远程应用程序并打印更改格式为timeMillis,name,value的值 1369270235646,sun.gc.generation.2.space.0.capacity,16777216 1369270236666,sun.os.hrt.ticks,2511500491 1369270237581,sun.gc.generation.0.space.0.used,641408 1369270237582,sun.os.hrt.ticks,2512502544

一小时后,我为我的任务https://code.google.com/p/hatter-source-code/wiki/hotstat找到了正确的命令行工具,它不使用jstatd - 但很好,我仍然可以通过ssh远程运行它。