I am currently using jconsole
to monitor performance metrics of my Java application and would like to script this data acquisition
Some other useful CLI tools to monitor a Java applications are:
You might find jvm-mon useful for this. It is a JVM monitoring tool for the command line that disaplys:
The metrics and charts update while the tool is open.
Sample:
Take a look at jmap, which can be used to take a heap dump from the console.
For data not covered in the heap dump, I believe jconsole
just uses JMX to connect to the running JVM to get statistics - so it's likely possible to create your own application which could pull those same types of stats from JMX.
You can use this jmx query tool by command line: http://crawler.archive.org/cmdline-jmxclient/
Maybe jvmtop is worth a look.
It's a command-line tool which provides a live-view for several metrics.
JvmTop 0.4.1 amd64 8 cpus, Linux 2.6.32-27, load avg 0.12
http://code.google.com/p/jvmtop
PID MAIN-CLASS HPCUR HPMAX NHCUR NHMAX CPU GC VM USERNAME #T DL
3370 rapperSimpleApp 165m 455m 109m 176m 0.12% 0.00% S6U37 web 21
11272 ver.resin.Resin [ERROR: Could not attach to VM]
27338 WatchdogManager 11m 28m 23m 130m 0.00% 0.00% S6U37 web 31
19187 m.jvmtop.JvmTop 20m 3544m 13m 130m 0.93% 0.47% S6U37 web 20
16733 artup.Bootstrap 159m 455m 166m 304m 0.12% 0.00% S6U37 web 46
jstack offers a number of useful bits of information in its normal output. Heap memory usage is directly available, broken down by GC region; thread count could be determined with a little bit of perl / grep / etc.