20+ Top Open Source Application Performance Monitoring Tools (APM)

20+ Application Performance Monitoring Tools,top and best 2019 open source application performance monitoring tools. commercial application performance monitoring tools. Alternatives to Zabbix application performance monitoring tools. Top  Open Source and Commercial Application Performance Managamenent Tools. Application Performance Monitoring vs Application Performance Management. What is APM. Best application performance monitoring tools (APM). Top application performance monitoring tools 2019. Top open source application performance monitoring tools. Open Source and Commercial Application Performance Management Tools. What is APM? Application Performance Management vs Application Performance Monitoring.

application performance management and monitoring tools

 

What is APM?

APM has two related but different meanings. The more common is that it represents Application Performance Management. This suggests a life cycle view of an application and the supporting processes to maintain and enhance the quality or performance of that application and the IT resources that it employs.

The second meaning for APM is Application Performance Monitoring. This has a much more limited scope and represents a class of software solutions (tools) that contribute to the effective management of software systems.

The difference in language is subtle but it points to a significant gap between the goals of the IT organization (to manage the application life cycle) and the goals of the software vendor (to sell a software tool). Just because you can purchase a tool—for all the right reasons—does not mean you will actually know how to exploit it. This point is what I will explore in the first part of the book, "Planning an APM Initiative."

 

Application Performance Management

AP management is the monitoring of decisions across the application life cycle that impact the overall quality or user experience that the application, or the service represented by two or more applications, supports or enables. Ultimately, the user experience directly relates to the performance and stability of an application and this is why you need to expand your perspective to include the application life cycle and issues of software quality. The application life cycle includes commissioning, funding, design, modeling, development (build), testing (functional, performance), quality assurance, user acceptance, production deployment, triage of application and user issues, and sun-setting/end-of-life.

 

Application Performance Management Tools

Below are some of the application performance management tools

 

ManageEngine Applications Manager

Application Performance Management

Applications Manager is a comprehensive application performance monitoring  software built for today's complex, dynamic environments. It gives deep performance insight into business critical applications — both within the data center and on the cloud. It is easy to use and can be set up in minutes.

  1. Agent based monitoring with byte-code instrumentation and code-level diagnostics for Java, .NET,  PHP,  Node.js and Ruby applications.
  2. Synthetic transaction monitoring from multiple geographical locations for multi-page end-user workflow simulation.
  3. Out-of-the box support for over a hundred applications and infrastructure elements.
  4. Extensively monitor hybrid cloud, virtual and container technologies such as Kubernetes and Docker.
  5. Identify and resolve the root-cause of issues faster with automated application discovery, tracing and diagnostics (ADTD).
  6. Anticipate future resource utilization and growth with machine learning enabled analytics.

Applications Manager is used by users in varied roles such as IT Operations, DBAs, DevOps engineers, Site Reliability Engineers, application developers, application owners, Cloud Ops, etc. in 5000+ businesses worldwide.

 

Appdynamics

AppDynamics is a company based in San Francisco that focuses on APM and operation analytics. The company provides APM tools to developers and architects to sort out performance-related issues. Developers can combine these APM tools with their own analytic approach. AppDynamics provides people with a significant amount of detail, enabling them to solve problems.

The tools provided by AppDynamics baseline-monitor an application's performance and provide reports on issues relating to the performance of an app. AppDynamics, therefore, requires access to all information regarding transactions that are performed in an application.

 

Dynatrace

Dynatrace is an APM company that offers IT-related products to IT departments and owners of digital businesses, both small and large. Dynatrace enables the simplified monitoring and troubleshooting of cloud environments through full automation and AI. Dynatrace helps to provide all possible information that may be required by developers and business stakeholders to help improve the performance of the application. This means that both users and developers benefit from its product.

 

New Relic

New Relic is another widely used application performance monitoring tool in the Java community. New Relic provides grouped views for application and network performance statistics. This helps in the quick diagnosis of domain level problems. It also provides features for drilling down into specific requests for viewing performance metrics by response time, data transfer size, and throughput.

