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

Exportar dados do Monitoramento de desempenho para o BigQuery

É possível exportar os dados do Monitoramento de desempenho de apps do iOS e Android para o BigQuery para análise posterior. Com isso, é possível fazer análises usando o BigQuery SQL, exportar os dados para outro provedor de nuvem ou usá-los para seus modelos personalizados de ML.

Ativar o BigQuery Export

  1. Acesse a página Integrações no Console do Firebase e, em seguida, clique em Vincular no card do BigQuery.

  2. Siga as instruções na tela para ativar o BigQuery.

Quando você vincula seu projeto ao BigQuery:

  • o Firebase exporta uma cópia dos seus dados para o BigQuery;

    • No início da vinculação, o Firebase configura automaticamente suas tabelas do BigQuery para preencher os dados dos últimos sete dias para que seja possível começar a realizar experimentos imediatamente. Aguarde algumas horas para que os dados iniciais fiquem disponíveis no BigQuery.

    • Também é possível configurar manualmente o preenchimento de dados dos últimos 30 dias.

  • O Firebase configura as sincronizações diárias dos seus dados do projeto do Firebase para o BigQuery.

  • Todos os apps no projeto são vinculados ao BigQuery por padrão, e qualquer app adicionado posteriormente ao projeto também é vinculado automaticamente. É possível gerenciar quais apps enviam dados.

Para desativar a exportação do BigQuery, desvincule seu projeto no Console do Firebase.

Quais dados são exportados para o BigQuery?

Para cada aplicativo no projeto, a exportação cria uma tabela que inclui todos os eventos de desempenho registrados. Cada linha na tabela é um evento único de desempenho que pode ser de um dos seguintes tipos:

  • Trace de duração: traces que coletam, por padrão, a métrica de "duração", que inclui inicialização do app, app em primeiro plano e app em segundo plano, bem como qualquer trace de código personalizado instrumentado pelo desenvolvedor.

    • event_type é DURATION_TRACE
    • event_name é igual ao nome do trace
  • Métrica de trace: métricas personalizadas associadas aos traces de código personalizados instrumentados pelo desenvolvedor.

    • event_type é TRACE_METRIC
    • event_name é o nome da métrica
    • parent_trace_name é o nome do trace que contém essa métrica
  • Trace de tela: traces que abrangem o ciclo de vida de uma tela (traces de renderização de tela).

    • event_type é SCREEN_TRACE
    • event_name é um prefixo _st_ junto do nome real da tela
  • Solicitação de rede: traces que abrangem o ciclo de vida de uma solicitação de rede (traces de solicitação de rede HTTP).

    • event_type é NETWORK_REQUEST
    • event_name é o padrão categorizado do URL de solicitação de rede

Cada evento de desempenho contém atributos do evento, como país e operadora do dispositivo cliente, além de informações específicas do evento:

  • Trace de duração, métricas de trace e traces de tela contêm trace_info
  • As métricas de traces contêm trace_info.metric_info
  • Os traces de tela contêm trace_info.screen_info
  • Os traces de rede contêm network_info

Esquema detalhado de dados

Nome do campo Tipo Descrição
event_timestamp timestamp Carimbo de data/hora que marca o período em que o evento foi iniciado no dispositivo cliente (início da geração de trace, início da rede etc.)
app_display_version string A versão de exibição do aplicativo (por exemplo, "4.1.7")
  • Para Android — VersionName
  • Para iOS — CFBundleShortVersionString
app_build_version string A versão do aplicativo (por exemplo, "1523456")
  • Para Android — VersionCode
  • Para iOS — CFBundleVersion
os_version string A versão do SO do dispositivo cliente
  • Para Android: nível da API Android (por exemplo, "26")
  • Para iOS: versão do iOS (por exemplo, "11.4")
device_name string Nome do dispositivo cliente (por exemplo, "Google Pixel")
country string Código de duas letras do país em que o evento ocorreu (por exemplo, "US" para os EUA, ou "ZZ" para país desconhecido)
carrier string Operadora do dispositivo cliente
radio_type string Tipo de rádio ativo quando o evento ocorreu (por exemplo, "WIFI")
custom_attributes ARRAY<RECORD> Todos os atributos personalizados associados a este evento
custom_attributes.key string Chave do atributo personalizado
custom_attributes.value string Valor do atributo personalizado
event_type string Tipo do evento e valores possíveis:
  • DURATION_TRACE: traces que coletam, por padrão, a métrica de "duração", que inclui inicialização do app, app em primeiro plano e app em segundo plano, assim como qualquer trace de código personalizado instrumentado pelo desenvolvedor.
  • SCREEN_TRACE: traces que abrangem o ciclo de vida de uma tela (traces de renderização de tela).
  • TRACE_METRIC: métricas personalizadas associadas aos traces de código personalizados instrumentados pelo desenvolvedor.
  • NETWORK_REQUEST: traces que abrangem o ciclo de vida de uma solicitação de rede (traces de solicitação de rede HTTP).
