Exportar dados do Monitoramento de desempenho para o BigQuery

Você pode exportar dados do Monitoramento de desempenho de aplicativos Apple e Android para o BigQuery para análise posterior. O BigQuery permite analisar os dados usando o BigQuery SQL, exportá-los para outro provedor de nuvem e até mesmo usar os dados para seus modelos de ML personalizados.

Ativar exportação do BigQuery

  1. Acesse a página Integrações no Firebase Console e clique em Link no cartão do BigQuery .

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

    Quando você ativa a exportação do BigQuery para monitoramento de desempenho, ocorre o seguinte:

    • O Firebase exporta uma cópia dos seus dados existentes para o BigQuery. A propagação inicial dos dados para exportação pode levar até 48 horas para ser concluída.

    • Após a criação do conjunto de dados, o local não poderá ser alterado, mas você poderá copiar o conjunto de dados para um local diferente ou mover (recriar) manualmente o conjunto de dados em um local diferente. Para saber mais, consulte Alterar a localização do conjunto de dados .

    • O Firebase configura sincronizações regulares dos dados do seu projeto do Firebase com o BigQuery. Essas operações diárias de exportação geralmente terminam 24 horas após o agendamento.

    • Por padrão, todos os aplicativos do seu projeto estão vinculados ao BigQuery. Todos os aplicativos adicionados posteriormente ao projeto serão automaticamente vinculados ao BigQuery. Você pode gerenciar quais aplicativos enviam dados .

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

Quais dados são exportados para o BigQuery?

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

  • Rastreamento de duração — rastreamentos que coletam, por padrão, a métrica de "duração", que inclui início do aplicativo, aplicativo em primeiro plano e aplicativo em segundo plano, bem como quaisquer rastreamentos de código personalizado instrumentados pelo desenvolvedor

    • event_type é DURATION_TRACE
    • event_name é igual ao nome do rastreamento
  • Métrica de rastreamento — métricas personalizadas associadas a rastreamentos de código personalizados instrumentados pelo desenvolvedor

    • event_type é TRACE_METRIC
    • event_name é o nome da métrica
    • parent_trace_name é o nome do rastreamento que contém esta métrica
  • Rastreamento de tela — rastreios que abrangem a vida útil de uma tela (rastreamentos de renderização de tela)

    • event_type é SCREEN_TRACE
    • event_name é o prefixo _st_ mais o nome de tela real
  • Solicitação de rede — rastreamentos que abrangem o tempo de vida de uma solicitação de rede (rastreamentos 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), bem como informações específicas do evento:

  • Rastreamentos de duração, métricas de rastreamento e rastreamentos de tela contêm trace_info
  • As métricas de rastreamento contêm trace_info.metric_info
  • Os rastreamentos de tela contêm trace_info.screen_info
  • Os rastreamentos de rede contêm network_info

Esquema de dados detalhado

Nome do campo Tipo Descrição
evento_timestamp carimbo de data/hora Carimbo de data e hora desde a época em que o evento foi iniciado no dispositivo cliente (início do rastreamento, início da rede, etc.)
app_display_versão corda Exibir versão do aplicativo (por exemplo, "4.1.7")
  • Para Android – VersionName
  • Para iOS – CFBundleShortVersionString
app_build_version corda Versão de compilação do aplicativo (por exemplo, "1523456")
  • Para Android – VersionCode
  • Para iOS – CFBundleVersion
os_versão corda Versão do sistema operacional do dispositivo cliente
  • Para Android — nível de API do Android (por exemplo, "26")
  • Para iOS — versão iOS (por exemplo "11.4")
nome do dispositivo corda Nome do dispositivo cliente (por exemplo, "Google Pixel")
país corda Código de duas letras do país onde o evento ocorreu (por exemplo, "EUA" ou "ZZ" para país desconhecido)
operadora corda Transportadora do dispositivo cliente
radio_type corda Tipo de rádio ativo quando o evento ocorreu (por exemplo, "WIFI")
atributos_personalizados MATRIZ<RECORD> Todos os atributos personalizados anexados a este evento
custom_attributes.key corda Chave do atributo personalizado
atributos_customizados.valor corda Valor do atributo personalizado
tipo de evento corda Tipo do evento; valores possíveis:
  • DURATION_TRACE — rastreamentos que coletam, por padrão, a métrica de "duração", que inclui início do aplicativo, aplicativo em primeiro plano e aplicativo em segundo plano, bem como quaisquer rastreamentos de código personalizado instrumentados pelo desenvolvedor
  • SCREEN_TRACE — rastreamentos que abrangem a vida útil de uma tela (rastreamentos de renderização de tela)
  • TRACE_METRIC — métricas personalizadas associadas a rastreamentos de código personalizados instrumentados pelo desenvolvedor
  • NETWORK_REQUEST — rastreamentos que abrangem o tempo de vida de uma solicitação de rede (rastreamentos de solicitação de rede HTTP)
