Node.js: различия между версиями

Материал из Документация Ключ-АСТРОМ
 
(не показана 1 промежуточная версия 1 участника)
Строка 1: Строка 1:
Node.js - это серверный фреймворк, основанный на движке JavaScript V8 от Google. Node.js имеет асинхронную модель выполнения и часто используется для склейки или в качестве уровня прокси в корпоративных средах.
'''''[[Поддержка технологий]] / Node.js'''''
 
[https://nodejs.org/en Node.js] - это серверный фреймворк, основанный на движке [https://v8.dev/ JavaScript V8] от Google. Node.js имеет асинхронную модель выполнения и часто используется для склейки или в качестве уровня прокси в корпоративных средах.


== Возможности            ==
== Возможности            ==
Ключ-Астром предоставляет обширные возможности мониторинга Node.js:
Ключ-Астром предоставляет обширные возможности мониторинга Node.js:
* Куча и метрики процесса
* Метрики процесса
* Heap dumps
* Heap dumps
*Выборка процессора (см. Известные ограничения)
*Выборка процессора (см. Известные ограничения)
Строка 9: Строка 11:
* Анализ входящих и исходящих HTTP-вызовов
* Анализ входящих и исходящих HTTP-вызовов
*Выделенная поддержка для множества баз данных (включая захват запросов)
*Выделенная поддержка для множества баз данных (включая захват запросов)
*Захват следов OpenTelemetry
*Захват трассировок '''OpenTelemetry'''
*ЕдиныйАгент SDK для пользовательской трассировки
*ЕдиныйАгент '''SDK''' для пользовательской трассировки
См. Нашу матрицу поддерживаемых технологий для получения подробной информации о поддерживаемых технологиях, которые будут использоваться вместе с Node.js.
См. Нашу матрицу поддерживаемых технологий для получения подробной информации о поддерживаемых технологиях, которые будут использоваться вместе с '''Node.js'''.


== Поддержка и отказ от поддержки            ==
== Поддержка и отказ от поддержки            ==
Node.js следует модели выпуска LTS.
'''Node.js''' следует модели выпуска '''LTS'''.


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


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


Ключ-Астром будет следовать этой модели поддержки, но будет поддерживать каждую версию Node.js как минимум на полгода дольше, чтобы у наших клиентов было время для обновлений.
Ключ-Астром будет следовать этой модели поддержки, но будет поддерживать каждую версию '''Node.js''' как минимум на полгода дольше, чтобы у наших клиентов было время для обновлений.
{| class="wikitable"
{| class="wikitable"
!Node.js version
!Node.js version
Строка 29: Строка 31:
!Поддержка Ключ-Астром до
!Поддержка Ключ-Астром до
!Уровень поддержки Ключ-Астром
!Уровень поддержки Ключ-Астром
|-
|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
|18
Строка 36: Строка 78:
| -
| -
|2026-04-30
|2026-04-30
|Поддерживается<sup>1</sup>
|Поддерживается <sup>2</sup>
|-
|-
|17
|17
Строка 44: Строка 86:
| -
| -
|2022-12-01
|2022-12-01
|Поддерживается
|Не поддерживается
|-
|-
|16
|16
Строка 52: Строка 94:
| -
| -
|2025-04-30
|2025-04-30
|Поддерживается
|Ограничено <sup>3</sup>
|-
|-
|15
|15
Строка 68: Строка 110:
| -
| -
|2024-04-30
|2024-04-30
|Поддерживается
|Ограничено <sup>3</sup>
|-
|-
|13
|13
Строка 84: Строка 126:
| -
| -
|2023-04-30
|2023-04-30
|Поддерживается
|Ограничено <sup>3</sup>
|-
|-
|11
|11
Строка 100: Строка 142:
| -
| -
|2022-04-30
|2022-04-30
|Ограничено<sup>2</sup>
|Устарело <sup>4</sup>
|-
|-
|9
|9
Строка 118: Строка 160:
|Не поддерживается
|Не поддерживается
|}
|}
<sup>1</sup> Новые функции Node.js 18, помеченные как «экспериментальные», не поддерживаются.
<sup>1</sup> Веб-потоки, клиент WebSocket и функции, помеченные как «экспериментальные», не поддерживаются.


<sup>2</sup> Ограниченная поддержка: Ключ-Астром может решать только те проблемы, которые можно воспроизвести в поддерживаемых версиях.
<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"
|-
|<u>Ограничения</u>
 
Метрики, специфичные для Node.js (например, память, сборка мусора и циклы событий), сообщаются только для потока <code>main</code>.
 
Просмотр классов (необходимый для пользовательских служб обмена сообщениями '''kafkajs''') ограничен потоком <code>main</code>.
|}
Автоматическая трассировка <code>main</code> транзакций между потоками и не реализована <code>worker</code>. Для трассировки транзакций между потоками можно использовать трассировку OpenTelemetry или ЕдиныйАгент SDK.


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


