Catch up on everything announced at Firebase Summit, and learn how Firebase can help you accelerate app development and run your app with confidence. Learn More

Exportar datos de supervisión del rendimiento a BigQuery

Organiza tus páginas con colecciones Guarda y categoriza el contenido según tus preferencias.

Puede exportar datos de Monitoreo de rendimiento de aplicaciones de Apple y Android a BigQuery para un análisis más detallado. BigQuery le permite analizar los datos con BigQuery SQL, exportarlos a otro proveedor de la nube e incluso usar los datos para sus modelos de aprendizaje automático personalizados.

Habilitar la exportación de BigQuery

  1. Vaya a la página Integraciones en la consola de Firebase, luego haga clic en Vínculo en la tarjeta de BigQuery .

  2. Siga las instrucciones en pantalla para habilitar BigQuery.

    Cuando habilita la exportación de BigQuery para la supervisión del rendimiento, ocurre lo siguiente:

    • Firebase exporta una copia de sus datos existentes a BigQuery. La propagación inicial de datos para la exportación puede tardar hasta 48 horas en completarse.

    • Después de crear el conjunto de datos, no se puede cambiar la ubicación, pero puede copiar el conjunto de datos a una ubicación diferente o mover manualmente (recrear) el conjunto de datos en una ubicación diferente. Para obtener más información, consulte Cambiar la ubicación del conjunto de datos .

    • Firebase configura sincronizaciones periódicas de sus datos desde su proyecto de Firebase a BigQuery. Estas operaciones diarias de exportación suelen finalizar 24 horas después de su programación.

    • De forma predeterminada, todas las aplicaciones de su proyecto están vinculadas a BigQuery. Cualquier aplicación que agregue más tarde al proyecto se vincula automáticamente a BigQuery. Puede administrar qué aplicaciones envían datos .

Para desactivar la exportación de BigQuery, desvincula tu proyecto en Firebase console.

¿Qué datos se exportan a BigQuery?

Para cada aplicación del proyecto, la exportación crea una tabla que incluye todos los eventos de rendimiento capturados. Cada fila de la tabla es un único evento de rendimiento que puede ser uno de los siguientes:

  • Seguimiento de duración: seguimientos que recopilan, de forma predeterminada, la métrica de "duración", que incluye el inicio de la aplicación, la aplicación en primer plano y la aplicación en segundo plano, así como cualquier seguimiento de código personalizado instrumentado por el desarrollador.

    • event_type es DURATION_TRACE
    • event_name es el mismo que el nombre de seguimiento
  • Métrica de seguimiento: métricas personalizadas asociadas con seguimientos de códigos personalizados instrumentados por el desarrollador

    • event_type es TRACE_METRIC
    • event_name es el nombre de la métrica
    • parent_trace_name es el nombre de rastreo que contiene esta métrica
  • Traza de pantalla : trazas que abarcan la vida útil de una pantalla (trazas de representación de pantalla)

    • event_type es SCREEN_TRACE
    • event_name es el prefijo _st_ más el nombre de pantalla real
  • Solicitud de red : seguimientos que abarcan la vida útil de una solicitud de red (seguimientos de solicitud de red HTTP)

    • event_type es NETWORK_REQUEST
    • event_name es el patrón categorizado de la URL de solicitud de red

Cada evento de rendimiento contiene atributos del evento (como el país y el operador del dispositivo cliente), así como información específica del evento:

  • Los seguimientos de duración, las métricas de seguimiento y los seguimientos de pantalla contienen trace_info
  • Las métricas de rastreo contienen trace_info.metric_info
  • Los seguimientos de pantalla contienen trace_info.screen_info
  • Los rastros de red contienen network_info

Esquema de datos detallado

Nombre del campo Escribe Descripción
event_timestamp marca de tiempo Marca de tiempo desde la época en que comenzó el evento en el dispositivo cliente (inicio de seguimiento, inicio de red, etc.)
app_display_versión cuerda Mostrar la versión de la aplicación (por ejemplo, "4.1.7")
  • Para Android — VersionName de la versión
  • Para iOS: CFBundleShortVersionString
app_build_version cuerda Versión de compilación de la aplicación (por ejemplo, "1523456")
  • Para Android: VersionCode de versión
  • Para iOS: CFBundleVersion
versión del sistema operativo cuerda Versión del sistema operativo del dispositivo cliente
  • Para Android: nivel de API de Android (por ejemplo, "26")
  • Para iOS: versión de iOS (por ejemplo, "11.4")
nombre del dispositivo cuerda Nombre del dispositivo cliente (por ejemplo, "Google Pixel")
país cuerda Código de país de dos letras del país desde el que tuvo lugar el evento (por ejemplo, "US" o "ZZ" para país desconocido)
transportador cuerda Operador del dispositivo cliente
tipo_de_radio cuerda Tipo de radio activa cuando se produjo el evento (por ejemplo, "WIFI")
atributos_personalizados ARRAY<REGISTRO> Todos los atributos personalizados adjuntos a este evento
atributos_personalizados.clave cuerda Clave del atributo personalizado
atributos_personalizados.valor cuerda Valor del atributo personalizado
tipo de evento cuerda Tipo de evento; valores posibles:
  • DURATION_TRACE : seguimientos que recopilan, de forma predeterminada, la métrica de "duración", que incluye el inicio de la aplicación, la aplicación en primer plano y la aplicación en segundo plano, así como cualquier seguimiento de código personalizado instrumentado por el desarrollador.
  • SCREEN_TRACE : seguimientos que abarcan la vida útil de una pantalla (trazos de representación de pantalla)
  • TRACE_METRIC : métricas personalizadas asociadas con seguimientos de código personalizados instrumentados por el desarrollador
  • NETWORK_REQUEST : seguimientos que abarcan la vida útil de una solicitud de red (seguimientos de solicitud de red HTTP)
