Application Monitoring : Comparing Options

What happens when mission critical Java applications slow down or keep crashing in production? The vast majority of IT Operations (Ops) today bury their heads in log files. Why? because thats what they’ve been doing since IBM invented the mainframe. Diving into the weeds feels good, everyone feels productive looking at log entries, hoping that one will eventually explain the unexplainable. IT Ops may also look at system and network metrics which tell them how server resource and network bandwidth is being consumed. Again, looking at lots of metrics feels good but what is causing those server and network metrics to change in the first place? Answer: the application.

IT Ops monitor the infrastructure that applications run on, but they lack visibility of how applications actually work and utilize the infrastructure. To get this visibility, Ops must monitor the application run-time. A quick way to get started is to use the free tools that come with the application run-time. In the case of Java applications, both JConsole and VisualVM ship with the standard SDK and have proved popular choices for monitoring Java applications. When we built AppDynamics Lite we felt their was a void of free application monitoring solutions for IT Ops, the market had plenty of tools aimed at developers but many were just too verbose and intrusive for IT Ops to use in production. If we take a look at how JConsole , VisualVM and AppDynamics Lite compare, we’ll see just how different free application monitoring solutions can be.

Monitoring with JConsole – JConsole provides basic monitoring of the JVM run-time along with key resources such as CPU, memory and threads. It consists of several tabs that summarize the health of JVM memory, threads, classes, virtual machine and MBeans which are exposed via the standard JMX console. JConsole can dynamically attach to any JVM and will collect data as long as the tool is open and connected to the JVM. It’s fairly good for inspecting the mechanics of a JVM at a high level so you can identify issues such as potential memory leaks, high thread concurrency and deadlock. The MBean viewer also allows the user to report hundreds of KPI metrics in real-time to check which JVM resources are being exhausted by the application. Unfortunately Oracle recommends that JConsole only be deployed in dev and test environments due to the overhead it can introduce on the application. The UI is both simple and easy to navigate but lacks application context with respect to the user requests and transactions that execute within the JVM. For example, if a user complains that their checkout transaction is slow, the JConsole user has no way of correlating or troubleshooting this activity.


 At AppDynamics, our Application Intelligence Platform helps today’s software-defined businesses proactively monitor, manage and optimize the most complex software environments. All in real time, and all in production. With cloud and on-premise deployment flexibility, AppDynamics works and partners with many of the world’s most innovative companies. Customers include Citrix, DIRECTV, Edmunds, Expedia, Fox News, John Deere, OpenTable, Salesforce.com, Sephora, StubHub and Union Pacific Railroad.   AppDynamics premier event for today’s software-defined business AppSphere 2014, takes place November 3-5 in Las Vegas.

 For more information and to try instant APM nirvana, visit www.appdynamics.com.


Here are a few screenshots of JConsole in action:

jconsole_2

Trend Memory Heap Usage Over Time

jconsole_4

Monitor Mbeans In Real Time

jconsole_3

Monitor Thread Concurrency

jconsole_1

Monitor JVM Resource Utilization

Monitoring with VisualVM – VisualVM is also free and ships with the Java SDK. Its a bit like JConsole but with better lipstick and more advanced monitoring features. VisualVM takes application monitoring one level deeper than JConsole by allowing the user to analyze thread execution as well as the ability to profile CPU and memory usage of JVM requests, both of which are triggered manually by the user. VisualVM also has a nice tab showing memory pool and garbage collection activity to spot abnormal trends. From a usability perspective its perfect for a developer although I’m not sure how suitable it would be for IT Ops given the profiling features and data are fairly low level, verbose and provide little context of application requests or user transactions. Users with deep application knowledge could probably piece together which Java components related to user requests otherwise transactions are not immediately obvious to the user. Like JConsole overhead can be an issue in production when features like CPU and memory profiler are triggered by the user. It’s still a great tool for development and test use cases given it costs nothing.

Here are a few screenshots of VisualVM in action:

visualvm_3

View Memory Pools & Garbage Collection

visualvm_2

Trigger CPU & Memory Profiling

visualvm_1

Monitor JVM Resource Utilization

 

