The first generation of application monitoring tools focused on the server, a perfectly natural place to begin and that works well until there are dozens or hundreds of servers. As websites grow more complicated and roll together the data from many web services and web 2.0 sources, it's harder and harder to parse a table of data about all of the servers working together to create their web pages. Instead of focusing on the servers as independent entities and counting their CPU cycles, AppDynamics looks for incoming requests for information and tracks the flow of data through the server farm that completes the requests.
The free version offers a peek at everything that the full product can do. Adding the collection agent to a server is as simple as adding the right JAR file to the path and modifying the startup parameters for the JVM with a
javaagent parameter. The agent takes it from there, looking for all of the significant entry points in the stack, cataloging all the requests, and watching their performance. This data is relayed to a separate agent, the AdLite Viewer, which chews up the information and delivers it through port 8990 in HTML. You watch in a window of your browser.
AppDynamics has worked hard at simplifying the hefty data that flows into the collection agent. The simplification is generally desirable but can obscure some of the lower layers. For instance, the tool watches for some of the most common architectural idioms like Struts and Spring, but it flags only the first calls to the system. If you're fielding the new requests with servlets or JSPs first, they'll be the only ones watched at the beginning. But the list of entry points discovered automatically can be edited to include anything that you think is worth tracking.
The discovery tool can be eye opening. I forgot my application was making occasional calls to load a piece of XML during configuration, but AppDynamics noticed it going by and added the external source as a server in the application. AppDynamics creates a cute graphic display of the various servers with lines illustrating the flow of data.
The main page for AppDynamics highlights failing requests and graphs the load and response times. Just drill down for more detail and diagnostics on slow and failed requests.
This self-discovery of the collection of machines that work together to deliver the information is incredibly valuable. The service emphasizes understanding how these machines work and don't work together, communicating the interactions visually with a picture of the network and the speed of the requests flowing between the machines.
The rest of the main display is given over to the current success or failure of the requests coming into the server. Fast responses get green bars, stalled responses get red bars, and pokey threads get mixed colors.
Underneath the red bars is more information about different methods and database queries that go into assembling the Web page. The time-consuming spots are flagged and easily identifiable.
The free Lite version is useful for many basic tasks, and smaller websites, and some larger ones I'm sure, will be able to get by without paying. But the free tool is ultimately a brochure for the paying ones, and there are ample reasons why even a single-server site might choose to spend.
For instance, the Lite version records data from only the last two hours. If you want to know what happened last night or even while you were gone on a long lunch, you're out of luck. The full Standard version sucks down much more data about memory leaks, deadlocks and other glitches. It also does a better job of presenting the information by grouping the servers into tiers and "learning" the behaviour of the different methods and pages. For example, it will figure out that some distant call is always a bit slow and will stop flagging it with red every day.
Then there's the Cloud edition, named for AppDynamics' big target. The tool monitors instances of the application in virtual or cloud environments and helps with dynamic scaling in response to changes in demand. This will undoubtedly be where most of the development will come in the product over the next few years.