Node.js
Node.js is a server-side framework based on the V8 JavaScript engine by Google. Node.js has an asynchronous execution model and is frequently used for gluing or as a proxy tier within enterprise environments
Capabilities
Dynatrace provides extensive Node.js monitoring capabilities:
- Heap and process metrics
- Heap dumps
- CPU sampling (see known limitations)
- Event loop metrics
- Insights into inbound and outbound HTTP calls
- Dedicated support for a variety of databases (includes query capture)
- Capturing OpenTelemetry traces
- OneAgent SDK for custom tracing
See our supported technologies matrix for details about supported technologies that will be used in conjunction with Node.js.
Support & desupport
Node.js follows an LTS release model.
Each odd-numbered version reaches EOL shortly after each new even-numbered version is released. Each even-numbered version eventually becomes an LTS release. For enterprise production environments, we recommend that you stick to LTS releases.
Whenever a new Node.js major version (even or uneven) is released, we add support for that version.
Dynatrace will follow this support model, but will support each Node.js version at least half a year longer to give our customers time for upgrades.
Node.js version | Vendor released | Vendor End of life | Supported by Dynatrace until | First supported Dynatrace OneAgent version | Last supported Dynatrace OneAgent version |
---|---|---|---|---|---|
16 | 2021/04/20 | 2024/04/30 | 2025/04/30 | 1.219 | |
15 | 2020/10/20 | 2021/06/01 | 2021/12/01 | 1.207 | |
14 | 2020/04/21 | 2023/04/30 | 2024/04/30 | 1.195 | |
13 | 2019/10/22 | 2020/06/01 | 2020/12/01 | 1.183 | 1.205 |
12 | 2019/04/23 | 2022/04/30 | 2023/04/30 | 1.171 | |
11 | 2018/10/23 | 2019/06/30 | 2019/12/31 | 1.181 | |
10 | 2015/04/24 | 2021/04/30 | 2022/04/30 | ||
9 | 2017/10/01 | 2018/06/30 | 2018/12/31 | 1.157 | |
8 | 2017/05/30 | 2019/12/31 | 2020/12/31 | ||
7 | 2015/10/25 | 2016/07/30 | 2017/11/30 | 1.131 | |
6 | 2016/04/26 | 2019/04/30 | 2019/10/31 | 1.179 | |
5 | 2015/10/29 | 2016/06/30 | 2017/10/31 | 1.129 | |
4 | 2015/09/08 | 2018/04/30 | 2018/12/31 | 1.157 | |
0.12 | 2015/02/06 | 2016/12/31 | 2017/10/31 | 1.129 | |
0.10 | 2013/03/01 | 2017/10/31 | 1.129 |
Known limitations
- Due to platform limitations of JavaScript and Node.js, code-level visibility is limited compared to .NET or Java.
- In conjunction with unsupported third-party modules, context can be lost in asynchronous callbacks. In such cases, please contact a Dynatrace ONE product specialist by clicking the chat button in the upper-right corner of the Dynatrace menu bar.
- Using the NPM module esm in variant 1 for packages might result in reduced visibility (especially if used for the main application script). It's preferable to use variant 2 to preload
esm
via the-r
command line option. - There is currently only limited support for ECMAScript modules (aka "ES6 modules"):
- If the main script file itself is an ECMAScript module OneAgent version 1.219+ with Agent preloading enabled is needed for the OneAgent to be injected into the Node.js process.
- Instrumentation of ECMAScript modules is currently not available. This limits support for
kafkajs
in case the user defined entrypoint for the KafkaJs sensor is inside an ECMAScript module.
- Webpack bundles all modules into a single file by default. OneAgent is unable to instrument bundled modules. To work around this limitation all modules which need to be instrumented by the OneAgent (e.g. express, mongodb, pg,…) have to be externalized in the webpack configuration. See webpack Externals documentation for details.
- Ambient Sampling limitations for certain OneAgent versions: Google V8 is affected by a series of memory and CPU overhead issues, which is a blocker for production-level background CPU profiling:
- memory leak
- excessive peak memory consumption
- excessive CPU overhead on Windows systems Therefore, CPU profiling (ambient sampling) is not enabled by default for all OneAgent versions:
- Ambient sampling is enabled by default as of OneAgent version 1.181 As of OneAgent version 1.181 the above limitations have been resolved by not using v8 CpuProfiler for Ambient Sampling. Ambient Sampling is fully available on all supported platforms and all supported Node.js versions without any restrictions.
- Ambient sampling is disabled by default for OneAgent versions 1.157 up to 1.179 On Linux ambient sampling can be enabled for the following Node.js versions:
- Node.js version 6
- Node.js versions ^8.9.4 (8.9.4 <= node.js < 9.0.0)
- Node.js version 9.3.0 or later On Windows ambient sampling is disabled for these OneAgent versions, because it would cause 100% CPU usage for one CPU. OneAgent records a log entry for each unsupported version it detects:
AmbientSampling: <unsupported platform> / <node version>
Further reading
- How do I monitor Cloud Foundry applications?
- Blog: Understanding Garbage Collection and hunting Memory Leaks in Node.js
- Blog: How to track down CPU issues in Node.js
- Blog: All you need to know to really understand the Node.js Event Loop and its Metrics