Exportar datos de supervisión del rendimiento a BigQuery

Puedes exportar datos de Performance Monitoring de aplicaciones de Apple y Android a BigQuery para realizar análisis adicionales. BigQuery le permite analizar los datos usando BigQuery SQL, exportarlos a otro proveedor de nube e incluso usar los datos para sus modelos de ML personalizados.

Habilitar la exportación de BigQuery

  1. Vaya a la página Integraciones en Firebase console y luego haga clic en Enlace en la tarjeta de BigQuery .

  2. Siga las instrucciones que aparecen en pantalla para habilitar BigQuery.

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

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

    • Una vez creado el conjunto de datos, la ubicación no se puede cambiar, pero puede copiar el conjunto de datos a una ubicación diferente o mover (recrear) manualmente 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 tus datos desde tu proyecto de Firebase con BigQuery. Estas operaciones de exportación diarias suelen finalizar en 24 horas después de lo programado.

    • De forma predeterminada, todas las aplicaciones de tu proyecto están vinculadas a BigQuery. Cualquier aplicación que agregues posteriormente al proyecto se vincula automáticamente a BigQuery. Puedes 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ódigo personalizado 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 seguimiento que contiene esta métrica
  • Seguimiento de pantalla : seguimientos que abarcan la vida útil de una pantalla (seguimientos 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 seguimiento contienen trace_info.metric_info
  • Los seguimientos de pantalla contienen trace_info.screen_info
  • Los seguimientos de red contienen network_info

Esquema de datos detallado

Nombre del campo Tipo Descripción
marca_hora_evento marca de tiempo Marca de tiempo desde la época en que se inició el evento en el dispositivo cliente (inicio de seguimiento, inicio de red, etc.)
versión_pantalla_aplicación cadena Versión para mostrar de la aplicación (por ejemplo, "4.1.7")
  • Para Android: VersionName
  • Para iOS: CFBundleShortVersionString
versión_construcción_aplicación cadena Versión de compilación de la aplicación (por ejemplo, "1523456")
  • Para Android: VersionCode
  • Para iOS: CFBundleVersion
versión del sistema operativo cadena 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 cadena Nombre del dispositivo cliente (por ejemplo, "Google Pixel")
país cadena Código de país de dos letras del país desde el que tuvo lugar el evento (por ejemplo, "EE. UU." o "ZZ" para un país desconocido)
transportador cadena Portador del dispositivo cliente
tipo_radio cadena Tipo de radio activo cuando ocurrió el evento (por ejemplo, "WIFI")
atributos_personalizados MATRIZ<GRABAR> Todos los atributos personalizados adjuntos a este evento
atributos_personalizados.clave cadena Clave del atributo personalizado
atributos_personalizados.valor cadena Valor del atributo personalizado
tipo de evento cadena 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 (seguimientos de representación de pantalla)
  • TRACE_METRIC : métricas personalizadas asociadas con seguimientos de código personalizado 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 cadena Nombre del evento
  • Para DURATION_TRACE : nombre de seguimiento
  • Para TRACE_METRIC : nombre de métrica personalizada
  • Para SCREEN_TRACE : _st_ seguido del nombre del seguimiento
  • Para NETWORK_REQUEST : patrón de URL de solicitud de red
nombre_rastreo_padre cadena Nombre del seguimiento principal que lleva la métrica de seguimiento
Solo presente para TRACE_METRIC
información_rastreo REGISTRO Solo presente para DURATION_TRACE , SCREEN_TRACE y TRACE_METRIC
trace_info.duración_es 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 del seguimiento principal
Unidad: microsegundo
trace_info.screen_info REGISTRO Solo presente para SCREEN_TRACE
trace_info.screen_info.slow_frame_ratio flotador64 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 renderizarse)
trace_info.screen_info.frozen_frame_ratio flotador64 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 renderizarse)
trace_info.metric_info REGISTRO Solo presente para TRACE_METRIC
trace_info.metric_info.metric_value int64 Valor de la métrica de seguimiento
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 cadena Tipo MIME de la respuesta de la red (por ejemplo, "texto/html")
network_info.request_http_método cadena 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 la solicitud de red
Unidad: byte
network_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 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 event_timestamp cuando se inicia la respuesta de la red
Unidad: microsegundo
network_info.response_completed_time_us int64 Microsegundos después event_timestamp cuando se completa la respuesta de la red
Unidad: microsegundo

¿Qué puedes hacer con los datos exportados?

Las siguientes secciones ofrecen ejemplos de consultas que puedes ejecutar en BigQuery con tus datos exportados de Performance Monitoring.

Ver el desglose de la latencia promedio de inicio de aplicaciones 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 fotogramas congelados frente a diversas 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 usan 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;

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

Este análisis supone que instrumentó un seguimiento de código personalizado para la carga 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 se acierta la caché y 0 si se pierde la caché.

Por ejemplo, puede calcular la tasa de aciertos de la 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, puedes comprobar a qué hora del día los usuarios de Estados Unidos emiten solicitudes de red desde tu 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 Monitoreo de desempeño a cualquier lugar

A veces desea acceder al lado del servidor de datos de Performance Monitoring o enviarlos a otra solución de terceros. Actualmente no hay ningún cargo por exportar datos.

Puede exportar sus datos mediante:

  • Usar la interfaz de usuario web de BigQuery

  • Ejecutando el comando CLI bq extract

  • Envío de un trabajo de extracción a través de la API o bibliotecas cliente.

Precios

No hay ningún cargo por exportar datos desde Performance Monitoring y BigQuery ofrece generosos límites de uso sin costo. Para obtener información detallada, consulta los precios de BigQuery o el sandbox de BigQuery .