Join us for Firebase Summit on November 10, 2021. Tune in to learn how Firebase can help you accelerate app development, release with confidence, and scale with ease. Register

Экспорт данных мониторинга производительности в 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;

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

Например, вы можете проверить соотношение замороженных кадров вместе с количеством времени, которое пользователи проводят на каждом экране вашего приложения при использовании разных типов радио (Wi-Fi, 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 .