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
Gehen Sie in der Firebase-Konsole zur Seite „Integrationen“ und klicken Sie dann auf 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 erstmalige Weitergabe der 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 jüngste 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. Sie können das Dataset jedoch an einen anderen Speicherort kopieren oder das Dataset manuell an einen anderen Speicherort verschieben (neu erstellen). Weitere Informationen finden Sie unter Datensatzspeicherort ändern .
Firebase richtet regelmäßige Synchronisierungen Ihrer Daten aus Ihrem Firebase-Projekt mit BigQuery ein. Diese täglichen Exportvorgänge werden in der Regel innerhalb von 24 Stunden nach ihrer Planung abgeschlossen.
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 – Traces, die standardmäßig die Metrik „Dauer“ erfassen, einschließlich App-Start, App-im-Vordergrund und App-im-Hintergrund sowie alle vom Entwickler instrumentierten benutzerdefinierten Code-Traces
-
event_type
istDURATION_TRACE
-
event_name
ist derselbe wie der Tracename
-
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 Tracename, der diese Metrik enthält
-
Bildschirmverfolgung – Spuren, die sich über die gesamte Lebensdauer eines Bildschirms erstrecken (Bildschirmwiedergabespuren)
-
event_type
istSCREEN_TRACE
-
event_name
besteht aus dem Präfix_st_
plus dem tatsächlichen Bildschirmnamen
-
Netzwerkanforderung – Spuren, die sich über die gesamte Lebensdauer einer Netzwerkanforderung erstrecken (HTTP-Netzwerkanforderungsspuren)
-
event_type
istNETWORK_REQUEST
-
event_name
ist das kategorisierte Muster der Netzwerkanforderungs-URL
-
Jedes Leistungsereignis enthält Attribute des Ereignisses (z. B. Land und Netzbetreiber des Clientgeräts) sowie ereignisspezifische Informationen:
- Dauer-Traces, Trace-Metriken und Bildschirm-Traces enthalten
trace_info
- Trace-Metriken enthalten
trace_info.metric_info
. - Bildschirmspuren enthalten
trace_info.screen_info
- Netzwerkspuren enthalten
network_info
Detailliertes Datenschema
Feldname | Typ | Beschreibung |
---|---|---|
event_timestamp | Zeitstempel | Zeitstempel seit der Epoche, als das Ereignis auf dem Clientgerät gestartet wurde (Trace-Start, Netzwerkstart usw.) |
app_display_version | Zeichenfolge | Anzeigeversion der Anwendung (z. B. „4.1.7“)
|
app_build_version | Zeichenfolge | Build-Version der Anwendung (z. B. „1523456“)
|
OS Version | Zeichenfolge | Betriebssystemversion des Clientgeräts
|
Gerätename | Zeichenfolge | Name des Client-Geräts (z. B. „Google Pixel“) |
Land | Zeichenfolge | Zweibuchstabiger Ländercode des Landes, in dem das Ereignis stattgefunden hat (z. B. „US“ oder „ZZ“ für unbekanntes Land) |
Träger | Zeichenfolge | Träger des Clientgeräts |
radio_type | Zeichenfolge | Aktiver Funktyp, als das Ereignis stattfand (z. B. „WIFI“) |
benutzerdefinierte_Attribute | ARRAY<RECORD> | Alle benutzerdefinierten Attribute, die diesem Ereignis zugeordnet sind |
custom_attributes.key | Zeichenfolge | Schlüssel des benutzerdefinierten Attributs |
benutzerdefinierte_Attribute.Wert | Zeichenfolge | Wert des benutzerdefinierten Attributs |
event_type | Zeichenfolge | Art der Veranstaltung; mögliche Werte:
|
Veranstaltungsname | Zeichenfolge | Name der Veranstaltung
|
parent_trace_name | Zeichenfolge | Name der übergeordneten Ablaufverfolgung, die die Ablaufverfolgungsmetrik trägt Nur für TRACE_METRIC vorhanden |
Trace_info | AUFZEICHNEN | Nur für DURATION_TRACE , SCREEN_TRACE und TRACE_METRIC vorhanden |
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 langsamer Frames für diese Bildschirmverfolgung, zwischen 0 und 1 (ein Wert von 0,05 bedeutet beispielsweise, dass das Rendern von 5 % der Frames für diese Bildschirminstanz mehr als 16 ms dauerte) |
Trace_info.screen_info.frozen_frame_ratio | float64 | Verhältnis der eingefrorenen Frames für diese Bildschirmverfolgung, zwischen 0 und 1 (ein Wert von 0,05 bedeutet beispielsweise, dass das Rendern von 5 % der Frames für diese Bildschirminstanz mehr als 700 ms dauerte) |
Trace_info.metric_info | AUFZEICHNEN | Nur für TRACE_METRIC vorhanden |
Trace_info.metric_info.metric_value | int64 | Wert der Trace-Metrik |
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 | Zeichenfolge | MIME-Typ der Netzwerkantwort (z. B. „text/html“) |
network_info.request_http_method | Zeichenfolge | HTTP-Methode der Netzwerkanforderung (z. B. „GET“ oder „POST“) |
network_info.request_payload_bytes | int64 | Größe der Netzwerkanforderungsnutzlast Einheit: Byte |
network_info.response_payload_bytes | int64 | Größe der Netzwerkantwortnutzlast 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 machen?
In den folgenden Abschnitten finden Sie 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 anhand verschiedener Bedingungen
Sie können beispielsweise das Verhältnis eingefrorener Frames zusammen mit der Zeit überprüfen, die Benutzer auf jedem Bildschirm Ihrer App verbringen, wenn sie verschiedene Funktypen (WLAN, 4G usw.) nutzen.
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 für das Laden bestimmter Dateitypen von der Festplatte
Bei dieser Analyse wird davon ausgegangen, dass Sie einen benutzerdefinierten Code-Trace zum Laden von der Festplatte mit einem benutzerdefinierten Attribut namens „ file-extension
und einer benutzerdefinierten Metrik ( TRACE_METRIC
) namens cache-hit
instrumentiert haben, die bei Cache-Treffer auf 1
und bei Cache-Fehlschlag auf 0
gesetzt ist.
Sie können beispielsweise die Cache-Trefferquote 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 über Ihre 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 überall hin mit
Manchmal möchten Sie serverseitig auf Ihre Performance-Monitoring-Daten zugreifen oder diese an eine andere Lösung eines Drittanbieters übertragen. Für den Datenexport fallen derzeit keine Kosten an.
Sie können Ihre Daten exportieren, indem Sie:
Verwenden der BigQuery-Web-Benutzeroberfläche
Ausführen des CLI-Befehls
bq extract
Senden eines Extraktionsauftrags über die API oder Clientbibliotheken.
Preisgestaltung
Der Export von Daten aus Performance Monitoring ist kostenlos und BigQuery bietet großzügige, kostenlose Nutzungsbeschränkungen. Ausführliche Informationen finden Sie unter BigQuery-Preise oder in der BigQuery-Sandbox .