Для подключения обратитесь в чат поддержки.
Перфоманс позволяет измерять время выполнения операций, расход памяти и другие важные для приложения показатели. Собранные метрики можно просматривать в Tracer и сравнивать, например, между версиями приложения.
С каждой собранной метрикой вы можете передавать дополнительные атрибуты (например, группа эксперимента или окружение и т. д.). Их можно передавать и при начале замера, и по его окончании.
Собранные данные можно найти в одноименном разделе Трейсера – «Перфоманс». Здесь отображена общая сводка по собранным вами метрикам с указанием их названия, типа и количества зафиксированных значений:

Подробнее о функциональности раздела читайте здесь. При отправке учитывайте серверный лимит приёма измерений.
Для работы с метриками вам понадобятся следующие модули Tracer JS SDK:
| Модуль | Описание |
|---|---|
initTracerPerformance | Отвечает за выполнение замеров важных для вас данных. |
initTracerPerformanceMemory | Отвечает за выполнение замеров используемой памяти. |
initTracerPerformanceUploader | Отвечает за загрузку данных о замерах в сервис. |
Для начала установите SDK – введите в терминале команду:
npm install @apptracer/sdk --save
Выберите пример для своей среды. В браузере модули можно подключить отдельно или через initTracerSdk. Отправитель Performance общий для ручных метрик, памяти и Web Vitals: подключите его один раз.
Параметр environment из конфигурации отправителя не добавляется к метрикам. Если нужно различать окружения, задайте атрибут через performanceAttributes или setPerformanceAttribute().
import { initTracerPerformance, initTracerPerformanceMemory, initTracerPerformanceUploader } from '@apptracer/sdk'; const tracerPerformance = initTracerPerformance(); const tracerPerformanceMemory = initTracerPerformanceMemory(); // подробнее о параметрах конфигурации см. ниже initTracerPerformanceUploader({ versionName: BUILD_VERSION_NAME, // строка с версией приложения из вашей сборки appToken: 'appToken из настроек в Трейсере' });
| Метод | Параметры | Описание |
|---|---|---|
addSample() | sample: TracerSample | Позволяет вручную добавить семпл перфоманса с конкретным именем и значением. |
addSampleTime() | name: string, time: number, attributes?: ITracerSampleAttributes, unit?: PerformanceUnitTime | Упрощенный метод ручного добавления семпла перфоманса. По умолчанию в ms. |
startTimer() | name: string, attributes?: ITracerPerformanceAttributes | Создает и запускает таймер ITracerPerformanceTimer, который вы можете самостоятельно остановить в нужный момент. Переданные атрибуты будут относиться к замерам, зафиксированным с этого таймера. |
time() | name: string | string[], attributes?: ITracerPerformanceAttributes | Запускает таймер, который вы можете использовать для выполнения замеров операций. Действует по аналогии с console.time(). Переданные атрибуты будут относиться к замерам, зафиксированным с этого таймера. |
timeEnd() | name: string | string[], attributes?: ITracerPerformanceAttributes | Останавливает таймер, запущенный при помощи метода time(). Действует по аналогии с console.timeEnd(). Переданные атрибуты будут относиться к замерам, зафиксированным с этого таймера. |
timeAbort() | name: string | string[] | Останавливает запущенный таймер, при этом данные не будут отправлены в сервис. |
ITracerPerformanceAttributes – это список ваших атри бутов в формате
[name: string]: string | number | boolean | undefined
| Параметр | Тип | Обязательный | Описание |
|---|---|---|---|
name | string | Да | Название метрики |
value | number | Да | Значение метрики |
unit | PerformanceUnitTime | PerformanceUnitData | PerformanceUnitValue | Да | Единица времени, объёма данных или значения. |
precision | number | Да, если указан unit = PerformanceUnitValue.FLOAT | Точность в измерении указанного юнита |
attributes | ITracerPerformanceAttributes | Нет | Список атрибутов метрики |
| Опция | Параметры | Описание |
|---|---|---|
endTimer() | (attributes?: ITracerPerformanceAttributes) | Завершает работу таймера и сохраняет данные замера. |
abortTimer() | () | Завершает работу таймера, при этом данные замера не сохраняются. |
initTracerPerformance({ performanceAttributes: function () { return { page: location.pathname }; } }) задаёт функцию общих атрибутов. Она вызывается при добавлении семпла. Методы setPerformanceAttribute(name, value), setPerformanceAttributes(attributes) и removePerformanceAttribute(name) управляют постоянными атрибутами; последний принимает строку или массив строк.
Сначала SDK добавляет постоянные атрибуты, затем результат performanceAttributes, затем атрибуты самого замера. Если имя повторяется, используется последнее значение. Значение undefined удаляет атрибут. Перед отправкой строки, числа и логические значения преобразуются в строки.
startTimer() фиксирует переданные атрибуты при запуске; endTimer(attributes) может их дополнить или переопределить. Таймер завершается один раз. abortTimer() и пауза SDK отменяют его, в том числе при keepData: true: поздний endTimer() не добавит замер после возобновления.
Для time() можно передать составной ключ, например ['request', requestId]: весь массив идентифицирует таймер, а именем отправленной метрики станет первый элемент. В timeEnd() / timeAbort() передайте тот же ключ.
Единицы экспортируются из SDK: PerformanceUnitTime (от NANOSECOND до DAY), PerformanceUnitData (от BYTES до PETABYTES) и PerformanceUnitValue (INT, FLOAT, PERCENT). Для FLOAT обязательно задайте precision — число десятичных знаков. Отрицательные значения метрик не поддерживаются.
import { initTracerPerformance, initTracerPerformanceUploader, PerformanceUnitValue } from '@apptracer/sdk'; const tracerPerformance = initTracerPerformance(); initTracerPerformanceUploader({ versionName: BUILD_VERSION_NAME, // строка с версией приложения из вашей сборки appToken: 'appToken', // appToken из настроек проекта в Tracer }); tracerPerformance.addSample({ name: "SampleOperation", value: 1500000, unit: PerformanceUnitValue.INT, });
Модуль измеряет память в браузере и доступен в том числе в Lite. Какие данные удастся получить, зависит от поддерживаемых браузером API.
В memoryUsageTimePoints передайте точки замера в формате { name, time }. Значение time задаётся в миллисекундах по шкале performance.now(), а при отсутствии этого API — от загрузки SDK. Это не задержка от вызова initTracerPerformanceMemory().
Общие атрибуты замеров задаются через memoryUsageAttributes. Поле getAttributes у отдельной точки сейчас не вызывается. Замер может выполниться в течение минуты после time; после этого он пропускается. Пауза отменяет уже начатые замеры, но после возобновления ещё могут выполниться точки, чьё минутное окно не истекло.
| Параметр | Тип | Описание |
|---|---|---|
memoryUsageTimePoints? | ITracerMemoryUsageTimePoint[] | Указывает на то, когда выполнять замеры памяти. При установке значения будет перезаписано значение по умолчанию. Чтобы отключить автоматические замеры, передайте в качестве параметра пустой массив. Значения по умолчанию: initial, 5 min, 15 min, 60 min, 3 hr, 12 hr |
memoryUsageAttributes? | (name: string) => ITracerSampleAttributes | Возвращает общие атрибуты замера по его имени. |
enableMeasureUserAgentSpecificMemory? | boolean | Позволяет проводить более тщательные замеры памяти. Пожалуйста, ознакомьтесь с требованиями безопасности при использовании. |
| Метод | Параметры | Описание |
|---|---|---|
measureMemory() | name: string, attributes?: ITracerSampleAttributes | Выполняет запуск замера памяти. В список атрибутов также будут добавлены атрибуты из memoryUsageAttributes |
import { initTracerPerformanceMemory, initTracerPerformanceUploader } from '@apptracer/sdk'; const tracerPerformanceMemory = initTracerPerformanceMemory(); initTracerPerformanceUploader({ versionName: BUILD_VERSION_NAME, // строка с версией приложения из вашей сборки appToken: 'appToken', // appToken из настроек проекта в Tracer }); tracerPerformanceMemory.measureMemory('SampleOperation');