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:
dns
express
graphql
hapi
http
ioredis
knex
koa
mongodb
mongoose
mysql
mysql2
net
pg
pino
redis
winston
Альтернативная установка
Запуск приложения с помощью 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 или вручную ловить исключения, следуйте инструкциям в разделе Настройка сбора ошибок выше.
Автоинструментированные библиотеки
Следующие библиотеки будут автоматически инструментированы (трассированы) с помощью вышеуказанных методов установки: