We are building a java backend service. Would like to ask the community how do you measure the performance of your service. How do you track exception rates (if any), no of tasks completed per minute, etc. Basically we want to define custom metrics, emitted periodically from the service and stored to generate realtime graphs. JMX is a way to get hold of these metrics, however, are there any end-to-end libraries that can help to log, record and generate graphs from this time-series data?<p>(I am looking for open source alternatives, for using in a commercial app. there is serverDensity but it is paid-subscription based API.)
If you haven't heard of graphite, you should read up on it. You should be able to easily grab anything in jmx via one of the many statsd java clients for 0 impact perf monitoring or as I call it, "application telemetry". Using the most excellent graphite web ui and one of the dozen+ dashboard apps such as Descartes, jondot's graphene, kenhub's giraffe, etc, you can throw up some seriously nice telemetry dashboards with system and network stats all overlayed.
Graphite is an awesome service. On the code side, I use Metrics (<a href="http://metrics.codahale.com/" rel="nofollow">http://metrics.codahale.com/</a>) for Java and for Python I use scales (<a href="https://github.com/Cue/scales" rel="nofollow">https://github.com/Cue/scales</a>)