Developers use application performance monitoring (APM) to measure the performance and health of their apps. There are multiple APMs available, but here are ten leading tools to consider using in 2022.
Application performance monitoring (APM) tools are essential for developers because they measure the health of software applications using different metrics. The need for monitoring increases with new features, so the sooner a team sets up an APM the better.
The monitoring industry is constantly evolving, but here are ten open-source APMs that stand out from the rest. One of these tools might be your best choice for your business in 2022.
The maintainers of this project keep the setup process relatively painless, which improves developer experience (DX).
The SigNoz backend needs to be installed on the host where your application is. This adds some overhead to your traditional development, which needs to be taken into account during the deployment process.
The documentation can be confusing because it only describes how to configure storage and retention periods.
The total cost of ownership correlates with APM deployment and maintenance, including but not limited to its required memory (at least 1.5 GB) and its upgrades.
Pinpoint, which is written in Java and PHP, is made for large-scale systems. Inspired by Google’s Dapper, Pinpoint focuses on providing a general analysis of a system as a whole and how its components are connected.
Offers live, real-time monitoring of your applications
Doesn’t require any change in your code to install and set up
There are two methods to install Pinpoint. The first requires you to install and configure HBase as well as Pinpoint’s collector and web components, which makes it a job for a seasoned user. The second is a ten-minute installation process with Docker.
Pinpoint dashboards are easy to use, clean, and intuitive. To see them in action, check the live demo.
Pinpoint only targets three specific languages: Java, PHP, and Python.
If you choose Pinpoint, make sure you consider the costs associated with maintenance and configuration.
Prometheus is configured through CLI and configuration files written in YAML format.
Prometheus doesn’t provide visualization UI out of the box. Instead, the use of console templates is advised. Alternatively, if you want fancy dashboards you need to consider plugging in Prometheus with Grafana, as suggested in the documentation.
You need to take costs associated with Prometheus hosting and maintenance into account. Custom dashboards might need development and/or Grafana setup, which also might be an additional cost.
Jaeger does one thing and it does that well: monitor and troubleshoot transactions in complex distributed systems.
There are two ways in which Jaeger can be deployed:
As a distributed environment, in which Kafka is used as an intermediate buffer. Typical installation places one Jaeger Operator per cluster. The Jaeger Operator is an implementation of a Kubernetes Operator.
As a standalone all-in-one executable, in which Jaeger configuration is applied using the CLI, environment variables, or a configuration file. Jaeger has clean, well-organized documentation, which smooths the developer experience.
As Jaeger is composed of different components working together, it’s possible that issues might occur among some of those components. Jaeger provides a list of helpful tips to troubleshoot potential problems.
There might be costs associated with the maintenance of Jaeger and its components.
Apache SkyWalking is especially designed for microservices, cloud-native, and container-based (Docker, Kubernetes, Mesos) architectures. It bundles several APM capabilities, including monitoring, tracing, and diagnosis, and its active community has enabled support across multiple languages and platforms.
Collects telemetry (metrics, traces, and logs) data from multiple sources and multiple formats
The SkyWalking dashboard concisely displays information, making it easy to use. It’s also highly customizable, allowing you to tailor your development experience to your needs. You can see all features in this demo.
Installation varies depending on the application’s primary language. It has agents for Java, LUA, Kong, Python, and Node.js. It also has third-party agents for .NET, PHP, Go, and C++.
Once you complete the dependencies checklist, installation is straightforward. You can install it directly from the source using the GitHub repository, install it using pip, or install it in Virtualenv, among other options.
Graphite is written primarily in Python and has an active community of contributors.
Graphite can be installed and deployed with Apache or NGINX, and uses SQLite by default. This makes its deployment easy and lowers its cost of ownership, since maintenance and upgrades are easier than for other APMs.
Graphite doesn’t collect data for you, although there are multiple ways to send data to it.
Data ingestion needs to be considered.
Typically, you’d need to plug Graphite into something else for more advanced monitoring or enhanced visualization.
Weave Scope is a monitoring tool developed by Weaveworks to work with Docker, Kubernetes, DC/OS, and AWS ECS.
Weave Scope consists of two components—the scope app and the scope probe. The probe gathers data about the host on which it is running and then passes that data to the app. The app processes this information in a way that can be consumed by a UI.
Weave Scope can be deployed in either a standalone or cloud version, but only the standalone version was evaluated for this article.
In standalone mode, each probe sends its data to a dedicated app. This means that both components need to be installed on each machine of the cluster.
Offers Docker Datacenter, Kubernetes, and Amazon ECS out-of-the-box support
Offers topology mapping
Offers views in scope
Offers real-time app and container metrics
Troubleshoots and manages containers
Generates custom metrics using the plugin API
The Weave Scope dashboard is easy to use, with a visualization-first approach and a clean, intuitive UI.
It aims to provide a zero-configuration solution. However, you can configure it through Java Agent arguments, Java System Properties, environment variables, and file-based configuration that allows you to use YAML, JSON, or .properties files.
You will likely need to integrate it with other APM tools like Prometheus or InfluxDB.
inspectIT Ocelot doesn’t provide a dashboard to visualize your data. You’ll need to integrate it with other tools like Grafana.
As it typically needs to be coupled with other APM tools, its cost of ownership is likely higher than other solutions.
Each of the open-source APMs presented here offers particular features and benefits, such as visualization, storage-only solutions, or hosted vs. cloud solutions. Which tool is best depends on your organization and the metrics you’re looking to monitor.
However, you might prefer a fully managed, enterprise-ready APM solution to an open-source tool. One good option is ContainIQ, which is designed to work with Kubernetes specifically.
Using ContainIQ, you’ll be able to track and monitor data including Kubernetes job failures, memory issues, and service latency. You can configure alerts to be sent to a Slack channel. ContainIQ also offers support to its users, providing a Slack channel to answer questions.
For more information on ContainIQ, you can check its documentation.
Senior Software Architect
Oscar is a senior software architect and polyglot programmer with 15+ years of experience. He has extensive experience in distributed and serverless architectures, primarily but not limited to AWS. Previously, Oscar was the Chief Technology Officer of Prixz, a e-commerce drugstore company.