Jamon started in 2003 and is probably the oldest monitoring framework listed here. Although Jamon’s last release is from 2007, it is quite stable and used a lot; Sourceforge statistics show almost a 1000 downloads per month. Jamon is the work of a single person. Features:
- Programmatic access to start and stop timers, timers use milliseconds.
- In memory database for aggregate statistics (no details are kept). Supports monitors that keep track of data in any unit (e.g. dollar value of a transaction).
- Can aggregate statistics on data ranges to provide a more detailed view when this is necessary.
- Extensions to easily configure monitoring in software such as JDBC drivers, several servlet containers/application servers.
- A JSP page to view the realtime data.
Simon started last year as a direct competitor of Jamon. It is much faster, measures in nanoseconds and has a hierarchy of monitors so that you can enable/disable a tree of monitors. Simon is still in active development. Be prepared for API changes in Simon 2.0 which is to be released somewhen before summer 2009. Features:
- Programmatic access to start and stop timers, timers use nanoseconds.
- In memory database for aggregate statistics (no details are kept). Supports stopwatches and counters.
- Like Jamon, has a JDBC monitoring proxy driver
Usemon seems to target monitoring of large clusters with support for tracing messages through the cluster. Measurements are send to a collector which stores it in a database. Features:
- Byte code manipulation to add timers to configured EJBs, Servlets, MDBs, custom defined POJOs, and classes implementing the SqlStatement, MessageSender and TopicSender interfaces.
- Measures method invocation durations, exception counts and JVM information such as heap size.
- Measurements are aggregated for 1 minute and then actively send to a central collector for storage.
- A nice graphic interface for viewing the data (the project page is very vague about the details).
- A clever database to handle huge amounts of data while still allowing efficient retrieval.
I found it a bit difficult to quickly grap Moskito. The website only shows a few use cases and leaves the rest undocumented. Features:
- Easy monitoring of servlets.
- Measurements are aggregated per interval (e.g. 5 miniutes). Afterwards you can do something with the data (e.g. log it or send to a central location).
- A nice very complete looking web interface.
Commons monitoring is a Apache sandbox project. The website has good documentation but the newest information is from March 2008. SVN shows quite some activity so I am curious what the first release will bring. Features:
- Programmatic access to start and stop timers, timers use nanoseconds.
- Support for AOP instrumentation.
- In memory database for aggregate statistics (no details are kept).
- Supports timers, counter (only increases) and gauges (increases and decreases).
- Extensions to export data through a servlet in several formats, including HTML.
JETM (Java™ Execution Time Measurement Library) is again a library for doing raw measurements. Features:
- Programmatic access to start and stop timers, timers use nanoseconds.
- Very nice: a Spring namespace to configure monitors on your beans.
- In memory database for aggregate statistics (no details are kept).
- In memory database for aggregate statistics (details are kept until it is time to calculate the aggregates).
- Several renderers to export data.
- Web interface to see current data.
- Integrates with several projects as Spring, RRD4J and JMX.
Broadway provides an entirely different kind of monitoring. The idea of Broadway is to define events of interest (for example in Groovy) on which can be reacted with some action.
Hi Erik,
ReplyDeleteIs your work in this area (i.e. the code) going to be open source?
Lately, I was playing around with some ideas in the area of live monitoring - just keeping a page open, some nice looking gauges and either polling or cometd (where appropriate) to update data. Could be a nice tool to monitor an application on a dedicated screen. There was an inspiring article on last.fm a few month ago.
Regards, Stefan
Yes, it will be open source. I have yet to start with gathering requirements, so all ideas are welcome.
ReplyDeleteI think it would be really cool to have a nice looking frontend in order to easily integrate it into any (Wicket?) application. It would be awesome to have a number of visualizations to choose from, e.g. graphs, gauges or absolute and relative values. All visualizations would make use of colors (e.g. green-yellow-red) according to predefined thresholds or auto-configured values based on past values. Those different visualizations could than be placed on a single page that's opened on a dedicated screen somewhere in the office. Wouldn't that be cool? :)
ReplyDeleteIf this becomes as cool as I imagine, the masses will adopt this and create more and more visualizations to it. But even on the backend, this thing could benefit from additional sensors - maybe people want to monitor multiple applications on a single page or monitor their CI ... so it might be wise to keep the interface loosely coupled and easily extensible. However, I still believe that the most important thing for monitoring applications it the presentation ... it should be easy to spot problems, otherwise the whole monitoring idea is doomed.
ReplyDeleteAnother one for your list: Perf4J (http://perf4j.codehaus.org/)
ReplyDeleteThanks, it already was on my todo list.
ReplyDeleteI find Perf4J a bit weird as it uses Log4j as measurement distribution framework. This brings two important disadvantages. Firstly, performance wise I don’t think it will ever be able to compete with Jamon or Simon. Secondly it ties you in with Log4j. Log4j is fine but it is showing its age.
Secondly Perf4j focuses on logging measurements. This is IMHO not suitable for production environments where you easily have hundreds of monitoring points all continuously collecting data. Putting that data in a log file is a sure way to make it inaccessible. A regular database is much more suitable.
"Why so slow?"
ReplyDelete"Why only open source?"
I am based in Holland. If you are really interested in a production solution then give me a shout and we can meet up for a drink. Otherwise good luck.
Also MoSKito has a not very uptodate website its all but abandoned :-)
ReplyDeleteIn fact a new webui has just been released (http://moskito.anotheria.net/moskitodemo/mui/msk) and the docs are worked on.
As for the examples, you may want to check out the example project: https://moskito.dev.java.net/source/browse/moskito/moskito-demo/ for examples on monitoring compon ents or attaching loggers.
JavaMelody is very good, also not much configurable. JavaSimon is also OK if you do not need GUI.
ReplyDelete