Introduction to Open Source APMs: There are numerous open source Application Performance Monitoring (APM) tools out there, which are a useful alternative to the paid tools on offer. Today, we’re going to look at four of the top open source APMs (Pinpoint, InspectIT, Stagemonitor, MoSKito) and compare and contrast.
Top of the line performance is crucial to any application to ensure that users are getting the best experience possible and that the app is continually running. Hence, most app developers employ a monitoring tool.
Why Go Open Source?
The big names in the APM market such as AppDynamics, Dynatrace and New Relic keep their code for themselves. It’s a crowded market and the large players know the value of their monitoring tools.
However, the alternative is open source tools, which offer a great option if you want to gain visibility for your application in production, and if you want to find out how your code is monitored at a granular level.
Pinpoint uses Google’s Dapper as a model, a distributed systems tracing infrastructure; specifically offering developers a monitoring tool to track the behavior of large-scale distributed systems written in Java.
By analyzing the overall system structure, Pinpoint intends to explain how every single transaction is executed (which Is often left as a blackbox). The APM traces the flows between the different components of a service and highlights problematic areas and possible bottlenecks.
The dashboard lets you visualize the connection between the components and monitor (in real time) active threats inside the applications. It also allows you to see the request count and response patterns over time to spot potential challenges, and select individual transactions for further detail.
You can run Pinpoint with an agent that’s installed without code changes, and a sample instance can be run on your own machine by running four simple scripts for each component. There is minimal impact on performance while using (around 3% increase in resource usage).
Pinpoint Further Links
InspectIT is the leading open source APM for monitoring and analyzing Java (EE) software applications.
InspectIT takes an application-centric, business-focused approach so that you can easily monitor the performance that real users are experiencing in the browser. It can correlate all user actions within the browser to the backend traces, thus offering an end-to-end picture of the user experience.
By looking at your application’s blackbox in detail, you can monitor the health of your software and easily identify why an application is slow or unavailable.
InspectIT has a central data repository that houses all the application’s performance metrics. Import and export functionality of monitoring data assists with communication between developers and users.
InspectIT Further Links
Stagemonitor is an open source java APM, which provides a large variety of tools in development, quality assurance and production to allow you to monitor the performance of your java web app. The aim of Stagemonitor is to monitor applications running on a number of servers. It was built with clustered application stacks in mind. Its monitoring agent, which sits inside your Java application, sends metrics and requests traces to its central database.
As this APM only employs one instance to monitor applications, hosts and instances, it can be deployed within your own datacenter. You can view historical or live data from the developer server itself or from the cluster.
Stagemonitor is optimized to integrate with time series databases (TSDB), including Graphite, InfluxDB and Elasticsearch. This allows the APM to handle time series data efficiently, in addition to masses of numbers that are indexed by time.
Stagemonitor has a central dashboard from which you can visualize and analyze the metrics and requests you want to look at. You can customize the dashboard, use 3rd party plugins or write your own custom plugin.
It can be employed for other types of applications, in addition to web applications.
Stagemonitor Further Links
MoSKito is open source APM used to monitor Java web applications.
There are three separate MoSKito projects:
MoSKito-Essential – the essential standalone project. It is the core of MoSKito functionality, which lets you monitor your single-node application.
MoSKito-Central – the centralized storage server to keep performance data, taken by MoSKito.
MoSKito-Control – a tool that lets you monitor performance on multi-node web applications, managing information from multiple MoSKito instances. It displays the health state of the entire application, in addition to providing a sum of its components.
MoSKito is a complete ecosystem for DevOps. Once it is up and running, it allows you to collect performance data and analyze it in real time. This APM allows you to record user actions as actual calls that happen inside your web application with a tool called journeys. There is minimal performance impact on the application itself.
No code change is required. Integration is performed via proxies, annotations, inheritance, aop, class loaders or plain calling. It works with all major app servers.
There are many open source APMs out there. It’s worth taking the time to compare and contrast the leading open source APMs to ensure you have the right application monitoring performance tool for your app.