консольный клиент для jstatd/visualgc

VisualVM/VisualGC предоставляет довольно много полезных метрик, связанных с GC, в режиме реального времени, но мне нужен инструмент командной строки, который может подключаться к удаленному приложению через jstatd и записывать в CSV или XML, в идеале точно такие же метрики, что и VisualGC. Написать свой собственный не должно быть проблемой, но с первого взгляда я не могу найти, какой протокол использует visualvm/jstatd.

Насколько я понимаю, VisualGC не является открытым исходным кодом: https://stackoverflow.com/questions/11096466/where-is-the-source-code-repository-for-visualgc, но существуют ли альтернативные инструменты с открытым исходным кодом? Есть ли какие-нибудь подсказки, как насчет используемого протокола?

Мне удалось подключиться к jstatd через RMI (порт по умолчанию 1099, JStatRemoteHost — это имя rmi), могу подключиться к конкретной виртуальной машине, но http://grepcode.com/file/repository.grepcode.com/java/root/jdk/openjdk/6-b14/sun/jvmstat/monitor/remote/RemoteVm.java#RemoteVm — это довольно низкоуровневый интерфейс с jstatd.

Я проверил исходный код VisualVM с https://svn.java.net/svn/visualvm~svn/trunk и только начал просматривать кодовую базу размером 5 Мб, однако он не использует ни RemoteHost, ни RemoteVm RMI-классы.

Спасибо.


person pavel    schedule 22.05.2013    source источник


Ответы (1)


Сначала я просмотрел исходный код VisualVM (~ 5 МБ), создал инструмент командной строки, который регистрирует JvmstatModelProvider на JvmstatModelFactory, получает приложение, создает 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,вс.ос.хрт.тикс,2512502544

Через час я нашел подходящий инструмент командной строки для моей задачи https://code.google.com/p/hatter-source-code/wiki/hotstat, который не использует jstatd, но я могу запустить его удаленно через ssh.

person pavel    schedule 23.05.2013