New Relic offers four different approaches for backend monitoring:

  • Application performance management
  • Server monitoring
  • Database monitoring
  • Insights and analytics

 

Application Performance Monitoring

AP Monitoring (APM) tries to measure the performance characteristics of a web application from one end to the other; breaking down how long every little hunk of code took to do its thing. Thus, when someone says “the website is slow” you can hopefully see where you need to go to fix it. They are the current darlings of the “monitoringosphere,” and also currently contain the highest concentration of snake-oil.

Typically these tools use byte-code injection and/or monkey-patching to modify your code, compiler, or interpretor at runtime, wrapping the built-in classes and functions with modified versions that extract timing information. Those timing numbers are then emitted as metrics and sent into the APM’s data collection framework. Data resolution and retention varies widely, though many of these tools work on a 60-second tick, which is perfectly adequate in real life.

 

Application Performance Monitoring Tools

Below are the list of top Application Performance Monitoring tools (APM) wherein some of them are open source while some are commercial.

 

Riemann

Riemann is a monitoring tool that aggregates events from hosts and applications and can feed them into a stream processing language to be manipulated, summarized, or actioned. Riemann can also track the state of incoming events and allows us to build checks that take advantage of sequences or combinations of events. It provides notifications, the ability to send events onto other services and into storage, and a variety of other integrations.

Overall, Riemann has functionality that addresses all of our objectives. It is fast and highly configurable. Throughput depends on what you do with each event, but stock Riemann on commodity x86 hardware can handle millions of events per second at sub-millisecond latencies.

Riemann is open source and licensed with the Eclipse Public license. It is primarily authored by Kyle Kingsbury aka Aphyr. Riemann is written in Clojure and runs on top of the JVM.

 

Graphite

Graphite is an engine that stores time-series data and then can render graphs from that data using an API. Graphite is licensed under the Apache 2.0 license and is written in Python.

Graphite is simple and fast. It may not be the most modern time-series database—it relies on flat files, for example, rather than more modern database-style implementations—but it is well tested and reliable. It comes with a wide collection of functions for manipulating, summarizing, and munging data for visualization. It also has a large and active community of users and a solid group of developers.

 

Zabbix

Zabbix provides many ways of monitoring different aspects of your IT infrastructure and, indeed, almost anything you might want to hook up to it. It can be characterized as a semi-distributed monitoring system with centralized management. While many installations have a single central system, it is possible to use distributed monitoring with proxies, and most installations will use Zabbix agents.

 

What features does Zabbix provide?

  • A centralized, easy to use web interface
  • A server that runs on most UNIX-like operating systems, including Linux, AIX, FreeBSD, OpenBSD, and Solaris
  • Native agents for most UNIX-like operating systems and Microsoft Windows versions
  • The ability to directly monitor SNMP (SNMPv1, SNMPv2c, and SNMPv3) and IPMI devices
  • The ability to directly monitor Java applications using JMX
  • The ability to directly monitor vCenter or vSphere instances using the VMware API
  • Built-in graphing and other visualization capabilities
  • Notifications that allow easy integration with other systems
  • Flexible configuration, including templating
  • Low-Level Discovery (LLD) and the ability to generate items, graphs, and triggers (among others) in an automated way
  • A lot of other features that allow you to implement a sophisticated monitoring solution

 

Prometheus

Prometheus is an open source, metrics-based monitoring system. Of course, Prometheus is far from the only one of those out there, so what makes it notable?

Prometheus does one thing and it does it well. It has a simple yet powerful data model and a query language that lets you analyse how your applications and infrastructure are performing. It does not try to solve problems outside of the metrics space, leaving those to other more appropriate tools.

Software like Kubernetes and Docker are already instrumented with Prometheus client libraries. For third-party software that exposes metrics in a non-Prometheus format, there are hundreds of integrations available. These are called exporters, and include HAProxy, MySQL, PostgreSQL, Redis, JMX, SNMP, Consul, and Kafka.

 

