Экспорт данных мониторинга производительности в BigQuery

Вы можете экспортировать данные для мониторинга производительности с прошивкой и Android приложений в BigQuery для дальнейшего анализа. BigQuery позволяет анализировать данные с помощью BigQuery SQL, экспортировать их в другой облачный провайдер и даже использовать данные для ваших пользовательских моделей машинного обучения.

Включить экспорт BigQuery

  1. Перейти к интеграциям странице в Firebase консоли, затем нажмите Ссылку на карте BigQuery.

  2. Следуйте инструкциям на экране, чтобы включить BigQuery.

Когда вы связываете свой проект с BiqQuery:

  • Firebase экспортирует копию существующих данных в BigQuery.

    • При первоначальном связывании Firebase автоматически планирует ваши таблицы BigQuery для заполнения данных за последние 7 дней, чтобы вы могли сразу же начать экспериментировать. Подождите несколько часов, чтобы исходные данные стали доступны в BigQuery.

    • Вы также можете вручную данные расписания backfills на срок до последних 30 дней.

  • Firebase устанавливает ежедневную синхронизацию ваших данных из проекта Firebase в BigQuery.

  • По умолчанию все приложения в вашем проекте связаны с BigQuery, а любые приложения, которые вы позже добавляете в проект, автоматически связываются с BigQuery. Вы можете управлять , какие приложения передачи данных .

Чтобы отключить экспорт BigQuery, разъединить ваш проект в консоли Firebase.

Какие данные экспортируются в BigQuery?

Для каждого приложения в проекте при экспорте создается таблица, содержащая все зафиксированные события производительности. Каждая строка в таблице представляет собой отдельное событие производительности, которое может быть одним из следующих:

  • Продолжительность след - следы, собирающие, по умолчанию, метрика «длительность», которые включают в себя запуск приложения, приложение-в-плане, и приложение-на-фоне, а также любой разработчик-инструментальных следы пользовательских кодов

    • event_type является DURATION_TRACE
    • event_name такое же , как имя трассировки
  • Трассировка метрики - пользовательские метрики, связанные с разработчиком инструментальными пользовательского кода следов

    • event_type является TRACE_METRIC
    • event_name это имя метрики
    • parent_trace_name это имя следа , который содержит эту метрику
  • Экран трассировка - следы , перекрывающие срок службы экрана (следы рендеринга экрана)

    • event_type является SCREEN_TRACE
    • event_name есть префикс _st_ плюс фактическое имя экрана
  • Сеть запрос - следы перекрывающих жизней запроса сети (HTTP запрос сети следы)

    • event_type является NETWORK_REQUEST
    • event_name является категоризирована картиной URL запроса сети

Каждое событие производительности содержит атрибуты события (такие как страна и оператор клиентского устройства), а также информацию, относящуюся к событию:

  • Продолжительность следы, метрики следов, и следы экрана содержат trace_info
  • Метрики трассировки содержат trace_info.metric_info
  • Следы экрана содержат trace_info.screen_info
  • Следы сети содержат network_info

Подробная схема данных

Имя поля Тип Описание
event_timestamp отметка времени Отметка времени с момента начала события на клиентском устройстве (начало трассировки, начало сети и т. Д.)
app_display_version нить Показать версию приложения (например, «4.1.7»)
  • Для Android - VersionName
  • Для прошивки - CFBundleShortVersionString
app_build_version нить Версия сборки приложения (например, «1523456»)
  • Для Android - VersionCode
  • Для прошивки - CFBundleVersion
os_version нить Версия ОС клиентского устройства
  • Для Android - уровень API Android (например, «26»)
  • Для iOS - версия iOS (например «11.4»)
имя устройства нить Название клиентского устройства (например, «Google Pixel»).
страна нить Двухбуквенный код страны, в которой произошло событие (например, «США» или «ZZ» для неизвестной страны).
перевозчик нить Носитель клиентского устройства
radio_type нить Тип активного радио, когда произошло событие (например, «WIFI»)
custom_attributes Массив <ЗАПИСЬ> Все настраиваемые атрибуты, прикрепленные к этому событию
custom_attributes.key нить Ключ настраиваемого атрибута
custom_attributes.value нить Значение настраиваемого атрибута
тип события нить Тип мероприятия; возможные значения:
  • DURATION_TRACE - следы , которые собирают, по умолчанию, метрика «длительность», которые включают в себя запуск приложения, приложение-в-плане, и приложение-на-фоне, а также любой разработчик-инструментальных следы пользовательских кодов
  • SCREEN_TRACE - следы , перекрывающий срок службы экрана (следы рендеринга экрана)
  • TRACE_METRIC - пользовательские метрики, связанные с разработчиком инструментальными пользовательского кода следов
  • NETWORK_REQUEST - следы перекрывающих жизней запроса сети (HTTP запрос сети следы)
название события нить Название мероприятия
  • Для DURATION_TRACE - имя следа
  • Для TRACE_METRIC - изготовление на заказ метрическим имя
  • Для SCREEN_TRACE - _st_ следует имя трассировки
  • Для NETWORK_REQUEST - сетевой шаблон запроса URL
