I’m trying to create a process for better understand what’s happening in my code. I want to create metrics to automatically give my answers about simple or complex questions like:
- How many times a url was clicked? (how many requests arrived to a certain servlet method)
- How many times a certain user requested the same page?
- How many requests are pending in a queue on average?
and so on…
Is there an easy way to do this automatically and elegantly (for example – attribute like @CountHits would be great)?
I found this open source: http://metrics.codahale.com/getting-started/#reporting-via-jmx
But it’s too coupled to the code. Not so elegant :/
3
Depends on when you want to measure, you can use http://perfinsp.sourceforge.net/jprof.html
in development to get a profile of your program. I’ve never use is, but I’ve used ‘gprof’ for non-java codes.
If you want to monitor your program in production, you can try http://newrelic.com. It gives you basically everything you mentioned and more but involve some cost. I think using it for a few months should help iron out most of the stuff that need to be fixed.
Both of them don’t require any modification to your code.
http://newrelic.com/ is a newish service that might help you.
It’s essentially a profiler with web-based display, and can show number of invokations per minute of a specific method. YMMV.
1
As far as I know there aren’t anything like @CountHits. But if you are so keen in knowing the metrics like the no of clicks and all I would suggest you to use a logging library like log4j to log all the event details and then use a search/analyze tool like Splunk(http://www.splunk.com/) to find out whatever interests you in an elegant way.