Since most of the technologies mentioned use the underlying JVM, you might want to start with monitoring the JVM. Also you might want to use some load testing tool to generate load, this exercise will allow you to gather more client side metrics.
I have used the open source apache HTTPClient for load testing - particularly helpful if you need browser simulation. Otherwise basic Java HTTPUrlConnection and friends will let you create simple client simulations.
I think the choice of load test tools depends upon the userload you want to generate and the kind of metrics you want to collect. For JVM monitoring VisualVM is pretty good. Also there are a number of command line arguments you can pass and collect the metrics at specific intervals.
Some of the good open source tools for web applications (http) currently available would be JMeter, Open STA (involves scripting) etc. You also have number of commercial choices available. Again this depends on the protocol you want to test, the user load and the kind of metrics you would want to collect.