Elasticsearch, Logstash, and Kibana

ELK is fast, easy to set up, and is modular and flexible. It allows collection from many sources and can transform and normalize our logs. It also comes with a powerful, searchable storage system and an excellent visualization interface.

The ELK stack is made up of three components:

  • Elasticsearch — A document search store.
  • Logstash — A log-routing and management engine.
  • Kibana — A web-based dashboard and visualization tool.

 

Elastic Stack

Elastic Stack is an end-to-end software stack for search and analysis solutions. It is designed to help users get data from any type of source in any format to allow for searching, analyzing, and visualizing data in real time. The full stack consists of the following:

  • Beats master: A lightweight data conveyor that can send data directly to Elasticsearch or via Logstash
  • APM server master: Used for measuring and monitoring the performance of applications
  • Elasticsearch master: A highly scalable full-text search and analytics engine
  • Elasticsearch Hadoop master: A two-way fast data mover between Apache Hadoop and Elasticsearch
  • Kibana master: A primer on data exploration, visualization, and dashboarding
  • Logstash master: A data-collection engine with real-time pipelining capabilities

 

Logstash

Logstash is free and open source Apache 2.0 licensed, and developed by developer, Jordan Sissel and the team from Elastic. Logstash is written in JRuby and runs on top of the Java Virtual Machine (JVM). It’s easy to set up, high performing, scalable, and easy to extend.

Logstash has a wide variety of input mechanisms: it can take inputs from TCP/UDP, files, Unix Syslog, Microsoft Windows EventLogs, STDIN, and a variety of other sources. As a result there’s likely little in your environment from which you can’t extract logs that can be sent to Logstash.

 

Kibana

Kibana is a dashboard and visualization interface that attaches to Elasticsearch. It is primarily used as an interface for Logstash events, but can query any data stored in Elasticsearch. Kibana can create graphs and dashboards. It’s also licensed under the Apache 2.0 license. It comes with its own web server and can be run on any host that can connect to our Elasticsearch back end.

 

Grafana

Grafana is an open-source metrics dashboard that supports Graphite, InfluxDB, and OpenTSDB. It’s Apache 2.0 licensed. When using Graphite, Grafana runs on top of the Graphite Web API. So rather than install the full Graphite Web component we’re going to install an API integration and then the Grafana dashboard on top of that API.

 

Pinpoint

Pinpoint helps in analyzing the overall system structure and how different components of the system are interconnected. Pinpoint does this by tracing transactions across distributed applications. It is aimed at explaining how each transaction is executed, tracing the flow between components and potential bottlenecks and problematic areas. Pinpoint consists of four components, named Collector, Web, Sample TestApp, and HBase.

 

Stagemonitor

Stagemonitor has a monitoring agent built with support for clustered application stacks. The purpose of the tool is to monitor applications running on a number of servers, which is a usual production scenario. Stagemonitor is optimized for integration with time series databases. It is optimized for time series data management, which includes arrays of numbers, indexed by time. Such databases include elasticsearch, graphite, and InfluxDB. Stagemonitor can also be set up in private networks. It uses the open tracking API to correlate requests in distributed systems. It features defining thresholds for the metrics. Stagemonitor also supports creating new plugins and integrating third-party plugins.

 

JConsole

JConsole is another Java profiling tool. It compiles to Java Management Extension (JMX) specifications. JConsole extensively uses instrumentation in JVM to collect and display information about the performance and resource consumption of applications running on the Java platform. JConsole is updated to a GNOME and Windows look and feel in Java SE 6.

 

MoSKito

The tool is capable of collecting all of the application performance metrics, including memory, threads, storage, caches, registrations, payments, conversions, SQL, services, load distribution, and many more. It does not require users to make any code changes in the application. It supports all major application servers, including Tomcat, Jetty, JBoss, and Weblogic. It stores the data locally.

MoSKito is a group of three tools:

  • MoSKito-Essential: This standalone project is the core of MoSKito. It makes it possible to monitor the application.
  • MoSKito-Central: This works as a centralized storage server. It stores all of the performance-related information.
  • MoSKito-Control: This tool works for multi-node web applications. It provides support for monitoring multi-node web applications.

 

