This is a milestone release for us. Elastic APM now fully supports Java and Go! Additionally, this release includes support for Distributed Tracing in Beta. Finally, we've optimized our intake protocol and shipped support for monitoring of the APM Server. Download Elastic APM 6.5.0 to take advantage of these new features.
Java and Go support
Many of you have asked for it, and it's finally here: Elastic APM now supports Java and Go!
The Java agent supports Java versions 7 through 11, has built-in support for popular frameworks like Servlet API, Spring Web MVC/Spring Boot, and JAX-RS, supports application servers, like Tomcat and Wildfly, and JDBC database queries. For supported technologies, the agent will automatically instrument incoming HTTP requests to your application. The agent also has a public API for custom instrumentation.
Getting started is as easy as adding the agent as a
-javaagent when starting your application. For more details, see our Java agent documentation.
For Go, we provide an API and various built-in modules for instrumenting your application. To get started, fetch the agent with
go get go.elastic.co/apm and instrument your application using middleware provided by module/apmhttp, or one of the other framework-specific modules.
See the supported technologies documentation for a list of what instrumentation we support out-of-the-box. Custom instrumentation is supported via the agent's API.
A key feature of modern application performance monitoring is distributed tracing. As software application architecture shifts from a monolithic architecture to a more distributed, service-based architecture, it's critical to have the ability to trace how requests flow through the system.
With distributed tracing, request transactions are linked together into a trace, which includes the end to end performance of how a request was served, and which services were part of it.
Distributed tracing enables developers and operations to contextualize the performance of individual transactions and thereby quickly pinpoint bottlenecks of the end-user experience.
Below is a screenshot of the new distributed tracing feature in Elastic APM. This feature is currently in beta.
All of our APM agents have been updated to support distributed tracing out of the box. This means that our agents will automatically look for a trace id in the HTTP header of incoming requests, and propagate that id to child services. If there is no trace id, the agent will generate a unique id and pass that on.
To get started, simply update the Elastic stack and APM Server to version 6.5, then update your APM agents to the latest version.
Elastic APM supports OpenTracing and has built-in OpenTracing compatible bridges in the Java and Go agents. The remaining agents will also have OpenTracing bridges built-in once we launch distributed tracing as generally available.
Elastic APM supports the W3C Trace Context working group's effort to standardize the HTTP header format for distributed tracing. Our agent implementations closely follow the Trace Context draft specification, and we intend to fully support the final specification.
Improved memory footprint
With our new NDJSON-based protocol, agents can open an HTTP POST request to the APM Server and use chunked encoding to stream events to the APM Server as soon as they are recorded in the agent. This decreases the memory footprint in the agents as they can send the data almost as soon as it’s recorded. Similarly, memory usage on the APM Server is greatly reduced as it can decompress and parse events one by one as they arrive instead of in big chunks. If you want to learn more about the new intake protocol, check out our Increasing Memory Efficiency with an Improved Elastic APM Internal Intake Protocol blog post.
The APM Server now supports monitoring. In the monitoring app, you'll now see a dedicated APM Server tab for monitoring APM Server throughput and errors. This will help tuning of agent configurations, particularly sampling rates, and ensuring APM data is flowing smoothly through to the system.
We're excited to have shipped all of the goodies of the 6.5 release, but the work doesn't stop here. We're continuously improving the APM product. If you have any feedback or questions, please reach out on our Discuss forum.