Thermostat is a monitoring and management tool for Java deployments,
allowing users to measure and monitor a host of different performance
aspects of their Java applications. Available metrics range from raw
CPU and memory usage to operation of the Garbage Collector and JIT
compiler through to thread activity and method call/heap profiles.
Thermostat provides a GUI view of activity of local and distributed
JVMs in a live-view or, alternatively, offline for after-the-fact
analysis.
What Thermostat cannot do on its own is track events and record
statistics that are specific to a given Java application, at least not
unless the application co-operates with it, for example by publishing
JMX statistics that Thermostat can read, persist and display in its
GUI. However, that's about to change thanks to work Thermostat
developers have been doing to integrate Byteman into Thermostat.
Byteman is a tool which can be used to modify the behaviour of Java
programs by injecting extra Java code almost anywhere in the program.
You don't need to recompile your program or even prepare it in advance
in order for this to work. You can specify changes to the program on
the command line but, what is more amazing, you can actually use
Byteman to change the way a program runs after startup while it is
still running.
In this talk we will show how Thermostat can collect and visualize
metrics with Byteman's help in order to better understand a specific
performance issue in a Java application.