Ir para o console

Exportar dados do Monitoramento de desempenho para o BigQuery

É possível exportar seus dados do Monitoramento de desempenho ao 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. Para começar, use uma das seguintes opções:

  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 sincronizações regulares dos dados do projeto do Firebase para o BigQuery;

  • todos os apps no projeto são vinculados ao BigQuery por padrão, e todos os apps adicionados posteriormente ao projeto são vinculados automaticamente ao BigQuery. é 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: inclui início do aplicativo, primeiro plano, segundo plano e todos os traces instrumentados pelo desenvolvedor

    • event_type é DURATION_TRACE
    • event_name é o mesmo que o nome do trace
  • Métrica de trace: métricas instrumentadas pelo desenvolvedor associadas a traces, anteriormente conhecidos como contadores

    • 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 a vida útil de uma tela

    • event_type é SCREEN_TRACE
    • event_name é o prefixo _st_ junto do nome real da tela
  • Solicitação de rede

    • 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
  • Métricas de trace contêm trace_info.metric_info
  • Traces de tela contêm trace_info.screen_info
  • Solicitações 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 de criaçã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: o nível da API Android (por exemplo, "26")
  • Para iOS: a 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: inclui o início do aplicativo, primeiro plano, segundo plano e todos os traces instrumentados pelo desenvolvedor
  • SCREEN_TRACE: traces que abrangem a vida útil de uma tela
  • TRACE_METRIC: métricas instrumentadas pelo desenvolvedor associadas a traces, anteriormente conhecidos como contadores
  • NETWORK_REQUEST
event_name string Nome do evento
  • Para DURATION_TRACE: o nome do trace
  • Para SCREEN_TRACE: _st_ seguido pelo nome do trace
  • Para NETWORK_REQUEST: o padrão do URL de solicitação de rede
  • Para TRACE_METRIC: o nome da métrica
parent_trace_name string Nome do trace pai que transporta a métrica de trace
Apenas presente 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: duração desse trace.
  • Para TRACE_METRIC: duração desse 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 nessa 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 da solicitação de rede
Unidade: byte
network_info.response_payload_bytes int64 Tamanho do payload da resposta de rede
Unidade: byte
network_info.request_completed_time_us int64 Microssegundos após o event_timestamp quando a solicitação do pedido de rede for concluída
Unidade: microssegundo
network_info.response_initiated_time_us int64 Microssegundos após o event_timestamp quando a resposta da rede for iniciada
Unidade: microssegundo
network_info.response_completed_time_us int64 Microssegundos após o event_timestamp quando a resposta de 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 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;

Calcule a taxa de ocorrência em cache ao carregar certos tipos de arquivos a partir do disco

Para esta análise, espera-se que você tenha configurado um trace personalizado para carregamento a partir do disco com um atributo personalizado nomeado file-extension e uma métrica de trace nomeada cache-hit que é configurada como 1 se ocorrer no cache e 0 se não ocorrer.

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);

Verifique a hora do dia em que usuários estão emitindo solicitações de rede

Por exemplo, é possível verificar em que hora do dia usuários dos Estados Unidos estão emitindo solicitações de rede a partir 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 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:

  • usando a IU da Web do BigQuery;
  • executando o comando da CLI bq extract;
  • enviando 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 informações detalhadas, consulte preços do BigQuery ou sandbox do BigQuery.