Customers today have high expectations for application performance and availability. Imagine the frustration you have likely felt when your banking application wouldn’t work or your navigation app took forever to load. Troubleshooting applications is challenging, especially given today’s trend towards distributed systems. It can be almost impossible to sift through countless logs of raw data to trace errors and identify their cause.
Application Performance Management (APM) software can ensure your customers’ expectations are met by helping identify errors and optimizing load and processing times. Enterprises have had a strong arsenal in APM to help optimize their applications, but it has remained out of reach for many small and mid-sized businesses due to its high cost. New open-source APM solutions are changing that.
What is APM?
Application Performance Management software is a set of tools that help monitor and optimize the performance of your software or web applications. There are generally three main features an APM solution might provide.
The software collects different kinds of app-based data, such as application metrics, code performance, logs, or processing times. By collecting these metrics and data, APM can help determine performance baselines and easily identify any variation, such as SQL query issues or application errors.
In addition to metrics, APM might offer code tools that help developers create robust and efficient products. These include features to map application dependencies and connections between distributed systems, helping to identify bottlenecks. Additionally, these tools help pinpoint the exact lines of code, function or database that is causing errors.
Finally, APM might offer network tools that can help measure the performance of an application based on network traffic. This capability allows the user to monitor application performance during network traffic spikes or even identify the highest volume webpages or transactions.
Obstacles to Implementing APM
Traditional APM solutions were designed for IT operations. They mostly monitored data to ensure quality of service. The landscape is changing and APM tools are starting to offer code and network features for developers, QA, and more. The industry leaders offer robust solutions and charge accordingly, usually by per instance per month and most charge an extra fee for additional features, such as error reporting or log availability. These costs can add up quickly and can even outnumber the cost to host a server. Several of the larger APM tools offer trial versions or simplified versions of their software for free, but the remainder of this article will discuss the top open source solutions available on the market today.
Top Open Source APM Products
Based on GitHub ratings and peer reviews, we present five of the top open-source APM solutions available today.
Pinpoint is an open-source APM tool focused on distributed systems written in Java and PHP. It helps developers monitor Java code and analyzes the structure and communication between the different distributed components.
Some of the features of Pinpoint include:
- Real-time monitoring of active threads inside applications
- Metrics reporting, such as CPU usage
- Topology mapping of connected components
- Visibility to transactions at a code level
- Minimal resource impact on performance
Originally designed as a tracing application, Apache SkyWalking has evolved into an APM with monitoring and diagnosing capabilities as well as analysis tools. It is specially designed for microservices, cloud-native and container-based architectures.
Popular features include:
- Supports multiple programming languages
- Service, service instance, and endpoint metrics analysis
- Root cause analysis
- Slow services and endpoints detected
- Performance optimization
- Distributed tracing
- Minimal resource consumption
- Topology mapping and analysis of connected components
- Customizable dashboard
Stagemonitor monitors performance for Java web and server applications and was designed to be used in development, QA, or production. It sits inside the application and sends metrics and details about call stacks and requests to other third-party open-source tools, such as Elasticsearch and Graphite for analyzation and graphing.
Top Stagemonitor features include:
- Define alert thresholds
- In-browser widget
- Real-time metrics
- Distributed tracing and bottleneck identification
- Analyze and trace requests
JavaMelody is primarily a statistic collector of your applications’ operation, such as errors, CPU, and memory. It monitors Java and JavaEE in QA and production environments. It also helps anticipate application errors before they occur.
- Extremely low consumption of CPU resources
- Plugins and third-party integrations
- Custom PDF report generation
- Scripts and alerts
- Centralized Monitoring Server
- Real User monitoring
- Database monitoring
InspectIT Ocelot is an APM for applications using JavaEE that collects and analyzes performance, tracing and business data based on the OpenCensus library. You can implement this zero-configuration tool without changing the application source code. InspectIT was originally developed by NovaTec Consulting GmbH, but became open source in 2015.
Top features include:
- Trace based analysis
- Remote traces
- End-user monitoring
- SQL and exceptions reporting
- Third-party integrations with other open-source tools, such as Prometheus, Jaeger, or Elasticsearch
There are many more open-source APM solutions available today and the number of players in this space is increasing rapidly. Most SMBs will find free solutions that meet their needs, however, multiple open source solutions may need to be combined to create robust solutions with the desired features and monitoring coverage.