Glowroot

One of the fast, clean, and simple application performance monitoring tools is Glowroot. It has a feature which allows tracing for slow requests and errors. With Glowroot, it is also possible to log the time taken for each user action. Glowroot supports SQL capture and aggregation. Historical rollup of the data with retention configuration is one of the additional features that Glowroot provides.

Glowroot provides support for visualizing response time breakdown and response time percentiles in charts. It has a responsive user interface, which allows one to monitor the application using mobile devices, as well as from desktop systems, without any additional installations.

 

VisualVM

VisualVM is a Java profiling and performance analysis tool. It has a visual interface to analyze detailed information for Java applications running in local and remote environments on JVMs. It integrates and utilizes JDK provided command-line tools like jstack, jconsole, jmap, jstat, and jinfo. These tools are part of the standard JDK distribution. VisualVM is instrumental in solving runtime problems, with features such as heap dump and thread analysis. It helps in identifying application performance and where it stands against the benchmark. It also helps in ensuring optimal memory usage. It further helps in monitoring the garbage collector, profiling CPU usage, analyzing heap data, and tracking memory leaks.

 

AWS CloudWatch

Amazon CloudWatch can be useful for developers, system architects, and administrators. It helps them monitor their AWS applications that are in the cloud. CloudWatch is designed to provide metrics automatically on the basis of request counts, CPU usage, and latency. Users can send their own metrics and logs to CloudWatch to be monitored.

The data and reports that are provided by CloudWatch help users monitor the performance of their applications, resource utilization, issues regarding operations, and other possible obstacles, helping organizations resolve possible issues in the system.

 

Datadog (for Docker performance monitoring)

Docker is a platform on which developers can build and deploy software using containers. Docker provides methods that help a developer to build software that is productive; developers can also benefit from Docker's bit-for-bit compatibility between different environments. Docker has now become an important tool for solving the constant flow of deliveries that are common within modern infrastructure. Note that the containers used need to have a new, more refined monitoring approach, so if a developer uses Docker, they should opt for the newest integration available — Datadog.

 

Lightstep

Lightstep delivers unified observability, with visibility across multi-layered architectures, enabling teams to detect and resolve regressions quickly, regardless of system scale or complexity. They help companies like Twilio, Github, and Segment gain complete visibility into their complex systems. Lightstep was founded by the creator of Dapper and co-founder of OpenTracing and OpenTelemetry, and currently, helping thousands of developers improve how they build and operate microservices at scale. Be sure to check out their Interactive Sandbox feature where you can debug an iOS error or resolve a performance regression within 10 minutes -- and it's completely free!

 

Some more Commercial Application Performance Monitoring Tools

These are some commercial application performance monitoring tools

 

Open-source products. Some tools include collection and storage but others, like D3, only provide visualization and need to be combined with appropriate collection mechanisms.

Storage

  • Druid — Druid is a distributed, real-time analytics data store.
  • OpenTSDB — OpenTSDB is a distributed metrics store that uses Hadoop and HBase.

 

Visualization and analysis

  • D3 — A Javascript library for data visualization.
  • Graphene — A dashboard for Graphite data.
  • Rickshaw — A Javascript library for data visualization.
  • Tessera — An alternative dashboard for Graphite.
  • Facette — A multi-data source dashboard written in Go.
  • Dusk — A hot spot detection dashboard for Graphite that uses D3.
  • Graph Explorer — A Graphite dashboard written by the team at Vimeo.
  • Giraffe — A Graphite dashboard.

 

Lastly I hope this article to know the top and best open source and commercial application performance monitoring tools and application performance management tools was helpful. So, let me know your suggestions and feedback using the comment section.

 

References:
Spring 5: End-To-End Programming
Hands-On High Performance with Spring 5

Leave a Comment

Please use shortcodes <pre class=comments>your code</pre> for syntax highlighting when adding code.