Sie können Leistungsüberwachungsdaten aus Apple- und Android-Apps zur weiteren Analyse in BigQuery exportieren. Mit BigQuery können Sie die Daten mit BigQuery SQL analysieren, sie zu einem anderen Cloud-Anbieter exportieren und die Daten sogar für Ihre benutzerdefinierten ML-Modelle verwenden.
Aktivieren Sie den BigQuery-Export
Rufen Sie in der Firebase-Konsole die Seite „Integrationen“ auf und klicken Sie dann in der BigQuery- Karte auf Link .
Befolgen Sie die Anweisungen auf dem Bildschirm, um BigQuery zu aktivieren.
Wenn Sie den BigQuery-Export für die Leistungsüberwachung aktivieren, geschieht Folgendes:
Firebase exportiert eine Kopie Ihrer vorhandenen Daten nach BigQuery. Die anfängliche Übertragung von Daten für den Export kann bis zu 48 Stunden dauern.
- Sie können Daten-Backfills manuell für die letzten 30 Tage oder für das aktuellste Datum planen , an dem Sie den BigQuery-Export aktiviert haben (je nachdem, welches Datum aktueller ist).
Nachdem das Dataset erstellt wurde, kann der Speicherort nicht mehr geändert werden, aber Sie können das Dataset an einen anderen Speicherort kopieren oder das Dataset manuell an einen anderen Speicherort verschieben (neu erstellen). Weitere Informationen finden Sie unter Dataset-Speicherort ändern .
Firebase richtet regelmäßige Synchronisierungen Ihrer Daten aus Ihrem Firebase-Projekt mit BigQuery ein. Diese täglichen Exportoperationen enden in der Regel innerhalb von 24 Stunden nach ihrer Planung.
Standardmäßig sind alle Apps in Ihrem Projekt mit BigQuery verknüpft. Alle Apps, die Sie später zum Projekt hinzufügen, werden automatisch mit BigQuery verknüpft. Sie können verwalten, welche Apps Daten senden .
Um den BigQuery-Export zu deaktivieren, heben Sie die Verknüpfung Ihres Projekts in der Firebase-Konsole auf.
Welche Daten werden nach BigQuery exportiert?
Für jede App im Projekt erstellt der Export eine Tabelle, die alle erfassten Leistungsereignisse enthält. Jede Zeile in der Tabelle ist ein einzelnes Leistungsereignis, das eines der folgenden sein kann:
Dauer-Trace – Ablaufverfolgungen, die standardmäßig die Metrik „Dauer“ erfassen, die App-Start, App-im-Vordergrund und App-im-Hintergrund sowie alle vom Entwickler instrumentierten benutzerdefinierten Code-Traces umfassen
-
event_type
istDURATION_TRACE
-
event_name
ist mit dem Ablaufverfolgungsnamen identisch
-
Trace-Metrik – benutzerdefinierte Metriken, die mit vom Entwickler instrumentierten benutzerdefinierten Code-Traces verknüpft sind
-
event_type
istTRACE_METRIC
-
event_name
ist der Name der Metrik -
parent_trace_name
ist der Ablaufverfolgungsname, der diese Metrik enthält
-
Screen Trace – Traces über die Lebensdauer eines Bildschirms (Screen Rendering Traces)
-
event_type
istSCREEN_TRACE
-
event_name
ist das Präfix_st_
plus der tatsächliche Bildschirmname
-
Netzwerkanforderung – Ablaufverfolgungen über die Lebensdauer einer Netzwerkanforderung (HTTP-Netzwerkanforderungsablaufverfolgungen)
-
event_type
istNETWORK_REQUEST
-
event_name
ist das kategorisierte Muster der Netzwerkanforderungs-URL
-
Jedes Leistungsereignis enthält Attribute des Ereignisses (z. B. Land und Anbieter des Clientgeräts) sowie ereignisspezifische Informationen:
- Dauer-Traces, Trace-Metriken und Bildschirm-Traces enthalten
trace_info
- Trace-Metriken enthalten
trace_info.metric_info
- Bildschirmablaufverfolgungen enthalten
trace_info.screen_info
- Netzwerkablaufverfolgungen enthalten
network_info
Detailliertes Datenschema
Feldname | Typ | Beschreibung |
---|---|---|
event_timestamp | Zeitstempel | Zeitstempel seit Epoche, als das Ereignis auf dem Client-Gerät gestartet wurde (Trace-Start, Netzwerk-Start usw.) |
app_display_version | Schnur | Version der Anwendung anzeigen (z. B. „4.1.7“)
|
app_build_version | Schnur | Build-Version der Anwendung (z. B. „1523456“)
|
OS Version | Schnur | Betriebssystemversion des Clientgeräts
|
Gerätename | Schnur | Name des Client-Geräts (z. B. „Google Pixel“) |
Land | Schnur | Ländercode aus zwei Buchstaben des Landes, in dem das Ereignis stattfand (z. B. „US“ oder „ZZ“ für unbekanntes Land) |
Träger | Schnur | Träger des Client-Geräts |
radio_typ | Schnur | Aktiver Radiotyp, als das Ereignis stattfand (z. B. "WIFI") |
benutzerdefinierte_attribute | ARRAY<DATENSATZ> | Alle benutzerdefinierten Attribute, die diesem Ereignis zugeordnet sind |
custom_attributes.key | Schnur | Schlüssel des benutzerdefinierten Attributs |
custom_attributes.value | Schnur | Wert des benutzerdefinierten Attributs |
Ereignistyp | Schnur | Art der Veranstaltung; mögliche Werte:
|
Veranstaltungsname | Schnur | Name der Veranstaltung
|
parent_trace_name | Schnur | Name der übergeordneten Ablaufverfolgung, die die Ablaufverfolgungsmetrik trägt Nur vorhanden für TRACE_METRIC |
trace_info | AUFZEICHNEN | Nur vorhanden für DURATION_TRACE , SCREEN_TRACE und TRACE_METRIC |
trace_info.duration_us | int64 |
|
trace_info.screen_info | AUFZEICHNEN | Nur für SCREEN_TRACE vorhanden |
trace_info.screen_info.slow_frame_ratio | float64 | Verhältnis von langsamen Frames für diese Bildschirmspur zwischen 0 und 1 (ein Wert von 0,05 bedeutet beispielsweise, dass 5 % der Frames für diese Bildschirminstanz länger als 16 ms zum Rendern gedauert haben) |
trace_info.screen_info.frozen_frame_ratio | float64 | Verhältnis eingefrorener Frames für diese Bildschirmspur zwischen 0 und 1 (ein Wert von 0,05 bedeutet beispielsweise, dass 5 % der Frames für diese Bildschirminstanz länger als 700 ms zum Rendern gedauert haben) |
trace_info.metric_info | AUFZEICHNEN | Nur vorhanden für TRACE_METRIC |
trace_info.metric_info.metric_value | int64 | Wert der Ablaufverfolgungsmetrik |
Netzwerk information | AUFZEICHNEN | Nur für NETWORK_REQUEST vorhanden |
network_info.response_code | int64 | HTTP-Antwortcode für die Netzwerkantwort (z. B. 200, 404) |
network_info.response_mime_type | Schnur | MIME-Typ der Netzwerkantwort (z. B. "text/html") |
network_info.request_http_method | Schnur | HTTP-Methode der Netzwerkanfrage (z. B. „GET“ oder „POST“) |
network_info.request_payload_bytes | int64 | Größe der Nutzlast der Netzwerkanforderung Einheit: Byte |
network_info.response_payload_bytes | int64 | Größe der Nutzlast der Netzwerkantwort Einheit: Byte |
network_info.request_completed_time_us | int64 | Mikrosekunden nach event_timestamp , wenn das Senden der Netzwerkanforderung abgeschlossen istEinheit: Mikrosekunde |
network_info.response_initiated_time_us | int64 | Mikrosekunden nach event_timestamp , wenn eine Netzwerkantwort initiiert wirdEinheit: Mikrosekunde |
network_info.response_completed_time_us | int64 | Mikrosekunden nach event_timestamp , wenn die Netzwerkantwort abgeschlossen istEinheit: Mikrosekunde |
Was können Sie mit den exportierten Daten tun?
Die folgenden Abschnitte bieten Beispiele für Abfragen, die Sie in BigQuery für Ihre exportierten Leistungsüberwachungsdaten ausführen können.
Sehen Sie sich die Aufschlüsselung der durchschnittlichen App-Startlatenz nach Land an
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;
Überprüfen Sie das Verhältnis eingefrorener Frames unter verschiedenen Bedingungen
Sie können beispielsweise das Verhältnis eingefrorener Frames neben der Zeit überprüfen, die Benutzer auf jedem Bildschirm Ihrer App verbringen, wenn sie verschiedene Funktypen (WLAN, 4G usw.) verwenden.
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;
Berechnen Sie die Cache-Trefferrate zum Laden bestimmter Dateitypen von der Festplatte
Bei dieser Analyse wird davon ausgegangen, dass Sie einen benutzerdefinierten Code-Trace zum Laden vom Datenträger mit einem benutzerdefinierten Attribut namens file-extension
und einer benutzerdefinierten Metrik (eine TRACE_METRIC
) namens cache-hit
instrumentiert haben, die auf 1
gesetzt ist, wenn ein Cache-Treffer vorliegt, und auf 0
wenn ein Cache-Fehler auftritt.
Beispielsweise können Sie die Cache-Trefferrate für das Laden von PNG-Dateien von der Festplatte berechnen:
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);
Überprüfen Sie die Tageszeit, zu der Benutzer Netzwerkanfragen stellen
Sie können beispielsweise überprüfen, zu welcher Tageszeit Benutzer aus den USA Netzwerkanfragen von Ihrer App stellen:
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;
Nehmen Sie Ihre Leistungsüberwachungsdaten überallhin mit
Manchmal möchten Sie serverseitig auf Ihre Leistungsüberwachungsdaten zugreifen oder sie an eine andere Drittanbieterlösung übertragen. Für den Export von Daten fallen derzeit keine Gebühren an.
Sie können Ihre Daten folgendermaßen exportieren:
Verwenden der BigQuery-Web-UI
Ausführen des CLI-Befehls
bq extract
Senden eines Extraktionsauftrags über die API oder Client-Bibliotheken.
Preisgestaltung
Für den Export von Daten aus der Leistungsüberwachung fallen keine Gebühren an, und BigQuery bietet großzügige kostenlose Nutzungsbeschränkungen. Ausführliche Informationen finden Sie unter BigQuery-Preise oder in der BigQuery-Sandbox .