nombre del evento cuerda Nombre del evento
  • Para DURATION_TRACE — nombre de rastreo
  • Para TRACE_METRIC : nombre de la métrica personalizada
  • Para SCREEN_TRACE : _st_ seguido del nombre de rastreo
  • Para NETWORK_REQUEST : patrón de URL de solicitud de red
parent_trace_name cuerda Nombre del seguimiento principal que lleva la métrica de seguimiento
Solo presente para TRACE_METRIC
trace_info REGISTRO Solo presente para DURATION_TRACE , SCREEN_TRACE y TRACE_METRIC
trace_info.duration_us int64
  • Para DURATION_TRACE y SCREEN_TRACE : período de tiempo ("duración") desde el principio hasta el final del seguimiento
  • Para TRACE_METRIC : período de tiempo ("duración") desde el principio hasta el final de la traza principal
Unidad: microsegundo
trace_info.screen_info REGISTRO Solo presente para SCREEN_TRACE
trace_info.screen_info.slow_frame_ratio flotar64 Proporción de fotogramas lentos para este seguimiento de pantalla, entre 0 y 1 (por ejemplo, un valor de 0,05 significa que el 5 % de los fotogramas de esta instancia de pantalla tardaron más de 16 ms en procesarse)
trace_info.screen_info.frozen_frame_ratio flotar64 Proporción de fotogramas congelados para este seguimiento de pantalla, entre 0 y 1 (por ejemplo, un valor de 0,05 significa que el 5 % de los fotogramas de esta instancia de pantalla tardaron más de 700 ms en procesarse)
trace_info.metric_info REGISTRO Solo presente para TRACE_METRIC
trace_info.metric_info.metric_value int64 Valor de la métrica de rastreo
información de red REGISTRO Solo presente para NETWORK_REQUEST
información_red.código_respuesta int64 Código de respuesta HTTP para la respuesta de la red (por ejemplo, 200, 404)
network_info.response_mime_type cuerda Tipo MIME de la respuesta de la red (por ejemplo, "text/html")
network_info.request_http_method cuerda Método HTTP de la solicitud de red (por ejemplo, "GET" o "POST")
network_info.request_payload_bytes int64 Tamaño de la carga útil de solicitud de red
Unidad: byte
red_info.response_payload_bytes int64 Tamaño de la carga útil de respuesta de la red
Unidad: byte
network_info.request_completed_time_us int64 Microsegundos después de event_timestamp cuando se completa el envío de la solicitud de red
Unidad: microsegundo
network_info.response_initiated_time_us int64 Microsegundos después de event_timestamp cuando se inicia la respuesta de la red
Unidad: microsegundo
network_info.response_completed_time_us int64 Microsegundos después de event_timestamp cuando se completa la respuesta de la red
Unidad: microsegundo

¿Qué se puede hacer con los datos exportados?

En las siguientes secciones, se ofrecen ejemplos de consultas que puede ejecutar en BigQuery en relación con los datos de supervisión del rendimiento exportados.

Ver el desglose de la latencia promedio de inicio de la aplicación por país

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;

Verifique la proporción de marcos congelados contra varias condiciones

Por ejemplo, puede verificar la proporción de cuadros congelados junto con la cantidad de tiempo que los usuarios pasan en cada pantalla de su aplicación cuando están en diferentes tipos de radio (WiFi, 4G, etc.).

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;

Calcule la tasa de aciertos de caché para cargar ciertos tipos de archivos desde el disco

Este análisis supone que implementó un seguimiento de código personalizado para cargar desde el disco con un atributo personalizado denominado file-extension y una métrica personalizada ( TRACE_METRIC ) denominada cache-hit que se establece en 1 si acierta en caché y 0 si falla en caché.

Por ejemplo, puede calcular la tasa de aciertos de caché para cargar archivos PNG desde el disco:

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);

Verifique la hora del día en que los usuarios emiten solicitudes de red

Por ejemplo, puede verificar a qué hora del día los usuarios de los Estados Unidos emiten solicitudes de red desde su aplicación:

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;

Lleve sus datos de Performance Monitoring a cualquier parte

A veces desea acceder a su servidor de datos de Monitoreo de rendimiento o enviarlo a otra solución de terceros. Actualmente no hay ningún cargo por exportar datos.

Puede exportar sus datos de la siguiente manera:

  • Usar la interfaz de usuario web de BigQuery

  • Ejecutando el comando CLI bq extract

  • Enviar un trabajo de extracción a través de la API o las bibliotecas del cliente.

Precios

No hay ningún cargo por exportar datos desde Performance Monitoring, y BigQuery proporciona generosos límites de uso sin costo. Para obtener información detallada, consulte los precios de BigQuery o la zona de pruebas de BigQuery .