Catch up on everything announced at Firebase Summit, and learn how Firebase can help you accelerate app development and run your app with confidence. Learn More

Exportar dados do Monitoramento de desempenho para o BigQuery

Mantenha tudo organizado com as coleções Salve e categorize o conteúdo com base nas suas preferências.

Você pode exportar dados de monitoramento de desempenho de aplicativos da 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 console do Firebase 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 de 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 pode ser alterado, mas você pode 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 local do conjunto de dados .

    • O Firebase configura sincronizações regulares dos seus dados do seu projeto do Firebase com o BigQuery. Essas operações diárias de exportação geralmente terminam em 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 são vinculados automaticamente 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 no projeto, a exportação cria uma tabela que inclui todos os eventos de desempenho capturados. Cada linha na 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 qualquer rastreamento de código personalizado instrumentado pelo desenvolvedor

    • event_type é DURATION_TRACE
    • event_name é o mesmo que o 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 trace que contém essa métrica
  • Rastreamento de tela — rastreamentos que abrangem o tempo de vida de uma tela (rastreamentos de renderização de tela)

    • event_type é SCREEN_TRACE
    • event_name é o prefixo _st_ mais o nome da 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 Modelo Descrição
event_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_version 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_version corda Versão do SO 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 país de duas letras do país de onde o evento ocorreu (por exemplo, "US" ou "ZZ" para país desconhecido)
operadora corda Portadora do dispositivo cliente
radio_type corda Tipo de rádio ativo quando o evento ocorreu (por exemplo, "WIFI")
custom_attributes MATRIZ<RECORD> Todos os atributos personalizados anexados a este evento
custom_attributes.key corda Chave do atributo personalizado
custom_attributes.value 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 qualquer rastreamento de código personalizado instrumentado pelo desenvolvedor
  • SCREEN_TRACE — rastreamentos que abrangem o tempo de vida 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 este rastreamento de tela, entre 0 e 1 (por exemplo, um valor de 0,05 significa que 5% dos quadros para esta instância de tela levaram mais de 16ms para renderizar)
trace_info.screen_info.frozen_frame_ratio float64 Proporção de quadros congelados para este rastreamento de tela, entre 0 e 1 (por exemplo, um valor de 0,05 significa que 5% dos quadros para esta instância de tela levaram mais de 700 ms para renderizar)
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 de rede (por exemplo, 200, 404)
network_info.response_mime_type corda Tipo MIME da resposta de 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 é 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 é 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 relação aos dados exportados do Monitoramento de desempenho.

Veja o detalhamento médio da latência inicial 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 várias condições

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

Essa análise pressupõe que você instrumentou um rastreamento de código personalizado para carregamento do disco com um atributo personalizado chamado file-extension e uma métrica personalizada (um TRACE_METRIC ) chamada cache-hit que é definida como 1 se o cache atingir e 0 se o cache perder.

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 do lado do 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 por:

Preços

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