Node.js

Материал из Dynatrace

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 и его показатели.