Node.js
ClickStack использует стандарт OpenTelemetry для сбора телеметрических данных (журналы, метрики, трассировки и исключения). Трассировки автоматически генерируются с помощью автоматического инструментирования, поэтому ручное инструментирование не требуется для получения ценности от трассировки.
Этот гид охватывает:
- Журналы
- Метрики
- Трассировки
- Исключения
Начало работы
Установка пакета инструментирования HyperDX OpenTelemetry
Используйте следующую команду для установки пакета ClickStack OpenTelemetry.
- NPM
- Yarn
Инициализация SDK
Чтобы инициализировать SDK, вам нужно вызвать функцию init в начале точки входа вашего приложения.
- require
- import
Это автоматически захватит трассировку, метрики и журналы вашего приложения на Node.js.
Настройка сбора журналов
По умолчанию журналы console.* собираются автоматически. Если вы используете логгер
такой как winston или pino, вам нужно будет добавить транспорт к вашему логгеру, чтобы
отправить журналы в ClickStack. Если вы используете другой тип логгера,
свяжитесь с нами или изучите одно из наших интеграций
платформы, если это применимо (например, Kubernetes).
- Winston
- Pino
- console.log
Если вы используете winston в качестве вашего логгера, вам нужно будет добавить следующий транспорт к вашему логгеру.
Если вы используете pino в качестве вашего логгера, вам нужно будет добавить следующий транспорт к вашему логгеру и указать mixin для корреляции журналов с трассировками.
По умолчанию методы console.* поддерживаются из коробки. Дополнительная конфигурация не требуется.
Вы можете отключить это, установив переменную окружения HDX_NODE_CONSOLE_CAPTURE в 0 или передав consoleCapture: false в функцию init.
Настройка сбора ошибок
SDK ClickStack может автоматически захватывать необработанные исключения и ошибки в вашем приложении с полным стек-трейсом и контекстом кода.
Чтобы включить это, вам нужно добавить следующий код в конце вашего промежуточного программного обеспечения обработки ошибок приложения или вручную захватить исключения с помощью функции recordException.
- Express
- Koa
- Manual
Устранение неполадок
Если у вас возникли проблемы с SDK, вы можете включить подробное логирование, установив
переменную окружения OTEL_LOG_LEVEL в debug.
Расширенная конфигурация инструментирования
Захват консольных журналов
По умолчанию SDK ClickStack будет захватывать консольные журналы. Вы можете отключить это, установив
переменную окружения HDX_NODE_CONSOLE_CAPTURE в 0.
Присоединение информации о пользователе или метаданных
Чтобы легко пометить все события, связанные с данным атрибутом или идентификатором (например, идентификатор пользователя или электронная почта), вы можете вызвать функцию setTraceAttributes, которая пометит каждый
журнал/спан, связанный с текущей трассировкой, после вызова с объявленными атрибутами. Рекомендуется вызывать эту функцию как можно раньше в пределах данного запроса/трассировки (например, как можно раньше в стеке промежуточного программного обеспечения Express).
Это удобный способ убедиться, что все журналы/спаны автоматически помечены правильными идентификаторами для дальнейшего поиска, вместо того чтобы вручную помечать и передавать идентификаторы самим.
userId, userEmail, userName и teamName будут заполнять интерфейс сессий
соответствующими значениями, но могут быть опущены. Любые другие дополнительные значения
могут быть указаны и использованы для поиска событий.
Убедитесь, что вы включили бета-режим, установив переменную окружения HDX_NODE_BETA_MODE в 1 или передав betaMode: true в функцию init, чтобы
включить атрибуты трассировки.
Google Cloud Run
Если вы запускаете свое приложение на Google Cloud Run, Cloud Trace автоматически вставляет заголовки выборки в входящие запросы, в настоящее время ограничивая трассировки до выборки 0.1 запроса в секунду для каждой инстанции.
Пакет @hyperdx/node-opentelemetry по умолчанию перезаписывает скорость выборки на 1.0.
Чтобы изменить это поведение или настроить другие установки OpenTelemetry, вы
можете вручную настроить переменные окружения
OTEL_TRACES_SAMPLER=parentbased_always_on и OTEL_TRACES_SAMPLER_ARG=1, чтобы
достигнуть того же результата.
Чтобы узнать больше и заставить трассировку конкретных запросов, пожалуйста, обратитесь к документации Google Cloud Run.
Автоинструментированные библиотеки
Следующие библиотеки будут автоматически инструментированы (трассированы) SDK:
dnsexpressgraphqlhapihttpioredisknexkoamongodbmongoosemysqlmysql2netpgpinorediswinston
Альтернативная установка
Запуск приложения с помощью ClickStack OpenTelemetry CLI
В качестве альтернативы, вы можете автоинструментировать ваше приложение без каких-либо изменений в коде, используя CLI opentelemetry-instrument или используя
флаг Node.js --require. Установка CLI открывает более широкий спектр автоинструментированных библиотек и фреймворков.
- Используя NPX
- Пользовательская точка входа (например, Nodemon, ts-node и т.д.)
- Импорт кода
Переменная окружения OTEL_SERVICE_NAME используется для идентификации вашего сервиса в приложении HyperDX, это может быть любое имя, которое вы хотите.
Включение захвата исключений
Чтобы включить захват необработанных исключений, вам нужно установить переменную окружения HDX_NODE_EXPERIMENTAL_EXCEPTION_CAPTURE в 1.
После этого, чтобы автоматически захватывать исключения из Express, Koa или вручную ловить исключения, следуйте инструкциям в разделе Настройка сбора ошибок выше.
Автоинструментированные библиотеки
Следующие библиотеки будут автоматически инструментированы (трассированы) с помощью вышеуказанных методов установки: