Вы можете экспортировать данные мониторинга производительности из приложений Apple и Android в BigQuery для дальнейшего анализа. BigQuery позволяет анализировать данные с помощью BigQuery SQL, экспортировать их в другой облачный провайдер и даже использовать данные для своих пользовательских моделей машинного обучения.
Включить экспорт BigQuery
Перейдите на страницу « Интеграции » в консоли Firebase, затем нажмите « Ссылка » на карточке BigQuery .
Следуйте инструкциям на экране, чтобы включить BigQuery.
Когда вы включаете экспорт BigQuery для мониторинга производительности:
Firebase экспортирует копию ваших существующих данных в BigQuery.
При первоначальном связывании Firebase автоматически планирует ваши таблицы BigQuery для заполнения данных за последние 7 дней, чтобы вы могли сразу начать экспериментировать. Подождите несколько часов, пока исходные данные будут доступны в BigQuery.
Вы также можете вручную запланировать заполнение данных за последние 30 дней.
После создания набора данных местоположение нельзя изменить, но вы можете скопировать набор данных в другое место или вручную переместить (воссоздать) набор данных в другое место. Дополнительные сведения см. в разделе Изменение местоположения набора данных .
Firebase настраивает регулярную синхронизацию ваших данных из вашего проекта Firebase с BigQuery. Эти ежедневные экспортные операции начинаются в 4:00 по тихоокеанскому времени и обычно заканчиваются через 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 .