Exportieren Sie Leistungsüberwachungsdaten nach BigQuery

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

  1. Gehen Sie in der Firebase-Konsole zur Seite „Integrationen“ und klicken Sie dann auf der BigQuery- Karte auf „Link“ .

  2. 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.

    • 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 ist DURATION_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 ist TRACE_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 ist SCREEN_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 ist NETWORK_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“)
  • Für Android – VersionName
  • Für iOS – CFBundleShortVersionString
app_build_version Zeichenfolge Build-Version der Anwendung (z. B. „1523456“)
  • Für Android – VersionCode
  • Für iOS – CFBundleVersion
OS Version Zeichenfolge Betriebssystemversion des Clientgeräts
  • Für Android – Android-API-Ebene (zum Beispiel „26“)
  • Für iOS – iOS-Version (zum Beispiel „11.4“)
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:
  • DURATION_TRACE – Ablaufverfolgungen, 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-Ablaufverfolgungen
  • SCREEN_TRACE – Spuren, die sich über die gesamte Lebensdauer eines Bildschirms erstrecken (Bildschirmrendering-Spuren)
  • TRACE_METRIC – benutzerdefinierte Metriken, die mit vom Entwickler instrumentierten benutzerdefinierten Code-Traces verknüpft sind
  • NETWORK_REQUEST – Spuren, die sich über die Lebensdauer einer Netzwerkanforderung erstrecken (HTTP-Netzwerkanforderungsspuren)
Veranstaltungsname Zeichenfolge Name der Veranstaltung
  • Für DURATION_TRACE – Trace-Name
  • Für TRACE_METRIC – benutzerdefinierter Metrikname
  • Für SCREEN_TRACE_st_ gefolgt vom Trace-Namen
  • Für NETWORK_REQUEST – Netzwerkanforderungs-URL-Muster
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
  • Für DURATION_TRACE und SCREEN_TRACE – Zeitdauer („Dauer“) vom Anfang bis zum Ende der Ablaufverfolgung
  • Für TRACE_METRIC – Zeitdauer („Dauer“) vom Anfang bis zum Ende der übergeordneten Ablaufverfolgung
Einheit: Mikrosekunde
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 ist
Einheit: Mikrosekunde
network_info.response_initiated_time_us int64 Mikrosekunden nach event_timestamp , wenn eine Netzwerkantwort initiiert wird
Einheit: Mikrosekunde
network_info.response_completed_time_us int64 Mikrosekunden nach event_timestamp , wenn die Netzwerkantwort abgeschlossen ist
Einheit: 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 .