Check out what’s new from Firebase at Google I/O 2022. Learn more

Leistungsüberwachungsdaten nach BigQuery exportieren

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. Rufen Sie in der Firebase-Konsole die Seite „ Integrationen “ auf und klicken Sie dann in 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:

  • Firebase exportiert eine Kopie Ihrer vorhandenen Daten nach BigQuery.

    • Bei der erstmaligen Verknüpfung plant Firebase automatisch Ihre BigQuery-Tabellen, um Daten der letzten 7 Tage aufzufüllen, sodass Sie sofort mit dem Experimentieren beginnen können. Warten Sie einige Stunden, bis die ersten Daten in BigQuery verfügbar sind.

    • Sie können Datenabgleiche auch manuell für die letzten 30 Tage planen .

  • 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 Exportvorgänge beginnen um 4:00 Uhr pazifischer Zeit und enden normalerweise in 24 Stunden.

  • Standardmäßig sind alle Apps in Ihrem Projekt mit BigQuery verknüpft und 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 ist DURATION_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 ist TRACE_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 ist SCREEN_TRACE
    • event_name ist das Präfix _st_ plus der tatsächliche Bildschirmname
  • Netzwerkanforderung – Ablaufverfolgungen über die Lebensdauer einer Netzwerkanforderung (HTTP-Netzwerkanforderungsablaufverfolgungen)

    • 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 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“)
  • Für Android — VersionName
  • Für iOS — CFBundleShortVersionString
app_build_version Schnur Build-Version der Anwendung (z. B. „1523456“)
  • Für Android — VersionCode
  • Für iOS — CFBundleVersion
OS Version Schnur Betriebssystemversion des Clientgeräts
  • Für Android – Android-API-Ebene (z. B. „26“)
  • Für iOS — iOS-Version (z. B. „11.4“)
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:
  • DURATION_TRACE – Traces, 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 umfasst
  • SCREEN_TRACE — Ablaufverfolgungen, die sich über die Lebensdauer eines Bildschirms erstrecken (Bildschirmdarstellungsablaufverfolgungen)
  • TRACE_METRIC – benutzerdefinierte Metriken, die mit vom Entwickler instrumentierten benutzerdefinierten Codeablaufverfolgungen verknüpft sind
  • NETWORK_REQUEST — Ablaufverfolgungen über die Lebensdauer einer Netzwerkanforderung (HTTP-Netzwerkanforderungsablaufverfolgungen)
Veranstaltungsname Schnur Name der Veranstaltung
  • Für DURATION_TRACE — Ablaufverfolgungsname
  • Für TRACE_METRIC — Name der benutzerdefinierten Metrik
  • Für SCREEN_TRACE_st_ gefolgt vom Trace-Namen
  • Für NETWORK_REQUEST — URL-Muster für Netzwerkanfragen
parent_trace_name Schnur Name der übergeordneten Ablaufverfolgung, die die Ablaufverfolgungsmetrik trägt
Nur vorhanden für TRACE_METRIC
trace_info AUFZEICHNUNG Nur vorhanden für DURATION_TRACE , SCREEN_TRACE und TRACE_METRIC
trace_info.duration_us int64
  • Für DURATION_TRACE und SCREEN_TRACE — Zeitdauer ("Dauer") vom Beginn 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 AUFZEICHNUNG 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 AUFZEICHNUNG Nur vorhanden für TRACE_METRIC
trace_info.metric_info.metric_value int64 Wert der Ablaufverfolgungsmetrik
Netzwerk information AUFZEICHNUNG 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 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 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:

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 .