In my current position as Performance Engineer and in my past position as a Middleware Architect I did quite some work with closed source performance monitoring and analysis tools (i.g. CA Wily and later AppDynamics). These tools are both expensive but also do quite a good job most of the times. In the same field there are more tools, but all in the same price range for as far as I know. To name some: Foglight, Dynatrace, Newrelic, JXInsight, Tivoli Performance Viewer, Compuware Gomez. Around 2006 several initiatives to create open source performance monitoring tools for java production environments started to appear. This was mainly because AOP (Aspect Oriented Programming), the technology used in most of these products, was getting attention in the market and there were quite some developments in that area at the time. I am interested to see how the open source community around these kind of products is evolving. The outcome is quite surprising…
The main reason I am interested in tools in this area is to be able to pinpoint problems in an Acceptance or Production environments very quickly, because this saves (big) enterprises a lot of money. The main reason I am interested in open source tools is to see if we are able to create a complete open source java hosting stack which is enterprise production ready. Without adding a lot of extra license and/or support costs we don’t have to consolidate IT anymore. We will be able to do application hosting for each specific business unit separately and focus on the continuous improvement for that business unit alone. Without big boundaries between the business unit and IT. This kind of boundaries are most times created because of cost efficiency. Think about consolidation and architecture guidelines. Not having to think about licencing costs will help us in helping enterprises to become agile. During a knowledge exchange session (XKE) at Xebia we first created a requirements list to select tools in the same area to be able to compare them. The requirements so far:
- The tool should measure production and acceptance environments with low (<= 5%) resource usage overhead.
- The tool should be able to pinpoint (potential) problems in the running applications as quickly as possible.
- The problems that should be detected: high resource consumption of particular code blocks, memory leaks and the location of the leak, blocking code blocks which block other threads, slow calls to back ends (i.e. web services, databases).
- The environments the tools should run in are the following application servers: IBM Websphere, Oracle Weblogic, JBoss, Tomcat, Glassfish.
- The problems should be made visible in such a way that the root cause can be found as quickly as possible. The most valuable will be to see complete business transaction flows over all JVM’s, with real-time flow states and measurement readings.
- The tool should be easy to install, i.g. just use a simple agent that connects it to a server. The goal should be to leave the code base unchanged.
Before the session I did some homework and I searched the internet for these kind of monitoring tools. During our knowledge exchange session we had a brainstorm session and came to the following list of Open Source tools:
|Type||Name||Active development||Possible usability?||Costs||Commercial support possible?|
|OS||Glassbox||No (last in nov. 2008)||Yes||-||Maybe|
|OS||Infrared||No (last in jan. 2010, between 2006 – 2010 none)||Yes||-||Maybe|
|OS||Profiler4j||No (last in 2006)||No, more are profiler||-||No|
|OS||JAMon/ JARep||No (last in 2010)||No, no runtime aspects, code has to change||-||No|
|OS||VisualVM + BTrace||Yes||No, does only run in JDK6 and higher, no complete visual integration.||Yes|
|Closed SourceFree in dev. env.||OpenCore||Yes||Yes, but is not open source, only low cost in development environment.||None for development environment, commercial for production environment, see JXInsight.||No|
This list is as complete as we were able to come up with, if you know more and eventual better open source tools please let us know! After evaluating all products on the lists (just a paper evaluation) we only see Glassbox and Infrared as a real Open Source solution in this area. But both (at least Glassbox) are not actively developed anymore. Of course because both products are open source it will be possible to restart development on one of the products. It is interesting why both projects are not active anymore. I spent some time to find out why. This is what I found out: What happened to Glassbox; the first developer mentioned is the VP of Engineering at Glassbox David Pickering. He has left the Glassbox company in 2009. And is now VP of Engineering at iWin, a company with a different focus. The second one mentioned is Ron Bodkin, he left Glassbox in 2007 and was the founder of the Glassbox company, he became VP of Engineering at Quantcast, so also his focus has moved. This looks like the main reason there is no active development on Glassbox anymore. What happened to Infrared; the first developer mentioned on the project member list at SourceForge is Binil Thomas, he worked for Tavant Technologies at the time Infrared was created. Other members on the same list also worked for Tavant in that time. Most are now working for different companies. It looks that Tavant Technologies was no longer interested in this space. The last 2.6RC1 release from Infrared was created in 2010, at a time Binil was working for Ronin Capital. Since 2011 he is working for AppDynamics, this is a commercial vendor in this area and looks like the main reason the 2.6RC1 release never came to a full release, but this is something I am guessing of course. What’s next We will test both Infrared and Glassbox to see if one of them is still a good choice. We will start with Infrared because this one has been the most active project in the past and it has been maintained the longest, until 2010. After this we will see if one of these products can be a competitor for the commercial products in this area. Many thanks to my colleagues Adriaan Thomes and Sander Hautvast for helping me with the brainstorm session.