Вы можете экспортировать данные мониторинга производительности из приложений Apple и Android в BigQuery для дальнейшего анализа. BigQuery позволяет анализировать данные с помощью BigQuery SQL, экспортировать их в другой облачный провайдер и даже использовать данные для своих пользовательских моделей машинного обучения.
Включить экспорт BigQuery
Перейдите на страницу «Интеграции» в консоли Firebase, затем нажмите «Ссылка» на карточке BigQuery .
Следуйте инструкциям на экране, чтобы включить BigQuery.
Когда вы включаете экспорт BigQuery для мониторинга производительности, происходит следующее:
Firebase экспортирует копию ваших существующих данных в BigQuery. Первоначальное распространение данных для экспорта может занять до 48 часов.
- Вы можете вручную запланировать заполнение данных за последние 30 дней или до самой последней даты, когда вы включили экспорт BigQuery (в зависимости от того, какая из них самая последняя).
После создания набора данных местоположение нельзя изменить, но вы можете скопировать набор данных в другое место или вручную переместить (воссоздать) набор данных в другое место. Дополнительные сведения см. в разделе Изменение местоположения набора данных .
Firebase настраивает регулярную синхронизацию ваших данных из вашего проекта Firebase с BigQuery. Эти ежедневные экспортные операции обычно заканчиваются через 24 часа после запланированного.
По умолчанию все приложения в вашем проекте связаны с 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")
|
app_build_version | нить | Версия сборки приложения (например, "1523456")
|
ОС_версия | нить | Версия ОС клиентского устройства
|
имя устройства | нить | Имя клиентского устройства (например, "Google Pixel") |
страна | нить | Двухбуквенный код страны, в которой произошло событие (например, «US» или «ZZ» для неизвестной страны) |
перевозчик | нить | Оператор клиентского устройства |
радио_тип | нить | Тип активного радио, когда произошло событие (например, "WIFI") |
custom_attributes | МАССИВ<ЗАПИСЬ> | Все настраиваемые атрибуты, связанные с этим событием |
custom_attributes.key | нить | Ключ пользовательского атрибута |
custom_attributes.value | нить | Значение пользовательского атрибута |
тип события | нить | Тип события; возможные значения:
|
название события | нить | Название события
|
parent_trace_name | нить | Имя родительской трассы, содержащей метрику трассировки Присутствует только для TRACE_METRIC |
trace_info | ЗАПИСЫВАТЬ | Присутствует только для DURATION_TRACE , SCREEN_TRACE и TRACE_METRIC |
trace_info.duration_us | int64 |
|
trace_info.screen_info | ЗАПИСЫВАТЬ | Присутствует только для SCREEN_TRACE |
trace_info.screen_info.slow_frame_ratio | поплавок64 | Соотношение медленных кадров для этой трассировки экрана, от 0 до 1 (например, значение 0,05 означает, что 5% кадров для этого экземпляра экрана потребовалось более 16 мс для рендеринга) |
trace_info.screen_info.frozen_frame_ratio | поплавок64 | Соотношение замороженных кадров для этой трассировки экрана, от 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-тип сетевого ответа (например, "text/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 .