nome do evento corda Nome do evento
  • Para DURATION_TRACE — nome do rastreamento
  • Para TRACE_METRIC — nome da métrica personalizada
  • Para SCREEN_TRACE_st_ seguido pelo nome do rastreamento
  • Para NETWORK_REQUEST — padrão de URL de solicitação de rede
parent_trace_name corda Nome do rastreamento pai que carrega a métrica de rastreamento
Presente apenas para TRACE_METRIC
trace_info REGISTRO Presente apenas para DURATION_TRACE , SCREEN_TRACE e TRACE_METRIC
trace_info.duration_us int64
  • Para DURATION_TRACE e SCREEN_TRACE — Período de tempo ("duração") do início ao fim do rastreamento
  • Para TRACE_METRIC — período de tempo ("duração") do início ao fim do rastreamento pai
Unidade: microssegundo
trace_info.screen_info REGISTRO Presente apenas para SCREEN_TRACE
trace_info.screen_info.slow_frame_ratio float64 Proporção de quadros lentos para esse rastreamento de tela, entre 0 e 1 (por exemplo, um valor de 0,05 significa que 5% dos quadros dessa instância de tela demoraram mais de 16 ms para serem renderizados)
trace_info.screen_info.frozen_frame_ratio float64 Proporção de quadros congelados para esse rastreamento de tela, entre 0 e 1 (por exemplo, um valor de 0,05 significa que 5% dos quadros dessa instância de tela levaram mais de 700 ms para serem renderizados)
trace_info.metric_info REGISTRO Presente apenas para TRACE_METRIC
trace_info.metric_info.metric_value int64 Valor da métrica de rastreamento
informação de Rede REGISTRO Presente apenas para NETWORK_REQUEST
network_info.response_code int64 Código de resposta HTTP para a resposta da rede (por exemplo, 200, 404)
network_info.response_mime_type corda Tipo MIME da resposta da rede (por exemplo, "text/html")
network_info.request_http_method corda Método HTTP da solicitação de rede (por exemplo, "GET" ou "POST")
network_info.request_payload_bytes int64 Tamanho da carga útil da solicitação de rede
Unidade: byte
network_info.response_payload_bytes int64 Tamanho da carga útil de resposta da rede
Unidade: byte
network_info.request_completed_time_us int64 Microssegundos após event_timestamp quando o envio da solicitação de rede for concluído
Unidade: microssegundo
network_info.response_initiated_time_us int64 Microssegundos após event_timestamp quando a resposta da rede é iniciada
Unidade: microssegundo
network_info.response_completed_time_us int64 Microssegundos após event_timestamp quando a resposta da rede for concluída
Unidade: microssegundo

O que você pode fazer com os dados exportados?

As seções a seguir oferecem exemplos de consultas que você pode executar no BigQuery nos dados exportados do Monitoramento de desempenho.

Veja o detalhamento da latência média de inicialização do aplicativo 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 quadros congelados em relação a diversas condições

Por exemplo, você pode verificar a proporção de quadros congelados junto com a quantidade de tempo que os usuários passam em cada tela do seu aplicativo quando em diferentes tipos de rádio (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 a taxa de acertos do cache para carregar certos tipos de arquivos do disco

Esta análise pressupõe que você instrumentou um rastreamento de código customizado para carregamento do disco com um atributo customizado chamado file-extension e uma métrica customizada (um TRACE_METRIC ) chamada cache-hit que é definida como 1 se o cache for atingido e 0 se o cache falhar.

Por exemplo, você pode calcular a taxa de acertos do cache para carregar arquivos PNG 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);

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

Por exemplo, você pode verificar a que horas do dia os usuários dos Estados Unidos emitem solicitações de rede do seu aplicativo:

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;

Leve seus dados de monitoramento de desempenho para qualquer lugar

Às vezes, você deseja acessar os dados do Monitoramento de Desempenho no servidor ou enviá-los para outra solução de terceiros. Atualmente não há cobrança pela exportação de dados.

Você pode exportar seus dados:

Preços

Não há cobrança pela exportação de dados do Monitoramento de desempenho, e o BigQuery oferece limites de uso generosos e gratuitos. Para obter informações detalhadas, consulte os preços do BigQuery ou o sandbox do BigQuery .