É possível exportar os dados do Monitoramento de desempenho de apps da Apple 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
Acesse a página Integrações no Console do Firebase e, em seguida, clique em Vincular no card do BigQuery.
Siga as instruções na tela para ativar o BigQuery.
Ao ativar o BigQuery Export para o Monitoramento de desempenho, acontece o seguinte:
O Firebase exporta uma cópia dos seus dados para o BigQuery. A propagação inicial dos dados para exportação pode levar até 48 horas para ser concluída.
- É possível configurar manualmente o preenchimento de dados dos últimos 30 dias ou da data mais recente em que você ativou a exportação do BigQuery (o que for mais recente).
Após a criação do banco de dados, o local não pode ser alterado, mas é possível mover (recriar) ou copiar o conjunto de dados para um local diferente. Para saber mais, consulte Mudar local do conjunto de dados.
O Firebase configura sincronizações regulares dos dados do projeto do Firebase para o BigQuery. Essas operações de exportação diárias geralmente terminam em 24 horas depois de serem programadas.
Por padrão, todos os apps no projeto são vinculados ao BigQuery. Todos os apps adicionados posteriormente ao projeto são vinculados automaticamente ao BigQuery. É possível gerenciar quais apps enviam dados.
Para desativar o BigQuery Export, 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étricaparent_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")
|
app_build_version | string | A versão do aplicativo (por exemplo, "1523456")
|
os_version | string | A versão do SO do dispositivo cliente
|
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:
|
event_name | string | Nome do evento
|
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 |
|
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ídoUnidade: microssegundo |
network_info.response_initiated_time_us | int64 | Microssegundos após event_timestamp quando a resposta da rede for iniciadaUnidade: microssegundo |
network_info.response_completed_time_us | int64 | Microssegundos após event_timestamp quando a resposta de rede estiver completaUnidade: 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
Visualizar 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 pela API ou por bibliotecas do cliente.
Preços
Não há custos para exportar dados do Monitoramento de desempenho. Além disso, o BigQuery fornece limites generosos e sem custos. Para mais informações, consulte preços do BigQuery ou o sandbox do BigQuery.