Application Performance Monitoring is one key area to implement in projects to ensure proper and smooth operations from day 1. APM solutions provide development and operations team with near real-time insights on how the applications and services are performing in production, allowing for proactive tune of services, as well as for early detection of possible production issues.
There are many APM solutions in the market, with diverse range of capabilities, from the inner workings of the JVM (threads in use, memory pools, garbage collection and what not) to user experience in web and mobile applications.
APM solutions can also be expensive, which causes that many projects, small or short-termed, simply cannot afford one.
In this series of two blog posts we will show how to leverage FOSS tools to build an APM solution, which although more limited in capabilities, may be of use for small projects.
We will be leveraging ELK – Elasticsearch, Logstash, Kibana -, the Java Management Extension library (JMX) and the Spring Framework support for JMX to easily expose application data out of the JVM.
NOTE: The following guide is written on ELK stack 5.2.1. Other versions may need slight adjustments to commands and/or configuration.