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

Материал из Dynatrace
Строка 2: Строка 2:


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


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


Dynatrace будет следовать этой модели поддержки, но будет поддерживать каждую версию Node.js как минимум на полгода дольше, чтобы у наших клиентов было время для обновлений.
Ключ-Астром будет следовать этой модели поддержки, но будет поддерживать каждую версию Node.js как минимум на полгода дольше, чтобы у наших клиентов было время для обновлений.
{| class="wikitable"
{| class="wikitable"
!Node.js version
!Node.js version
!Vendor released
!Vendor released
!Vendor End of life
!Vendor End of life
!Supported by Dynatrace until
!Supported by Ключ-Астром until
!First supported Dynatrace OneAgent version
!First supported Ключ-Астром ЕдиныйАгент version
!Last supported Dynatrace OneAgent version
!Last supported Ключ-Астром ЕдиныйАгент version
|-
|-
|16
|16
Строка 138: Строка 138:


*Из-за ограничений платформы JavaScript и Node.js видимость на уровне кода ограничена по сравнению с .NET или Java.
*Из-за ограничений платформы JavaScript и Node.js видимость на уровне кода ограничена по сравнению с .NET или Java.
* В сочетании с неподдерживаемыми сторонними модулями контекст может быть потерян в асинхронных обратных вызовах. В таких случаях свяжитесь со специалистом по продукту Dynatrace ONE, нажав кнопку чата в правом верхнем углу строки меню Dynatrace.
* В сочетании с неподдерживаемыми сторонними модулями контекст может быть потерян в асинхронных обратных вызовах. В таких случаях свяжитесь со специалистом по продукту Ключ-Астром ONE, нажав кнопку чата в правом верхнем углу строки меню Ключ-Астром.
*Использование модуля NPM esm в варианте 1 для пакетов может привести к снижению видимости (особенно, если он используется для основного сценария приложения). Предпочтительно использовать вариант 2 для предварительной загрузки esm с помощью параметра командной строки -r.
*Использование модуля NPM esm в варианте 1 для пакетов может привести к снижению видимости (особенно, если он используется для основного сценария приложения). Предпочтительно использовать вариант 2 для предварительной загрузки esm с помощью параметра командной строки -r.
*В настоящее время существует только ограниченная поддержка модулей ECMAScript (также известных как «модули ES6»):
*В настоящее время существует только ограниченная поддержка модулей ECMAScript (также известных как «модули ES6»):
**Если сам основной файл сценария является модулем ECMAScript, OneAgent версии 1.219+ с включенной предварительной загрузкой агента необходим для внедрения OneAgent в процесс Node.js.
**Если сам основной файл сценария является модулем ECMAScript, ЕдиныйАгент версии 1.219+ с включенной предварительной загрузкой агента необходим для внедрения ЕдиныйАгент в процесс Node.js.
** Инструментарий модулей ECMAScript в настоящее время недоступен. Это ограничивает поддержку kafkajs в случае, если пользовательская точка входа для датчика KafkaJs находится внутри модуля ECMAScript.
** Инструментарий модулей ECMAScript в настоящее время недоступен. Это ограничивает поддержку kafkajs в случае, если пользовательская точка входа для датчика KafkaJs находится внутри модуля ECMAScript.
* По умолчанию '''Webpack''' объединяет все модули в один файл. OneAgent не может инструментировать связанные модули. Чтобы обойти это ограничение, все модули, которые необходимо инструментировать с помощью OneAgent (например, express, mongodb, pg,…), должны быть экстернализованы в конфигурации webpack. Подробности см. В документации Webpack Externals.
* По умолчанию '''Webpack''' объединяет все модули в один файл. ЕдиныйАгент не может инструментировать связанные модули. Чтобы обойти это ограничение, все модули, которые необходимо инструментировать с помощью ЕдиныйАгент (например, express, mongodb, pg,…), должны быть экстернализованы в конфигурации webpack. Подробности см. В документации Webpack Externals.
* Ограничения внешней выборки для определенных версий OneAgent: Google V8 подвержен ряду проблем с памятью и нагрузкой на ЦП, что препятствует фоновому профилированию ЦП на производственном уровне:
* Ограничения внешней выборки для определенных версий ЕдиныйАгент: Google V8 подвержен ряду проблем с памятью и нагрузкой на ЦП, что препятствует фоновому профилированию ЦП на производственном уровне:
** утечка памяти
** утечка памяти
**чрезмерное пиковое потребление памяти
**чрезмерное пиковое потребление памяти
**чрезмерная нагрузка на ЦП в системах Windows Таким образом, профилирование ЦП (окружающая выборка) не включено по умолчанию для всех версий OneAgent:
**чрезмерная нагрузка на ЦП в системах Windows Таким образом, профилирование ЦП (окружающая выборка) не включено по умолчанию для всех версий ЕдиныйАгент:
** Внешняя выборка включена по умолчанию в OneAgent версии 1.181. В OneAgent версии 1.181 вышеупомянутые ограничения были устранены за счет отказа от использования v8 CpuProfiler для внешней выборки. Ambient Sampling полностью доступен на всех поддерживаемых платформах и во всех поддерживаемых версиях Node.js без каких-либо ограничений.
** Внешняя выборка включена по умолчанию в ЕдиныйАгент версии 1.181. В ЕдиныйАгент версии 1.181 вышеупомянутые ограничения были устранены за счет отказа от использования v8 CpuProfiler для внешней выборки. Ambient Sampling полностью доступен на всех поддерживаемых платформах и во всех поддерживаемых версиях Node.js без каких-либо ограничений.
**Внешняя выборка отключена по умолчанию для OneAgent версий от 1.157 до 1.179. В Linux внешняя выборка может быть включена для следующих версий Node.js:
**Внешняя выборка отключена по умолчанию для ЕдиныйАгент версий от 1.157 до 1.179. В Linux внешняя выборка может быть включена для следующих версий Node.js:
*** Node.js version 6
*** Node.js version 6
*** Node.js versions ^8.9.4 (8.9.4 <= node.js < 9.0.0)
*** 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>
*** Node.js версии 9.3.0 или более поздней. В Windows выборка окружающей среды отключена для этих версий ЕдиныйАгент, так как это приведет к 100% загрузке ЦП для одного ЦП. ЕдиныйАгент записывает в журнал записи для каждой обнаруженной неподдерживаемой версии: <code>AmbientSampling: <unsupported platform> / <node version></code>


== Further reading           ==
== Дальнейшее чтение           ==


* How do I monitor Cloud Foundry applications?
*Как отслеживать приложения Cloud Foundry?
* Blog: Understanding Garbage Collection and hunting Memory Leaks in Node.js
* Блог: Общие сведения о сборке мусора и поиск утечек памяти в Node.js
* Blog: How to track down CPU issues in Node.js
*Блог: как отслеживать проблемы с процессором в Node.js
* Blog: All you need to know to really understand the Node.js Event Loop and its Metrics
*Блог: все, что вам нужно знать, чтобы по-настоящему понять цикл событий Node.js и его показатели.

Версия 08:25, 1 декабря 2021

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 Vendor released Vendor End of life Supported by Ключ-Астром until First supported Ключ-Астром ЕдиныйАгент version Last supported Ключ-Астром ЕдиныйАгент 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

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

  • Из-за ограничений платформы JavaScript и Node.js видимость на уровне кода ограничена по сравнению с .NET или Java.
  • В сочетании с неподдерживаемыми сторонними модулями контекст может быть потерян в асинхронных обратных вызовах. В таких случаях свяжитесь со специалистом по продукту Ключ-Астром ONE, нажав кнопку чата в правом верхнем углу строки меню Ключ-Астром.
  • Использование модуля NPM esm в варианте 1 для пакетов может привести к снижению видимости (особенно, если он используется для основного сценария приложения). Предпочтительно использовать вариант 2 для предварительной загрузки esm с помощью параметра командной строки -r.
  • В настоящее время существует только ограниченная поддержка модулей ECMAScript (также известных как «модули ES6»):
    • Если сам основной файл сценария является модулем ECMAScript, ЕдиныйАгент версии 1.219+ с включенной предварительной загрузкой агента необходим для внедрения ЕдиныйАгент в процесс Node.js.
    • Инструментарий модулей ECMAScript в настоящее время недоступен. Это ограничивает поддержку kafkajs в случае, если пользовательская точка входа для датчика KafkaJs находится внутри модуля ECMAScript.
  • По умолчанию Webpack объединяет все модули в один файл. ЕдиныйАгент не может инструментировать связанные модули. Чтобы обойти это ограничение, все модули, которые необходимо инструментировать с помощью ЕдиныйАгент (например, express, mongodb, pg,…), должны быть экстернализованы в конфигурации webpack. Подробности см. В документации Webpack Externals.
  • Ограничения внешней выборки для определенных версий ЕдиныйАгент: Google V8 подвержен ряду проблем с памятью и нагрузкой на ЦП, что препятствует фоновому профилированию ЦП на производственном уровне:
    • утечка памяти
    • чрезмерное пиковое потребление памяти
    • чрезмерная нагрузка на ЦП в системах Windows Таким образом, профилирование ЦП (окружающая выборка) не включено по умолчанию для всех версий ЕдиныйАгент:
    • Внешняя выборка включена по умолчанию в ЕдиныйАгент версии 1.181. В ЕдиныйАгент версии 1.181 вышеупомянутые ограничения были устранены за счет отказа от использования v8 CpuProfiler для внешней выборки. Ambient Sampling полностью доступен на всех поддерживаемых платформах и во всех поддерживаемых версиях Node.js без каких-либо ограничений.
    • Внешняя выборка отключена по умолчанию для ЕдиныйАгент версий от 1.157 до 1.179. В Linux внешняя выборка может быть включена для следующих версий Node.js:
      • Node.js version 6
      • Node.js versions ^8.9.4 (8.9.4 <= node.js < 9.0.0)
      • Node.js версии 9.3.0 или более поздней. В Windows выборка окружающей среды отключена для этих версий ЕдиныйАгент, так как это приведет к 100% загрузке ЦП для одного ЦП. ЕдиныйАгент записывает в журнал записи для каждой обнаруженной неподдерживаемой версии: AmbientSampling: <unsupported platform> / <node version>

Дальнейшее чтение

  • Как отслеживать приложения Cloud Foundry?
  • Блог: Общие сведения о сборке мусора и поиск утечек памяти в Node.js
  • Блог: как отслеживать проблемы с процессором в Node.js
  • Блог: все, что вам нужно знать, чтобы по-настоящему понять цикл событий Node.js и его показатели.