Monitoring with AppDynamics Lite – AppDynamics Lite is another free tool that takes a slightly different approach to application monitoring. It starts at a more high level and visualizes the monitored JVM, and its infrastructure interactions. Users get to see the top business transactions that flow through the JVM, creating a level of abstraction from just analyzing raw threads and JVM metrics. It’s a top down approach to monitoring as opposed to bottom up which means IT Ops and developers see the real business impact before they drill down and analyze data. From a slow business transaction the user can drill down into the actual code execution to pinpoint the exact class, method and interface which was responsible for the bottleneck. So instead of analyzing metrics holistically from different perspectives the user can troubleshoot using a business transaction as an anchor all the way down to the root cause. Lite also has real-time MBean trending and also comes with alerting capabilities so users can be pro-active to monitor application performance. The best bit of AppDynamics Lite is that it can run in production 24/7 so IT Ops don’t have to worry about overhead and issues can be resolved quickly.

Here are a few screenshots of AppDynamics Lite in action:

appdynamics_1

Monitor Application Flow and Business Transaction Health

 

appdynamics_4

Monitor MBean & JMX Metrics in real time

 

appdynamics_2

Monitor Application Flow and Business Transaction Health


appdynamics_3

Drill Down on any Business Transaction and see its Code Execution Stack with timing

 

Here is a quick summary of how JConsole, VisualVM and AppDynamics Lite Compare:

apm_tool_comparison

Conclusion – JConsole , VisualVM and AppDynamics Lite are just a few examples of free application performance monitoring solutions on the market. They have common features but differ in how they monitor, collect and present data. The value of these tools therefore vary depending on the user, use case and environment they are intended for. Developers generally want a bottom up view with lots of data to analyze whilst IT Ops want a more structured top down approach so they can troubleshoot and maintain context without getting lost in the weeds. Overhead can also vary across toolsets so remember to take care when monitoring your application in production.

If you’re looking for a cheap and easy way to get started with application monitoring then you should check out these three solutions. They are completely free, easy to install and may give you the visibility you need to fix your application issues. AppDynamics also has a Pro Edition for organizations that require deeper visibility into their mission critical applications, again its free to trial for 30 days (which is how it should be). We really believe in try before you buy, we also believe that some organizations may not have immediate budget for application monitoring which is why we created AppDynamics Lite!


Sandy Mappic is currently a Senior Support Engineer working at AppDynamics and based out of San Francisco, CA. AppDynamics is the leading provider of application performance management (APM) software designed to help development and operations troubleshoot problems in complex production. Sandy supports customers with implementation of AppDynamics complete Java/.NET application performance solution, as well as assist marketing with emails and priority communications.

This article was first published at AppDynamics and has been reproduced with prior permission at Practical Performance Analyst.

Even Faster Web Sites: Performance Best Practices for Web Developers

Price: $16.83

4.6 out of 5 stars (23 customer reviews)

79 used & new available from $0.26

High Performance Web Sites: Essential Knowledge for Front-End Engineers

Price: $17.82

4.2 out of 5 stars (64 customer reviews)

95 used & new available from $0.26

Related Posts

  • Application Aware–Infrastructure Performance Management – Virtualization PracticeApplication Aware–Infrastructure Performance Management – Virtualization Practice For years, Gartner has insisted that if an APM tool does not cover each of its “Five Dimensions of APM,” one of which is deep code analysis, then it is not an APM tool. Gartner has therefore defined APM to be relevant only to custom-developed applications. Well, it has finally woken up […]
  • Predictions For 2014: Technology MonitoringPredictions For 2014: Technology Monitoring This article was posted by John Rakowski at Forrestor's Blog - Link My new report went live this week for Forrester clients - Predictions For 2014: Technology Monitoring. Normally I am a bit of a skeptic when it comes to predictions, especially in regards to technology, because while […]
  • Distilling Performance PatternsDistilling Performance Patterns Introduction: Application Performance Management (APM) has many benefits when implemented with the right support structure and sponsorship. It's the key for managing action, going red to green, and trending on performance. As you strive to achieve new levels of sophistication when […]
  • The Butterfly Effect in ITThe Butterfly Effect in IT The "Butterfly Effect" theoretically describes a hurricane's formation being contingent on whether or not a distant butterfly had flapped its wings weeks before. This highlights a sensitive dependence on environmental conditions where a small change at one place (Dev Env) can result in […]