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