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 a...»)
 
 
(не показаны 4 промежуточные версии 3 участников)
Строка 1: Строка 1:
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
'''''[[Поддержка технологий]] / Node.js'''''


== Capabilities            ==
[https://nodejs.org/en Node.js] - это серверный фреймворк, основанный на движке [https://v8.dev/ JavaScript V8] от Google. Node.js имеет асинхронную модель выполнения и часто используется для склейки или в качестве уровня прокси в корпоративных средах.
Dynatrace provides extensive Node.js monitoring capabilities:


* Heap and process metrics
== Возможности            ==
Ключ-Астром предоставляет обширные возможности мониторинга Node.js:
* Метрики процесса
* Heap dumps
* Heap dumps
* CPU sampling (see known limitations)
*Выборка процессора (см. Известные ограничения)
* Event loop metrics
* Показатели цикла событий
* Insights into inbound and outbound HTTP calls
* Анализ входящих и исходящих HTTP-вызовов
* Dedicated support for a variety of databases (includes query capture)
*Выделенная поддержка для множества баз данных (включая захват запросов)
* Capturing OpenTelemetry traces
*Захват трассировок '''OpenTelemetry'''
* OneAgent SDK for custom tracing
*ЕдиныйАгент '''SDK''' для пользовательской трассировки
См. Нашу матрицу поддерживаемых технологий для получения подробной информации о поддерживаемых технологиях, которые будут использоваться вместе с '''Node.js'''.


See our supported technologies matrix for details about supported technologies that will be used in conjunction with Node.js.
== Поддержка и отказ от поддержки            ==
'''Node.js''' следует модели выпуска '''LTS'''.


== Support & desupport            ==
Каждая версия с нечетным номером достигает '''EOL''' вскоре после выпуска каждой новой версии с четным номером. Каждая четная версия в конечном итоге становится '''LTS'''-выпуском. Для корпоративных производственных сред мы рекомендуем придерживаться выпусков '''LTS'''.
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.
Каждый раз, когда выпускается новая основная версия '''Node.js''' (четная или нечетная), мы добавляем поддержку этой версии.


Whenever a new Node.js major version (even or uneven) is released, we add support for that version.
Ключ-Астром будет следовать этой модели поддержки, но будет поддерживать каждую версию '''Node.js''' как минимум на полгода дольше, чтобы у наших клиентов было время для обновлений.
 
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.
{| class="wikitable"
{| class="wikitable"
!Node.js version
!Node.js version
!Vendor released
!Выпущено вендором
!Vendor End of life
!Конец поддержки вендором
!Supported by Dynatrace until
!Первая поддерживаемая версия ЕдиногоАгена
!First supported Dynatrace OneAgent version
!Последняя поддерживаемая версия ЕдиногоАгента
!Last supported Dynatrace OneAgent version
!Поддержка Ключ-Астром до
!Уровень поддержки Ключ-Астром
|-
|23
|2024-10-16
|2025-06-01
|1.305
| -
|2025-12-01
|Поддерживается <sup>1</sup>
|-
|22
|2024-04-23
|2027-04-30
|1.295
| -
|2028-04-30
|Поддерживается <sup>1</sup>
|-
|21
|2023-10-17
|2024-06-01
|1.281
|1.303
|2024-12-01
|Не поддерживается
|-
|20
|2023-04-18
|2026-04-30
|1.271
| -
|2027-04-30
|Поддерживается <sup>1</sup>
|-
|19
|2022-10-18
|2023-06-01
|1.257
|1.285
|2023-12-01
|Не поддерживается
|-
|18
|2022-04-19
|2025-04-30
|1.243
| -
|2026-04-30
|Поддерживается <sup>2</sup>
|-
|17
|2021-10-19
|2022-06-01
|1.235
| -
|2022-12-01
|Не поддерживается
|-
|-
|16
|16
|2021/04/20
|2021-04-20
|2024/04/30
|2024-04-30
|2025/04/30
|1.219
|1.219
|
| -
|2025-04-30
|Ограничено <sup>3</sup>
|-
|-
|15
|15
|2020/10/20
|2020-10-20
|2021/06/01
|2021-06-01
|2021/12/01
|1.207
|1.207
|
|1.233
|2021-12-01
|Не поддерживается
|-
|-
|14
|14
|2020/04/21
|2020-04-21
|2023/04/30
|2023-04-30
|2024/04/30
|1.195
|1.195
|
| -
|2024-04-30
|Ограничено <sup>3</sup>
|-
|-
|13
|13
|2019/10/22
|2019-10-22
|2020/06/01
|2020-06-01
|2020/12/01
|1.183
|1.183
|1.205
|1.205
|2020-12-01
|Не поддерживается
|-
|-
|12
|12
|2019/04/23
|2019-04-23
|2022/04/30
|2022-04-30
|2023/04/30
|1.171
|1.171
|
| -
|2023-04-30
|Ограничено <sup>3</sup>
|-
|-
|11
|11
|2018/10/23
|2018-10-23
|2019/06/30
|2019-06-30
|2019/12/31
|1.159
|
|1.181
|1.181
|2019-12-31
|Не поддерживается
|-
|-
|10
|10
|2015/04/24
|2015-04-24
|2021/04/30
|2021-04-30
|2022/04/30
|1.147
|
| -
|
|2022-04-30
|Устарело <sup>4</sup>
|-
|-
|9
|9
|2017/10/01
|2017-10-01
|2018/06/30
|2018-06-30
|2018/12/31
| -
|
|1.157
|1.157
|2018-12-31
|Не поддерживается
|-
|-
|8
|8
|2017/05/30
|2017-05-30
|2019/12/31
|2019-12-31
|2020/12/31
| -
|
|1.239
|
|2020-12-31
|Не поддерживается
|}
<sup>1</sup> Веб-потоки, клиент WebSocket и функции, помеченные как «экспериментальные», не поддерживаются.
 
<sup>2</sup> Для поддержки архитектуры ЦП s390x требуется ЕдиныйАгент версии 1.271+.
 
<sup>3</sup> Ограниченная поддержка: Ключ-АСТРОМ может решить только те проблемы, которые можно воспроизвести в поддерживаемых версиях.
 
<sup>4</sup> Устарело: инструментирование отключено по умолчанию в ЕдиныйАгент версии 1.321 и выше. Для включения инструментария определите переменную среды <code>DT_SUPPORT_DEPRECATED_NODE_VERSIONS</code>.
 
== Непрерывный анализ для рабочих потоков ==
<code>Node.js версии 12+</code> <code>ЕдиныйАгент версии 1.251+</code> <code>Ключ-АСТРОМ версии 1.256+</code>
 
Непрерывный анализ [https://nodejs.org/api/worker_threads.html#worker-thread рабочих потоков] позволяет автоматически определять потоки с высокой загрузкой процессора и точно определять проблемы масштабируемости, когда работа распределена между несколькими потоками. Это позволяет устранить узкие места производительности до того, как это повлияет на конечных пользователей.
 
Чтобы начать непрерывный анализ рабочих потоков, активируйте функции ЕдиногоАгента: мониторинг рабочих потоков '''Node.js''' и предварительную загрузку модуля кода '''Node.js'''.
{| class="wikitable"
|-
|-
|7
|<u>Ограничения</u>
|2015/10/25
 
|2016/07/30
Метрики, специфичные для Node.js (например, память, сборка мусора и циклы событий), сообщаются только для потока <code>main</code>.
|2017/11/30
 
|
Просмотр классов (необходимый для пользовательских служб обмена сообщениями '''kafkajs''') ограничен потоком <code>main</code>.
|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
|}
|}
Автоматическая трассировка <code>main</code> транзакций между потоками и не реализована <code>worker</code>. Для трассировки транзакций между потоками можно использовать трассировку OpenTelemetry или ЕдиныйАгент SDK.


== Known limitations           ==
== Известные ограничения           ==


* Due to platform limitations of JavaScript and Node.js, code-level visibility is limited compared to .NET or Java.
* Из-за ограничений платформы '''JavaScript''' и '''Node.js''' видимость на уровне кода ограничена по сравнению с '''.NET''' или '''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 <code>esm</code> via the <code>-r</code> command line option.
* <code>ЕдиныйАгент версии 1.279+</code> Время ЦП для сервисов '''Node.js''' не указывается. Эти цифры вводили в заблуждение, поскольку по умолчанию большая часть любой операции выполняется асинхронно внутри среды выполнения '''Node.js''', без возможности соотнести фактическое время ЦП с конкретным сервисом.
* There is currently only limited support for ECMAScript modules (aka "ES6 modules"):
* Использование модуля [https://github.com/standard-things/esm NPM esm] в [https://github.com/standard-things/esm/tree/3.2.25#getting-started варианте 1] для пакетов может привести к снижению видимости (особенно при использовании для основного скрипта приложения). Предпочтительнее использовать вариант 2 для предварительной загрузки <code>esm</code> через командную строку <code>-r</code>.
** 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.
* В настоящее время существует только ограниченная поддержка модулей [https://nodejs.org/api/esm.html ECMAScript] (также известных как «модули ES6»):
** Instrumentation of ECMAScript modules is currently not available. This limits support for <code>kafkajs</code> in case the user defined entrypoint for the KafkaJs sensor is inside an ECMAScript module.
** Если основной файл скрипта представляет собой модуль '''ECMAScript''', то для внедрения ЕдиногоАгента в процесс '''Node.js''' необходим ЕдиныйАгент версии 1.219+ с включенной предварительной загрузкой агента.
* '''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.
** Инструментирование модулей '''ECMAScript''' в настоящее время недоступно. Это ограничивает поддержку <code>kafkajs</code> в случае, если пользовательская точка входа для датчика '''KafkaJs''' находится внутри модуля '''ECMAScript'''.
* '''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:
* По умолчанию '''Webpack''' объединяет все модули в один файл. ЕдиныйАгент не может инструментировать связанные модули. Чтобы обойти это ограничение, все модули, которые необходимо инструментировать с помощью ЕдиногоАгента (например, <code>express</code>, <code>mongodb</code> и <code>pg</code>), необходимо вынести в конфигурацию '''Webpack''' как внешние. Подробнее см. в документации по внешним [https://webpack.js.org/configuration/externals/ модулям Webpack].
** memory leak
* Использование '''Webpack''' или других сборщиков пакетов также может повлиять на автоматическое обнаружение уязвимостей. Это связано с тем, что компоненты программного обеспечения не могут быть обнаружены, поскольку они скрыты за конфигурацией сборщика пакетов и недоступны во время выполнения. Обнаружение и составление отчётов возможны только для пакетов, развёрнутых как внешние.
** 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:  <code>AmbientSampling: <unsupported platform> / <node version></code>


== Further reading            ==
== Журналы процессов с помощью анализаторов технологических пакетов ==
Через '''OpenPipeline''' можно использовать и настраивать технологические пакеты. Технологический пакет — это библиотека парсеров (правил обработки), которые обрабатывают журналы различных технологий, таких как '''Java''', '''.NET''', '''Microsoft IIS''' и т. д.


* How do I monitor Cloud Foundry applications?
Парсеры помогают улучшить фильтрацию, устранение неполадок, метрики, оповещения и панели мониторинга, эффективно извлекая уровни журналов и соответствующие атрибуты. Вы также можете использовать пакеты технологий для структурирования журналов, созданных с использованием технологий, которые не поддерживаются Ключ-АСТРОМ изначально.
* Blog: Understanding Garbage Collection and hunting Memory Leaks in Node.js
[[Файл:Image4080.png|граница]]
* 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

Текущая версия на 14:29, 11 ноября 2025

Поддержка технологий / Node.js

Node.js - это серверный фреймворк, основанный на движке JavaScript V8 от Google. Node.js имеет асинхронную модель выполнения и часто используется для склейки или в качестве уровня прокси в корпоративных средах.

Возможности

Ключ-Астром предоставляет обширные возможности мониторинга Node.js:

  • Метрики процесса
  • Heap dumps
  • Выборка процессора (см. Известные ограничения)
  • Показатели цикла событий
  • Анализ входящих и исходящих HTTP-вызовов
  • Выделенная поддержка для множества баз данных (включая захват запросов)
  • Захват трассировок OpenTelemetry
  • ЕдиныйАгент SDK для пользовательской трассировки

См. Нашу матрицу поддерживаемых технологий для получения подробной информации о поддерживаемых технологиях, которые будут использоваться вместе с Node.js.

Поддержка и отказ от поддержки

Node.js следует модели выпуска LTS.

Каждая версия с нечетным номером достигает EOL вскоре после выпуска каждой новой версии с четным номером. Каждая четная версия в конечном итоге становится LTS-выпуском. Для корпоративных производственных сред мы рекомендуем придерживаться выпусков LTS.

Каждый раз, когда выпускается новая основная версия Node.js (четная или нечетная), мы добавляем поддержку этой версии.

Ключ-Астром будет следовать этой модели поддержки, но будет поддерживать каждую версию Node.js как минимум на полгода дольше, чтобы у наших клиентов было время для обновлений.

Node.js version Выпущено вендором Конец поддержки вендором Первая поддерживаемая версия ЕдиногоАгена Последняя поддерживаемая версия ЕдиногоАгента Поддержка Ключ-Астром до Уровень поддержки Ключ-Астром
23 2024-10-16 2025-06-01 1.305 - 2025-12-01 Поддерживается 1
22 2024-04-23 2027-04-30 1.295 - 2028-04-30 Поддерживается 1
21 2023-10-17 2024-06-01 1.281 1.303 2024-12-01 Не поддерживается
20 2023-04-18 2026-04-30 1.271 - 2027-04-30 Поддерживается 1
19 2022-10-18 2023-06-01 1.257 1.285 2023-12-01 Не поддерживается
18 2022-04-19 2025-04-30 1.243 - 2026-04-30 Поддерживается 2
17 2021-10-19 2022-06-01 1.235 - 2022-12-01 Не поддерживается
16 2021-04-20 2024-04-30 1.219 - 2025-04-30 Ограничено 3
15 2020-10-20 2021-06-01 1.207 1.233 2021-12-01 Не поддерживается
14 2020-04-21 2023-04-30 1.195 - 2024-04-30 Ограничено 3
13 2019-10-22 2020-06-01 1.183 1.205 2020-12-01 Не поддерживается
12 2019-04-23 2022-04-30 1.171 - 2023-04-30 Ограничено 3
11 2018-10-23 2019-06-30 1.159 1.181 2019-12-31 Не поддерживается
10 2015-04-24 2021-04-30 1.147 - 2022-04-30 Устарело 4
9 2017-10-01 2018-06-30 - 1.157 2018-12-31 Не поддерживается
8 2017-05-30 2019-12-31 - 1.239 2020-12-31 Не поддерживается

1 Веб-потоки, клиент WebSocket и функции, помеченные как «экспериментальные», не поддерживаются.

2 Для поддержки архитектуры ЦП s390x требуется ЕдиныйАгент версии 1.271+.

3 Ограниченная поддержка: Ключ-АСТРОМ может решить только те проблемы, которые можно воспроизвести в поддерживаемых версиях.

4 Устарело: инструментирование отключено по умолчанию в ЕдиныйАгент версии 1.321 и выше. Для включения инструментария определите переменную среды DT_SUPPORT_DEPRECATED_NODE_VERSIONS.

Непрерывный анализ для рабочих потоков

Node.js версии 12+ ЕдиныйАгент версии 1.251+ Ключ-АСТРОМ версии 1.256+

Непрерывный анализ рабочих потоков позволяет автоматически определять потоки с высокой загрузкой процессора и точно определять проблемы масштабируемости, когда работа распределена между несколькими потоками. Это позволяет устранить узкие места производительности до того, как это повлияет на конечных пользователей.

Чтобы начать непрерывный анализ рабочих потоков, активируйте функции ЕдиногоАгента: мониторинг рабочих потоков Node.js и предварительную загрузку модуля кода Node.js.

Ограничения

Метрики, специфичные для Node.js (например, память, сборка мусора и циклы событий), сообщаются только для потока main.

Просмотр классов (необходимый для пользовательских служб обмена сообщениями kafkajs) ограничен потоком main.

Автоматическая трассировка main транзакций между потоками и не реализована worker. Для трассировки транзакций между потоками можно использовать трассировку OpenTelemetry или ЕдиныйАгент SDK.

Известные ограничения

  • Из-за ограничений платформы JavaScript и Node.js видимость на уровне кода ограничена по сравнению с .NET или Java.
  • В сочетании с неподдерживаемыми сторонними модулями контекст может быть потерян в асинхронных обратных вызовах. В таких случаях обратитесь к эксперту по продукту Ключ-АСТРОМ через онлайн-чат в вашей среде Ключ-АСТРОМ.
  • ЕдиныйАгент версии 1.279+ Время ЦП для сервисов Node.js не указывается. Эти цифры вводили в заблуждение, поскольку по умолчанию большая часть любой операции выполняется асинхронно внутри среды выполнения Node.js, без возможности соотнести фактическое время ЦП с конкретным сервисом.
  • Использование модуля NPM esm в варианте 1 для пакетов может привести к снижению видимости (особенно при использовании для основного скрипта приложения). Предпочтительнее использовать вариант 2 для предварительной загрузки esm через командную строку -r.
  • В настоящее время существует только ограниченная поддержка модулей ECMAScript (также известных как «модули ES6»):
    • Если основной файл скрипта представляет собой модуль ECMAScript, то для внедрения ЕдиногоАгента в процесс Node.js необходим ЕдиныйАгент версии 1.219+ с включенной предварительной загрузкой агента.
    • Инструментирование модулей ECMAScript в настоящее время недоступно. Это ограничивает поддержку kafkajs в случае, если пользовательская точка входа для датчика KafkaJs находится внутри модуля ECMAScript.
  • По умолчанию Webpack объединяет все модули в один файл. ЕдиныйАгент не может инструментировать связанные модули. Чтобы обойти это ограничение, все модули, которые необходимо инструментировать с помощью ЕдиногоАгента (например, express, mongodb и pg), необходимо вынести в конфигурацию Webpack как внешние. Подробнее см. в документации по внешним модулям Webpack.
  • Использование Webpack или других сборщиков пакетов также может повлиять на автоматическое обнаружение уязвимостей. Это связано с тем, что компоненты программного обеспечения не могут быть обнаружены, поскольку они скрыты за конфигурацией сборщика пакетов и недоступны во время выполнения. Обнаружение и составление отчётов возможны только для пакетов, развёрнутых как внешние.

Журналы процессов с помощью анализаторов технологических пакетов

Через OpenPipeline можно использовать и настраивать технологические пакеты. Технологический пакет — это библиотека парсеров (правил обработки), которые обрабатывают журналы различных технологий, таких как Java, .NET, Microsoft IIS и т. д.

Парсеры помогают улучшить фильтрацию, устранение неполадок, метрики, оповещения и панели мониторинга, эффективно извлекая уровни журналов и соответствующие атрибуты. Вы также можете использовать пакеты технологий для структурирования журналов, созданных с использованием технологий, которые не поддерживаются Ключ-АСТРОМ изначально. Image4080.png