Why You Need an Application Performance Monitoring (APM) Tool
There are different types and features of performance monitoring. Learn what the different types do and which are essential for your application.
Join the DZone community and get the full member experience.Join For Free
Application performance monitoring (APM) is a section of IT that ensures applications are performing as expected. Application monitoring tools maintain this monitoring. The ultimate goal of performance monitoring is to supply end users with a top quality end-user experience.
Application monitoring tools give administrators the information they need to quickly figure out issues that negatively impact an application’s performance. Such tools can be specific to a selected application or monitor multiple applications on a constant network, grouping data concerning client CPU usage, memory demands, data output, and overall bandwidth.
Application performance management is basically a term for anything to do with managing or monitoring the performance of your code, application dependencies, and user experience.
Varieties of Application Performance Monitoring Tools
- App metrics based: Many tools use numerous server and app metrics and call it APM. At best, they will tell you how many requests your app gets and potentially which URLs can be slow. Since they don’t do code level profiling, they can’t tell you why.
- Code-level performance based: The standard type of application performance management products based on code profiling and transaction tracing.
- Network-based: These tools measure application performance as per the network traffic. There is an entire product class known as NPM that focuses on this kind of solution.
Application Performance Monitoring Features
Performance of Web Requests and Transactions
At the center of APM, you need to be able to measure the performance of each request and transaction in your application. You’ll use this to see which requests are accessed the most, which are the slowest, and which you should increase your backlog to boost. Knowing the performance of each request is just the beginning, though. You could get that from a server access log. The real secret is understanding why.
Performance of Dependencies — Databases, Web Services, Caching, and More
The reason your application is slow typically comes down to a spike in traffic or a tangle with one of your application dependencies. It is common to have these kinds of problems when
- A particular SQL query is slow
- The SQL database server is down
- External HTTP web service calls are failing
- Noisy neighbors within the cloud are causing issues
Code-Level Performance Profiling
If you wish to know why your application is slow, throwing errors, or has bugs, you’ve got to get right down to the code level. Knowing that an explicit request doesn’t work is vital and pretty straightforward. Deciding why it doesn’t work is tough, and generally very exhausting.
By tracking what your application is doing with an application performance monitor all the way down to the code level, you will gain far more insights on what’s occurring, such as
- What are the key strategies being called in your code?
- Which strategies are slow?
- Is your app slow because of things like JIT, garbage collection, etc?
- What dependencies are being called?
Basic Server Monitoring and Metrics (e.g. CPU, Memory)
Application issues will occur for lots of reasons. Due to virtualization and the cloud, a server going down isn’t near as common anymore. However, it still will happen and is something you wish to monitor. It’s also essential to monitor things like server CPU and memory. Lots of recent web applications aren’t CPU-bound, however, they will still use lots of CPU, and it’s a helpful indicator for auto-scaling your application within the cloud.
Application Log Data
Whenever anything goes wrong in production, the first thing you’ll hear a developer say is "send me the logs." Log information is typically the eyes and ears of developers once their applications are deployed. Developers want access to their logs via a centralized logging solution like a log management product. Luckily, log management is an APM feature included in Retrace. Most APM solutions don’t support the #1 factor developers wish to see…their logs!
The last thing we need is for a user to contact us and tell us that our application is giving them an error or simply blowing up. As developers, we have to bear in mind that this happens and we are perpetually anticipating them. Errors are the primary line of defense for locating application issues. We want to find and fix the errors, or at least understand them, before our customers call to inform us — most of them won’t even call to inform you. They’ll simply go elsewhere.
Excellent error tracking, reporting, and alerting are essential to developers in an application performance management system. We would suggest fixing alerts for brand new exceptions as well as monitoring overall error rates. Any time you are preparing for production, you should be watching your error dashboards to see if any new issues have arisen. Odds are, you’ll realize some sort of new error that you will then quickly hotfix.
Real User Monitoring (RUM)
Moving Forward With Custom Applications
Standard server and application metrics can be very helpful for monitoring your applications. However, you may get way more value by creating and monitoring your own custom metrics. Different tools have different functionalities; we can use them to do things like monitoring how many log messages per minute are being uploaded to us or how long it will take to process a message in a queue. These kinds of custom metrics are simple to create and can be very useful for application performance monitoring.
Published at DZone with permission of Amit Shingala. See the original article here.
Opinions expressed by DZone contributors are their own.