Compatibility Overview
editCompatibility Overview
editSupport for the Elastic APM Node.js agent follows the support schedule of Node.js itself to the end-of-life period of each version after its maintenance term. Versions of Node.js past their end-of-life date are not supported.
Some versions of Node.js contain bugs or issues that limit our ability to instrument them correctly. The following versions of Node.js are known to not be fully instrumented:
- v8.1.x - Recommended solution: Upgrade to v8.2.0 or higher to get full support
- v8.0.x - Recommended solution: Upgrade to v8.2.0 or higher to get full support
Support for Node.js 8.2.0 and above is experimental as it makes use of the experimental core API Async Hooks.
If you experience any issues related to using Async Hooks,
you can always disable the use of this API by setting the asyncHooks
config option to false
.
Note however,
that not all core Node.js API’s can be instrumented without the use of Async Hooks if running Node.js 8 or above.
Elastic Stack Compatibility
editVersion 1.x of the agent is compatible with APM Server v6.2 to v6.4. For support for APM Server v6.5 and above, use version 2.0.0 or higher of the Node.js agent.
Frameworks
editThough you can use Elastic APM with any Node.js framework, we automate a few things for the most popular Node.js modules.
These are the frameworks that we officially support:
Framework | Version | Note |
---|---|---|
^4.0.0 |
||
>=9.0.0 <18.0.0 |
||
Koa via koa-router |
>=5.2.0 <8.0.0 |
Koa doesn’t have a built in router, so we can’t support Koa directly since we rely on router information for full support. We currently support the most popular Koa router called koa-router |
>=5.2.0 |
Custom Transactions
editBy default transactions are named based on their matched HTTP route if the framework used is listed above. These modules override that behavior to give better insights into specialized HTTP servers:
Module | Version | Note |
---|---|---|
^0.6.1 |
Will name all transactions by the GraphQL query name |
|
^2.0.2 |
Will name all transactions by the GraphQL query name |
Tracing and Instrumentation
editThe Node.js agent will automatically instrument the following modules to give you detailed performance metrics:
Module | Version | Note |
---|---|---|
>=3.0.0 |
Will instrument all queries |
|
>=8.0.0 |
Will instrument all queries |
|
>=0.7.0 <15.0.0 |
Will instrument all queries |
|
* |
Will instrument compile and render calls |
|
>=2.0.0 <5.0.0 |
Will instrument all queries |
|
>=1.2.19 <3.1.10 |
Will instrument all queries. A lot of higher level MongoDB modules use mongodb-core, so those should be supported as well |
|
>=2.0.0 |
Supported via mongodb-core |
|
>=1.0.0 |
Supported via mongodb-core |
|
>=4.0.0 |
Supported via mongodb-core |
|
^2.0.0 |
Will instrument all queries |
|
>=4.0.0 <8.0.0 |
Will instrument all queries |
|
^2.0.0 |
Will instrument all queries |
|
^0.0.5 |
Will instrument all queries |
|
>=1.0.0 <7.0.0 |
Will instrument outgoing WebSocket messages |
Better Stack Traces
editWhen viewing a span in Elastic APM, you’ll see where in your code you initiated the span (e.g. a database query).
Given the async nature of Node.js, it’s not possible for us to see further back than the last async boundary. We therefore make sure to monitor as close to your code as possible. But some modules will interfere with this monitoring by injecting an async call between your code and the actual monitored function.
We monitor these "offending" modules directly to give you a better experience.
The modules and versions listed below are the ones we support. If you use an unsupported version you might not be able to see your own code in the spans. This does not impact the stability of your application in any way - only the collected metrics.
If you don’t see your own code in spans, please create a new topic in the Elastic APM discuss forum and include information about your dependencies.
Module | Version |
---|---|
>=0.9.0 |
Continuity
editThe Elastic APM agent monitors async operations in your Node.js application to maintain awareness of which request is the active request at any given time. Certain modules can interfere with this monitoring if not handled properly.
Below is a list of modules known to cause issues with this monitoring. The versions listed are the versions we support. If you use an unsupported version you might experience missing spans. This does not impact the stability of your application in any way - only the collected metrics.
If you do experience missing spans in your performance metrics, please create a new topic in the Elastic APM discuss forum and include information about your dependencies and what data is missing.
Module | Version | Note |
---|---|---|
>=2.0.0 <4.0.0 |
||
\^2.0.0 || ^3.1.0 |
Used by a lot of database modules like for instance "pg" |
|
>=0.0.11 <1.0.0 |