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 Answers 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.
-
Thanks, checking it out. BTW - I'm oriented to conclude about user behaviors than performance. Although I guess metrics are metrics and if it's reach enough it might help.Avi– Avi2013年06月11日 07:03:13 +00:00Commented Jun 11, 2013 at 7:03
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.
@CountHits
, but if you implement that could you please let us know? ;)