Puoi esportare i dati di monitoraggio delle prestazioni dalle app Apple e Android in BigQuery per ulteriori analisi. BigQuery ti consente di analizzare i dati utilizzando BigQuery SQL, esportarli in un altro provider cloud e persino utilizzare i dati per i tuoi modelli ML personalizzati.
Abilita l'esportazione BigQuery
Vai alla pagina Integrazioni nella console Firebase, quindi fai clic su Collegamento nella scheda BigQuery .
Segui le istruzioni visualizzate sullo schermo per abilitare BigQuery.
Quando abiliti l'esportazione BigQuery per il monitoraggio delle prestazioni, si verifica quanto segue:
Firebase esporta una copia dei tuoi dati esistenti in BigQuery. Il completamento della propagazione iniziale dei dati per l'esportazione potrebbe richiedere fino a 48 ore.
- Puoi pianificare manualmente i backfill dei dati fino agli ultimi 30 giorni o alla data più recente in cui hai abilitato l'esportazione BigQuery (a seconda di quale sia la più recente).
Dopo aver creato il set di dati, la posizione non può essere modificata, ma è possibile copiare il set di dati in una posizione diversa o spostare (ricreare) manualmente il set di dati in una posizione diversa. Per ulteriori informazioni, consulta Modificare la posizione del set di dati .
Firebase configura sincronizzazioni regolari dei tuoi dati dal tuo progetto Firebase a BigQuery. Queste operazioni di esportazione giornaliere terminano solitamente entro 24 ore dalla pianificazione.
Per impostazione predefinita, tutte le app nel tuo progetto sono collegate a BigQuery. Tutte le app che aggiungi successivamente al progetto vengono automaticamente collegate a BigQuery. Puoi gestire quali app inviano dati .
Per disattivare l'esportazione BigQuery, scollega il tuo progetto nella console Firebase.
Quali dati vengono esportati in BigQuery?
Per ogni app nel progetto, l'esportazione crea una tabella che include tutti gli eventi di prestazioni acquisiti. Ogni riga nella tabella rappresenta un singolo evento di prestazione che può essere uno dei seguenti:
Traccia della durata : tracce che raccolgono, per impostazione predefinita, la metrica della "durata", che include l'avvio dell'app, l'app in primo piano e l'app in background, nonché eventuali tracce di codice personalizzato strumentate dallo sviluppatore
-
event_type
èDURATION_TRACE
-
event_name
è uguale al nome della traccia
-
Metrica di traccia : metrica personalizzata associata a tracce di codice personalizzato strumentate dallo sviluppatore
-
event_type
èTRACE_METRIC
-
event_name
è il nome della metrica -
parent_trace_name
è il nome della traccia che contiene questa metrica
-
Traccia dello schermo : tracce che coprono l'intera durata di uno schermo (tracce di rendering dello schermo)
-
event_type
èSCREEN_TRACE
-
event_name
è il prefisso_st_
più il nome della schermata effettiva
-
Richiesta di rete : tracce che coprono la durata di una richiesta di rete (tracce di richieste di rete HTTP)
-
event_type
èNETWORK_REQUEST
-
event_name
è il modello categorizzato dell'URL della richiesta di rete
-
Ogni evento di prestazione contiene attributi dell'evento (come paese e operatore del dispositivo client), nonché informazioni specifiche sull'evento:
- Le tracce della durata, le metriche di traccia e le tracce dello schermo contengono
trace_info
- Le metriche di traccia contengono
trace_info.metric_info
- Le tracce dello schermo contengono
trace_info.screen_info
- Le tracce di rete contengono
network_info
Schema dettagliato dei dati
Nome del campo | Tipo | Descrizione |
---|---|---|
evento_timestamp | timestamp | Timestamp dall'epoca in cui l'evento è iniziato sul dispositivo client (avvio della traccia, avvio della rete, ecc.) |
app_display_version | corda | Visualizza la versione dell'applicazione (ad esempio, "4.1.7")
|
app_build_versione | corda | Compila la versione dell'applicazione (ad esempio, "1523456")
|
os_version | corda | Versione del sistema operativo del dispositivo client
|
nome del dispositivo | corda | Nome del dispositivo client (ad esempio "Google Pixel") |
Paese | corda | Codice paese a due lettere del paese da cui ha avuto luogo l'evento (ad esempio, "US" o "ZZ" per paese sconosciuto) |
vettore | corda | Operatore del dispositivo client |
tipo_radio | corda | Tipo di radio attiva al momento dell'evento (ad esempio "WIFI") |
attributi_personalizzati | ARRAY<RECORD> | Tutti gli attributi personalizzati allegati a questo evento |
attributi_personalizzati.chiave | corda | Chiave dell'attributo personalizzato |
attributi_personalizzati.valore | corda | Valore dell'attributo personalizzato |
Tipo di evento | corda | Tipologia dell'evento; valori possibili:
|
nome dell'evento | corda | Nome dell'evento
|
nome_traccia_genitore | corda | Nome della traccia principale che trasporta la metrica di traccia Presente solo per TRACE_METRIC |
trace_info | DOCUMENTAZIONE | Presente solo per DURATION_TRACE , SCREEN_TRACE e TRACE_METRIC |
trace_info.duration_us | int64 |
|
trace_info.screen_info | DOCUMENTAZIONE | Presente solo per SCREEN_TRACE |
trace_info.screen_info.slow_frame_ratio | float64 | Rapporto di fotogrammi lenti per questa traccia dello schermo, compreso tra 0 e 1 (ad esempio, un valore di 0,05 significa che il 5% dei fotogrammi per questa istanza dello schermo ha impiegato più di 16 ms per il rendering) |
trace_info.screen_info.frozen_frame_ratio | float64 | Rapporto dei fotogrammi congelati per questa traccia dello schermo, compreso tra 0 e 1 (ad esempio, un valore di 0,05 significa che il 5% dei fotogrammi per questa istanza dello schermo ha impiegato più di 700 ms per il rendering) |
trace_info.metric_info | DOCUMENTAZIONE | Presente solo per TRACE_METRIC |
trace_info.metric_info.metric_value | int64 | Valore della metrica di traccia |
rete_info | DOCUMENTAZIONE | Presente solo per NETWORK_REQUEST |
network_info.response_code | int64 | Codice di risposta HTTP per la risposta di rete (ad esempio, 200, 404) |
network_info.response_mime_type | corda | Tipo MIME della risposta di rete (ad esempio "testo/html") |
network_info.request_http_method | corda | Metodo HTTP della richiesta di rete (ad esempio "GET" o "POST") |
network_info.request_payload_bytes | int64 | Dimensioni del payload della richiesta di rete Unità: byte |
network_info.response_payload_bytes | int64 | Dimensioni del carico utile della risposta della rete Unità: byte |
network_info.request_completed_time_us | int64 | Microsecondi dopo event_timestamp quando l'invio della richiesta di rete è completoUnità: microsecondo |
network_info.response_initiated_time_us | int64 | Microsecondi dopo event_timestamp quando viene avviata la risposta della reteUnità: microsecondo |
network_info.response_completed_time_us | int64 | Microsecondi dopo event_timestamp al completamento della risposta della reteUnità: microsecondo |
Cosa puoi fare con i dati esportati?
Le sezioni seguenti offrono esempi di query che puoi eseguire in BigQuery rispetto ai dati di monitoraggio delle prestazioni esportati.
Visualizza la latenza media di avvio delle app suddivisa per Paese
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;
Controlla il rapporto dei fotogrammi congelati rispetto a varie condizioni
Ad esempio, puoi controllare il rapporto tra i fotogrammi congelati e la quantità di tempo che gli utenti trascorrono su ciascuna schermata della tua app quando utilizzano diversi tipi di radio (WiFi, 4G, ecc.).
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;
Calcola la frequenza di utilizzo della cache per caricare determinati tipi di file dal disco
Questa analisi presuppone che tu abbia dotato una traccia del codice personalizzato per il caricamento dal disco con un attributo personalizzato denominato file-extension
e una metrica personalizzata ( TRACE_METRIC
) denominata cache-hit
impostata su 1
in caso di riscontro nella cache e 0
in caso di mancato riscontro nella cache.
Ad esempio, puoi calcolare la percentuale di riscontri nella cache per il caricamento di file PNG dal 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);
Controlla l'ora del giorno in cui gli utenti inviano richieste di rete
Ad esempio, puoi verificare a quale ora del giorno gli utenti degli Stati Uniti inviano richieste di rete dalla tua 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;
Porta i tuoi dati di monitoraggio delle prestazioni ovunque
A volte desideri accedere ai dati di monitoraggio delle prestazioni lato server o inviarli a un'altra soluzione di terze parti. Al momento non sono previsti costi per l'esportazione dei dati.
Puoi esportare i tuoi dati tramite:
Utilizzando l'interfaccia utente web di BigQuery
Esecuzione del comando CLI
bq extract
Invio di un processo di estrazione tramite l'API o le librerie client.
Prezzi
Non sono previsti costi per l'esportazione dei dati da Performance Monitoring e BigQuery offre generosi limiti di utilizzo gratuiti. Per informazioni dettagliate, fai riferimento ai prezzi di BigQuery o alla sandbox BigQuery .