parent_trace_name нить Имя родительской трассы, которая несет метрику трассировки
Только представьте для TRACE_METRIC
trace_info ЗАПИСЫВАТЬ Только представьте для DURATION_TRACE , SCREEN_TRACE и TRACE_METRIC
trace_info.duration_us int64
  • Для DURATION_TRACE и SCREEN_TRACE - Длина времени ( «длительность») от начала до конца трассы
  • Для TRACE_METRIC - отрезок времени ( «длительность») от начала до конца родительского следа
Единица: микросекунда
trace_info.screen_info ЗАПИСЫВАТЬ Только представьте для SCREEN_TRACE
trace_info.screen_info.slow_frame_ratio float64 Отношение медленных кадров для этой экранной трассы от 0 до 1 (например, значение 0,05 означает, что для визуализации 5% кадров для этого экземпляра экрана потребовалось более 16 мсек)
trace_info.screen_info.frozen_frame_ratio float64 Соотношение замороженных кадров для этой экранной трассы от 0 до 1 (например, значение 0,05 означает, что для визуализации 5% кадров для этого экземпляра экрана потребовалось более 700 мс)
trace_info.metric_info ЗАПИСЫВАТЬ Только представьте для TRACE_METRIC
trace_info.metric_info.metric_value int64 Значение метрики трассировки
network_info ЗАПИСЫВАТЬ Только представьте для NETWORK_REQUEST
network_info.response_code int64 Код ответа HTTP для ответа сети (например, 200, 404)
network_info.response_mime_type нить MIME-тип сетевого ответа (например, «текст / html»)
network_info.request_http_method нить HTTP-метод сетевого запроса (например, «GET» или «POST»)
network_info.request_payload_bytes int64 Размер полезной нагрузки сетевого запроса
Единица: байт
network_info.response_payload_bytes int64 Размер полезной нагрузки сетевого ответа
Единица: байт
network_info.request_completed_time_us int64 Микросекунды после event_timestamp , когда сетевой запрос отправки является полным
Единица: микросекунда
network_info.response_initiated_time_us int64 Микросекунд после event_timestamp , когда сетевой ответ инициированные
Единица: микросекунда
network_info.response_completed_time_us int64 Микросекунды после event_timestamp когда ответ сети завершена
Единица: микросекунда

Что вы можете сделать с экспортированными данными?

В следующих разделах приведены примеры запросов, которые вы можете запустить в BigQuery в отношении экспортированных данных мониторинга производительности.

Просмотр средней задержки запуска приложения с разбивкой по странам

SELECT AVG(trace_info.duration_us), country
FROM `TABLE_NAME`
WHERE _PARTITIONTIME > TIMESTAMP("YYYY-MM-DD")
AND event_type = "DURATION_TRACE"
AND event_name = "_app_start"
GROUP BY 2;

Проверьте соотношение замороженных кадров в различных условиях

Например, вы можете проверить соотношение замороженных кадров и количество времени, которое пользователи проводят на каждом экране вашего приложения при использовании разных типов радио (WiFi, 4G и т. Д.).

SELECT
  AVG(trace_info.duration_us / 1000000) AS seconds_on_screen,
  AVG(trace_info.screen_info.frozen_frame_ratio) AS frozen_frame_ratio,
  event_name,
  radio_type
FROM `TABLE_NAME`
WHERE _PARTITIONTIME > TIMESTAMP("YYYY-MM-DD")
AND event_type = "SCREEN_TRACE"
GROUP BY event_name, radio_type
ORDER BY event_name, radio_type;

Вычислить коэффициент попадания в кеш для загрузки определенных типов файлов с диска

Этот анализ предполагает , что вы инструментальный пользовательский код трассировку для загрузки с диска пользовательского атрибутом с именем file-extension и пользовательские метриками (а TRACE_METRIC ) под названием cache-hit , который установлен в 1 , если кэш и 0 , если кэш промахов.

Например, вы можете вычислить частоту попаданий в кеш для загрузки файлов PNG с диска:

SELECT AVG(trace_info.metric_info.metric_value) AS cache_hit_rate
FROM `TABLE_NAME`
WHERE _PARTITIONTIME > TIMESTAMP("YYYY-MM-DD")
AND event_type = "TRACE_METRIC"
AND event_name = "cache-hit"
AND parent_trace_name = "loadFromDisk"
AND STRUCT("file-extension", "png") IN UNNEST(custom_attributes);

Проверяйте время суток, когда пользователи отправляют сетевые запросы

Например, вы можете проверить, в какое время дня пользователи из США отправляют сетевые запросы из вашего приложения:

SELECT
  count(1) AS hourly_count,
  EXTRACT(HOUR FROM event_timestamp) AS hour_of_day
FROM `TABLE_NAME`
WHERE _PARTITIONTIME > TIMESTAMP("YYYY-MM-DD")
AND event_type = "NETWORK_REQUEST"
AND country = "US"
GROUP BY 2 ORDER BY 2;

Возьмите свои данные мониторинга производительности куда угодно

Иногда вы хотите получить доступ к своим данным мониторинга производительности на стороне сервера или передать их другому стороннему решению. В настоящее время плата за экспорт данных не взимается.

Вы можете экспортировать свои данные:

  • Использование веб-интерфейса BigQuery

  • Запуск CLI команды bq extract

  • Отправка задания экстракта через API или клиентские библиотеки.

Ценообразование

Экспорт данных из Performance Monitoring осуществляется бесплатно, а BigQuery предоставляет большие бесплатные ограничения на использование. Для получения более подробной информации, обратитесь к BigQuery ценообразованию или песочнице BigQuery .