*Из-за ограничений платформы JavaScript и Node.js видимость на уровне кода ограничена по сравнению с .NET или Java.
* Из-за ограничений платформы '''JavaScript''' и '''Node.js''' видимость на уровне кода ограничена по сравнению с '''.NET''' или '''Java'''.
*В сочетании с неподдерживаемыми сторонними модулями контекст может быть потерян в асинхронных обратных вызовах. В таких случаях свяжитесь со специалистом по продуктам Ключ-Астром ONE, нажав кнопку чата в правом верхнем углу строки меню Ключ-Астром.
* В сочетании с неподдерживаемыми сторонними модулями контекст может быть потерян в асинхронных обратных вызовах. В таких случаях обратитесь к эксперту по продукту Ключ-АСТРОМ через онлайн-чат в вашей среде Ключ-АСТРОМ.
*Использование модуля esm NPM в варианте 1 для пакетов может привести к снижению видимости (особенно если используется для основного сценария приложения). Предпочтительно использовать вариант 2 для предварительной загрузки esm с помощью параметра командной строки -r.
* <code>ЕдиныйАгент версии 1.279+</code> Время ЦП для сервисов '''Node.js''' не указывается. Эти цифры вводили в заблуждение, поскольку по умолчанию большая часть любой операции выполняется асинхронно внутри среды выполнения '''Node.js''', без возможности соотнести фактическое время ЦП с конкретным сервисом.
*В настоящее время существует только ограниченная поддержка модулей ECMAScript (также известных как «модули ES6»):
* Использование модуля [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>.
**Если сам основной файл сценария представляет собой модуль ECMAScript, для внедрения ЕдиногоАгента в процесс Node.js требуется ЕдиныйАгент версии 1.219+ с включенной предварительной загрузкой агента.
* В настоящее время существует только ограниченная поддержка модулей [https://nodejs.org/api/esm.html ECMAScript] (также известных как «модули ES6»):
**Инструментарий модулей ECMAScript в настоящее время недоступен. Это ограничивает поддержку kafkajs, если определяемая пользователем точка входа для сенсора KafkaJs находится внутри модуля ECMAScript.
** Если основной файл скрипта представляет собой модуль '''ECMAScript''', то для внедрения ЕдиногоАгента в процесс '''Node.js''' необходим ЕдиныйАгент версии 1.219+ с включенной предварительной загрузкой агента.
*'''Webpack''' по умолчанию объединяет все модули в один файл. ЕдиныйАгент не может инструментировать связанные модули. Чтобы обойти это ограничение, все модули, которые должны быть инструментированы ЕдинымАгентом (такие как express, mongodb и pg), должны быть внешними в конфигурации веб-пакета. Подробнее см. в документации по внешним компонентам webpack.
** Инструментирование модулей '''ECMAScript''' в настоящее время недоступно. Это ограничивает поддержку <code>kafkajs</code> в случае, если пользовательская точка входа для датчика '''KafkaJs''' находится внутри модуля '''ECMAScript'''.
* По умолчанию '''Webpack''' объединяет все модули в один файл. ЕдиныйАгент не может инструментировать связанные модули. Чтобы обойти это ограничение, все модули, которые необходимо инструментировать с помощью ЕдиногоАгента (например, <code>express</code>, <code>mongodb</code> и <code>pg</code>), необходимо вынести в конфигурацию '''Webpack''' как внешние. Подробнее см. в документации по внешним [https://webpack.js.org/configuration/externals/ модулям Webpack].
* Использование '''Webpack''' или других сборщиков пакетов также может повлиять на автоматическое обнаружение уязвимостей. Это связано с тем, что компоненты программного обеспечения не могут быть обнаружены, поскольку они скрыты за конфигурацией сборщика пакетов и недоступны во время выполнения. Обнаружение и составление отчётов возможны только для пакетов, развёрнутых как внешние.
 
== Журналы процессов с помощью анализаторов технологических пакетов ==
Через '''OpenPipeline''' можно использовать и настраивать технологические пакеты. Технологический пакет — это библиотека парсеров (правил обработки), которые обрабатывают журналы различных технологий, таких как '''Java''', '''.NET''', '''Microsoft IIS''' и т. д.
 
Парсеры помогают улучшить фильтрацию, устранение неполадок, метрики, оповещения и панели мониторинга, эффективно извлекая уровни журналов и соответствующие атрибуты. Вы также можете использовать пакеты технологий для структурирования журналов, созданных с использованием технологий, которые не поддерживаются Ключ-АСТРОМ изначально.
[[Файл:Image4080.png|граница]]

Текущая версия на 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