If your organization has built it’s own applications, you need an APM tool to help have a strategic approach to service performance. This approach will help you ensure that the critical applications meet established expectations for performance, availability and customer or end-user experience.
Given the number of open source APM tools available out there, there comes a need to search for the best fit for your project. In this article, we will review the five APM tools we have compared that offer an open source alternative to some of the proprietary tools on the market.
What is Application Performance Monitoring?
APM refers to the strategy and the practice of managing performance excellence, as measured by performance metrics and user experience monitoring. What application performance monitoring falls under is the more general term application performance management. While application performance monitoring only focuses on tracking the performance of an application, application performance management focuses on the broader concept of controlling an app’s performance levels — monitoring is a part of this.
The aim is to detect and pinpoint the issues in the application before the end user gets impacted.
We have taken into consideration numerous aspects for this comparative study. Some of these are:
Product architecture: operational complexity of components
Distributed tracing: support for open tracing, context propagation etc.
Integrations: with other APM and observability tools
RUM/Synthetic monitoring: if supported or not
UI: dashboard and plugin management
Five APM tools compared
This APM system built on Elastic stack collects detailed performance information on response time for incoming requests, database queries, calls to caches, external HTTP requests, and more.
Elastic APM comprises of 4 components — APM agents, APM Server, Elasticsearch, and Kibana. We found installation to be straightforward using the provided installation guide with low performance overhead on application using single threaded benchmarks is in the order of microseconds.
In terms of distributed tracing, Elastic APM supports OpenTelemetry, context propagation (W3C trace context) , can be easily integrated with distributing tracing tools like Jaeger, supports Synthetic and Real User Monitoring, and supports head-based, probability sampling.
It can also be integrated with other third party tools like Zipkin, Fluentd, ServiceNow(ITSM), ElastAlert and Grafana( alerting), Selenium , Terraform and Ansible (automation) etc.
Dashboards , plugins and central stack management are provided by the Kibana APM UI.
APM tool for distributed systems, especially designed for microservices, cloud native and container-based (Docker, Kubernetes, Mesos) architectures.
The product provides features which include probes, platform backend, storage and UI. The overhead of running the agent is around 10% CPU for 5000+ metrics per second.
Distributed tracing — Apache Skywalking supports OpenTelemetry, adopts W3C Trace Context, supports integration with Zipkin and Jaeger (some limitations apply), doesn’t support Synthetic and Real User Monitoring and lightweight payload supports 100% trace sampling in production environments.
Jenkins and Kubernetes are some of the other third party tools that can be integrated for Devops and automation respectively.
There are custom dashboard templates on which dashboards can be built on. The UI doesn’t have central stack management or plugin management like Elastic APM.
The inspectIT Ocelot agent uses Java byte-code manipulation to set up the OpenCensus instrumentation library with zero-configuration and requires no source-code changes.
The architecture consists of agents, Central Measurement Repository, and user interfaces. The performance overhead is very low for platform instrumentation ( 17 µs) and very high for a full blown instrumentation.
OpenTelemetry Migration has been planned for Q3 2021, W3C trace context has been adopted , sampling is regulated using Global Sampling Rate, doesn’t support Synthetic and Real User Monitoring and third party Distributed tracing tools like Zipkin and Jaeger can be integrated with the APM.
InspectIT can be integrated with observability tools like influxDB, Zipkin, Prometheus, Jaeger ; with alerting tools like Bosun, Kapacitor, Grafana, Alerta; and with Prometheus for cloud monitoring.
Pinpoint is an APM (Application Performance Management) tool for large-scale distributed systems written in Java / PHP.
The product architecture includes an agent, Collector, Web UI and a HBase storage. Pinpoint has minimal impact on the performance (approximately 3% increase in resource usage).
In terms of distributed tracing, it doesn’t support OpenTelemetry or W3C trace context. However it does support a counting sampler. Integration with 3rd party distributed tracing tools isn’t supported and it doesn’t support Synthetic and Real User Monitoring.
Integration with 3rd party observability tool — fluentD possible.
There are no custom dashboards and a third party tool is used to create plugin, sample plugin is however available.
Glowroot is an open-source APM tool useful for monitoring Java-based applications which supports profiling Java applications compatible with Java 6+ to Java 8.
It is a very lightweight APM tool comprising of three components — agents ,collector and database with an average of 3.625 % performance overhead.
Glowroot doesn’t support distributed tracing or Synthetic and Real User Monitoring and there’s no documentation of integration with third party tools as well. However , it’s a lightweight APM tool that can be installed and used on the fly.
The UI too is rather simple and doesn’t provide dashboard ,plugin or central stack management. It simply provides enough data to resolve the bottlenecks and users have found it to work in production server in just 15 minutes!
Which APM tool best suits your project needs depends on various parameters like ease of installation, flexibility offered, support for industry security standard, support for alerting, databases supported , whether cloud based monitoring is what you need and the type of application you’re running.
Overall, open-source APM tools are a good start to build a robust software application.
Special thanks to Bhavani Ananth for giving direction to the study.