event_name string Nome do evento
  • Para DURATION_TRACE: nome do trace
  • Para TRACE_METRIC: nome da métrica personalizada
  • Para SCREEN_TRACE_st_ seguido pelo nome do trace
  • Para NETWORK_REQUEST: padrão do URL de solicitação de rede
parent_trace_name string Nome do trace pai que transporta a métrica de trace
Presente apenas para TRACE_METRIC
trace_info RECORD Apenas presente para DURATION_TRACE, SCREEN_TRACE e TRACE_METRIC
trace_info.duration_us int64
  • Para DURATION_TRACE e SCREEN_TRACE: período ("duração") desde o início até o fim do trace
  • Para TRACE_METRIC: período ("duração") desde o início até o fim do trace pai
Unidade: microssegundo
trace_info.screen_info RECORD Presente apenas para SCREEN_TRACE
trace_info.screen_info.slow_frame_ratio float64 A proporção de frames lentos para este trace de tela, entre 0 e 1 (por exemplo, um valor de 0,05 significa que 5% dos frames para essa instância de tela levaram mais de 16 ms para serem renderizados)
trace_info.screen_info.frozen_frame_ratio float64 A proporção de frames congelados para este trace de tela, entre 0 e 1 (por exemplo, um valor de 0,05 significa que 5% dos frames para essa instância de tela levaram mais de 700 ms para serem renderizados)
trace_info.metric_info RECORD Apenas presente para TRACE_METRIC
trace_info.metric_info.metric_value int64 Valor da métrica de trace
network_info RECORD Apenas presente para NETWORK_REQUEST
network_info.response_code int64 Código de resposta HTTP para a resposta de rede. Por exemplo, 200 ou 404
network_info.response_mime_type string Resposta de rede tipo MIME, por exemplo, "text/html"
network_info.request_http_method string Método HTTP da solicitação de rede, por exemplo, "GET" ou "POST"
network_info.request_payload_bytes int64 Tamanho do payload de solicitação de rede
Unidade: byte
network_info.response_payload_bytes int64 Tamanho do payload de resposta de rede
Unidade: byte
network_info.request_completed_time_us int64 Microssegundos após event_timestamp quando o envio da solicitação de rede estiver concluído
Unidade: microssegundo
network_info.response_initiated_time_us int64 Microssegundos após event_timestamp quando a resposta da rede for iniciada
Unidade: microssegundo
network_info.response_completed_time_us int64 Microssegundos após event_timestamp quando a resposta de rede estiver completa
Unidade: microssegundo

O que você pode fazer com os dados exportados?

As seções a seguir oferecem exemplos de consultas que podem ser executadas no BigQuery em comparação com os dados exportados do Monitoramento de desempenho

Visualize a média da latência de início de aplicativo filtrada 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 a proporção de frames congelados em várias condições

Por exemplo, é possível verificar a proporção de frames congelados junto com o tempo que os usuários passam em cada tela do seu aplicativo quando estão em diferentes tipos de rádio (Wi-Fi, 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 a taxa de ocorrência em cache ao carregar certos tipos de arquivos a partir do disco

Esta análise pressupõe que você instrumentou um trace de código personalizado para ser carregado a partir do disco com um atributo personalizado denominado file-extension e uma métrica personalizada (um TRACE_METRIC) denominada cache-hit que está definida como 1 em casos de ocorrência em cache e como 0 em casos de ausência no cache.

Por exemplo, é possível calcular a taxa de ocorrência em cache ao carregar arquivos PNG a partir do 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);

Verificar a hora do dia em que os usuários emitem solicitações de rede

Por exemplo, é possível verificar a hora do dia em que os usuários dos Estados Unidos emitem solicitações de rede do seu app:

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;

Levar os dados do Monitoramento de desempenho para qualquer lugar

Às vezes, você quer acessar o servidor de dados do Monitoramento de desempenho ou enviá-lo para outra solução de terceiros. No momento, não há cobrança para exportação de dados.

É possível exportar seus dados ao:

  • usar a IU da Web do BigQuery;

  • executar o comando bq extract da CLI;

  • enviar um job de extração por meio da API ou de bibliotecas do cliente.

Preços

Não há custos para exportar dados do Monitoramento de desempenho. Além disso, o BigQuery fornece limites generosos de uso gratuito. Para mais informações, consulte preços do BigQuery ou sandbox do BigQuery.