Начало работы
Установите пакет для инструментирования HyperDX OpenTelemetry
Используйте следующую команду, чтобы установить пакет ClickStack OpenTelemetry.- NPM
- Yarn
Инициализация SDK
Чтобы инициализировать SDK, вызовите функциюinit в начале файла точки входа вашего приложения.
- require
- import
Настройка сбора журналов
По умолчанию собираются журналыconsole.*. Если вы используете логгер,
например winston или pino, вам потребуется добавить в него transport, чтобы
отправлять журналы в ClickStack. Если вы используете другой тип логгера,
свяжитесь с нами или, если применимо, воспользуйтесь одной из наших
интеграций (например, Kubernetes).
- Winston
- Pino
- console.log
Если вы используете
winston в качестве логгера, вам потребуется добавить в него следующий transport.Настройка сбора ошибок
SDK ClickStack может автоматически перехватывать необработанные исключения и ошибки в вашем приложении, включая полную трассировку стека и контекст кода. Чтобы включить эту возможность, добавьте следующий код в конец middleware обработки ошибок вашего приложения или вручную регистрируйте исключения с помощью функцииrecordException.
- Express
- Koa
- Вручную
Устранение неполадок
Если у вас возникают проблемы с SDK, включите подробное логирование, установив для переменной окруженияOTEL_LOG_LEVEL значение debug.
Расширенная настройка инструментирования
Сбор логов консоли
По умолчанию SDK ClickStack собирает логи консоли. Это можно отключить, задав для переменной окруженияHDX_NODE_CONSOLE_CAPTURE значение 0.
copy
Добавление информации о пользователе или метаданных
Чтобы пометить все события, связанные с определённым атрибутом или идентификатором (например, ID пользователя или email), можно вызвать функциюsetTraceAttributes, которая после вызова добавит указанные
атрибуты ко всем журналам/спанам, связанным с текущей трассировкой. Эту функцию рекомендуется вызывать
как можно раньше в рамках конкретного запроса/трассировки (например, как можно раньше в стеке middleware 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
В качестве альтернативы можно включить автоинструментирование приложения без каких-либо изменений в коде — с помощью CLIopentelemetry-instrument или флага Node.js --require. Установка через CLI предоставляет более широкий набор автоматически инструментируемых библиотек и фреймворков.
- Использование NPX
- Пользовательская точка входа (например, Nodemon, ts-node и т. д.)
- Импорт кода
Управляемый ClickStackДля Управляемого ClickStack
HYPERDX_API_KEY можно не указывать.OTEL_SERVICE_NAME используется для идентификации вашего сервиса в интерфейсе HyperDX; ей можно задать любое имя.
Включение перехвата исключений
Чтобы включить перехват необработанных исключений, установите переменную окруженияHDX_NODE_EXPERIMENTAL_EXCEPTION_CAPTURE в значение 1.