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
Acesse a página Integrações no Firebase Console e clique em Link no cartão do BigQuery .
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.
- Você pode programar manualmente preenchimentos de dados até os últimos 30 dias ou para a data mais recente quando você ativou a exportação do BigQuery (o que for mais recente).
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")
|
app_build_version | corda | Versão de compilação do aplicativo (por exemplo, "1523456")
|
os_versão | corda | Versão do sistema operacional do dispositivo cliente
|
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:
|
nome do evento | corda | Nome do evento
|
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 |
|
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 de 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ídoUnidade: microssegundo |
network_info.response_initiated_time_us | int64 | Microssegundos após event_timestamp quando a resposta da rede é iniciadaUnidade: microssegundo |
network_info.response_completed_time_us | int64 | Microssegundos após event_timestamp quando a resposta da rede for concluídaUnidade: 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:
Usando a IU da Web do BigQuery
Executando o comando CLI
bq extract
Envio de um trabalho de extração por meio da API ou de bibliotecas cliente.
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 .