Daten aus der Leistungsüberwachung nach BigQuery exportieren

Du kannst Performance Monitoring-Daten aus Apple- und Android-Apps exportieren in Unter BigQuery Analyse. Mit BigQuery können Sie die Daten mithilfe von BigQuery, exportieren Sie sie zu einem anderen Cloud-Anbieter und verwenden Sie sogar Daten für Ihre benutzerdefinierten ML-Modelle.

BigQuery-Export aktivieren

  1. Gehen Sie zur Integrationen Seite in der Firebase-Konsole auf und klicken Sie dann in der BigQuery-Konsole auf Verknüpfen .

  2. Folgen Sie der Anleitung auf dem Bildschirm, um BigQuery zu aktivieren.

    Wenn Sie den Export von BigQuery für Performance Monitoring aktivieren, geschieht Folgendes: tritt auf:

    • Firebase exportiert eine Kopie Ihrer vorhandenen Daten nach BigQuery Die Erstübertragung der Daten für den Export kann bis zu 48 Stunden dauern.

      • Sie können Daten-Backfill manuell planen bis zu den letzten 30 Tagen oder bis zum aktuellsten Datum, wenn Sie BigQuery aktiviert haben Export (je nachdem, was aktuell ist).
    • Nachdem das Dataset erstellt wurde, kann der Speicherort nicht mehr geändert werden. Sie können das Dataset aber an einen anderen Speicherort kopieren oder es manuell verschieben, d. h. an einem anderen Speicherort neu erstellen. Weitere Informationen Weitere Informationen finden Sie unter Dataset-Speicherort ändern.

    • Firebase richtet regelmäßige Synchronisierungen der Daten aus Ihrem Firebase-Projekt mit BigQuery Diese täglichen Exportvorgänge sind in der Regel innerhalb von 24 Stunden abgeschlossen nachdem sie geplant wurden.

    • Standardmäßig sind alle Apps in Ihrem Projekt mit BigQuery verknüpft. Beliebig Apps, die Sie dem Projekt später hinzufügen, werden automatisch mit BigQuery Sie können festlegen, welche Apps Daten senden.

Wenn Sie den BigQuery-Export deaktivieren möchten, heben Sie die Verknüpfung Ihres Projekts in der Firebase-Konsole auf.

Welche Daten werden nach BigQuery exportiert?

Für jede Anwendung im Projekt wird beim Export eine Tabelle erstellt, die alle Performance-Ereignisse erfasst. Jede Zeile in der Tabelle steht für ein einzelnes Leistungsereignis Folgende Werte sind möglich:

  • Dauer-Trace: Traces, die standardmäßig den Messwert der „Dauer“, die App-Start, App-Vordergrund und App-Hintergrund sowie alle vom Entwickler instrumentierten benutzerdefinierten Code-Traces

    • event_type ist DURATION_TRACE
    • event_name ist mit dem Trace-Namen identisch.
  • Trace-Messwert: Benutzerdefinierte Messwerte, die mit von Entwicklern instrumentierten benutzerdefinierten Code-Traces verknüpft sind

    • event_type ist TRACE_METRIC
    • event_name ist der Name des Messwerts.
    • parent_trace_name ist der Trace-Name, der diesen Messwert enthält.
  • Bildschirm-Trace – Traces über die Lebensdauer eines Bildschirms (Bildschirm-Rendering) Traces)

    • event_type ist SCREEN_TRACE
    • event_name ist das Präfix _st_ gefolgt vom tatsächlichen Bildschirmnamen.
  • Netzwerkanfrage – Traces, die die Lebensdauer einer Netzwerkanfrage umfassen (HTTP-Netzwerkanfrage-Traces)

    • event_type ist NETWORK_REQUEST
    • event_name ist das kategorisierte Muster der Netzwerkanfrage-URL.

Jedes Performance-Ereignis enthält Attribute des Ereignisses (wie Land und Netzbetreiber des Clientgeräts) sowie ereignisspezifische Informationen:

  • Dauer-Traces, Trace-Messwerte und Bildschirm-Traces enthalten trace_info
  • Trace-Messwerte enthalten trace_info.metric_info
  • Bildschirm-Traces enthalten trace_info.screen_info
  • Netzwerk-Traces enthalten network_info

Detailliertes Datenschema

Feldname Typ Beschreibung
event_timestamp timestamp Zeitstempel seit Epoche, als das Ereignis auf dem Clientgerät gestartet wurde (Trace-Start, Netzwerkstart usw.)
App-Displayversion String Version der Anwendung anzeigen (z. B. „4.1.7“)
  • Android: VersionName
  • Für iOS: CFBundleShortVersionString
App-Build-Version String Build-Version der Anwendung (z. B. „1523456“)
  • Für Android: VersionCode
  • Für iOS: CFBundleVersion
os_version String Betriebssystemversion des Clientgeräts
  • Für Android: Android-API-Level (z. B. „26“)
  • Für iOS: iOS-Version (z. B. „11.4“)
device_name String Name des Clientgeräts, z. B. „Google Pixel“
country String Der zweistellige Ländercode des Landes, aus dem das Ereignis stammt stattfand (z. B. „US“ oder „ZZ“ für unbekanntes Land)
Transportunternehmen String Mobilfunkanbieter des Clientgeräts
Radiotyp String Aktiver Funktyp, als das Ereignis eingetreten ist (z. B. „WLAN“)
Benutzerdefinierte Attribute ARRAY<DATENSATZ> Alle benutzerdefinierten Attribute, die diesem Ereignis zugeordnet sind
custom_attributes.key String Schlüssel des benutzerdefinierten Attributs
custom_attributes.value [Benutzerdefinierter_Attribut.Wert] String Wert des benutzerdefinierten Attributs
Ereignistyp String Art des Ereignisses mögliche Werte:
  • DURATION_TRACE: Traces, für die standardmäßig der Messwert „Dauer“ erfasst wird. Dazu gehören App-Start, App im Vordergrund und App im Hintergrund sowie alle vom Entwickler instrumentierten benutzerdefinierten Code-Traces.
  • SCREEN_TRACE – Traces, die die gesamte Lebensdauer eines Bildschirms umfassen (Bildschirm-Rendering-Traces)
  • TRACE_METRIC: benutzerdefinierte Messwerte, die die mit entwicklerinstrumentierten benutzerdefinierten Code-Traces verknüpft sind
  • NETWORK_REQUEST – Traces, die die gesamte Lebensdauer einer Netzwerkanfrage umfassen (HTTP-Netzwerkanfrage-Traces)
event_name String Name des Ereignisses
  • Für DURATION_TRACE – Tracename
  • Für TRACE_METRIC: Name des benutzerdefinierten Messwerts
  • Für SCREEN_TRACE_st_ gefolgt vom Trace-Namen
  • Für NETWORK_REQUEST – Netzwerkanfrage-URL Muster
Übergeordneter_Trace-Name String Name des übergeordneten Tracings, das den Trace-Messwert enthält
Nur für TRACE_METRIC vorhanden
Trace-Info RECORD Nur vorhanden für DURATION_TRACE, SCREEN_TRACE und TRACE_METRIC
Trace_info.duration_us int64
  • Für DURATION_TRACE und SCREEN_TRACE – Die Dauer ("duration") vom Anfang bis zum Ende der Trace
  • Für TRACE_METRIC – Dauer („duration“) vom Anfang bis zum Ende des übergeordneten Trace,
Einheit: Mikrosekunde
Trace_info.screen_info RECORD Nur für SCREEN_TRACE vorhanden
Trace_info.screen_info.slow_frame_ratio Gleitkommazahl64 Verhältnis der langsamen Frames für diesen Bildschirm-Trace, zwischen 0 und 1 Ein Wert von 0,05 bedeutet beispielsweise, dass 5% der Frames für diesen Bildschirm für das Rendering der Instanz mehr als 16 ms benötigt)
Trace_info.screen_info.frozen_frame_ratio float64 Verhältnis von eingefrorenen Frames für diesen Bildschirm-Trace (zwischen 0 und 1) (Beispiel: Ein Wert von 0, 05 bedeutet 5% der Frames für diesen Bildschirm). zum Rendern der Instanz mehr als 700 ms benötigt)
trace_info.metric_info RECORD Nur für TRACE_METRIC vorhanden
Trace_info.metric_info.metric_value int64 Wert des Trace-Messwerts
network_info RECORD 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 (Netzwerkinfo.response_mime_type) String MIME-Typ der Netzwerkantwort (z. B. „text/html“)
network_info.request_http_method String HTTP-Methode der Netzwerkanfrage (z. B. „GET“ oder „POST“)
netzwerk_info.request_payload_bytes int64 Größe der Nutzlast der Netzwerkanfrage
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 bei Netzwerkanfrage Senden abgeschlossen
Einheit: Mikrosekunde
network_info.response_initiated_time_us int64 Mikrosekunden nach event_timestamp, wenn die Netzwerkantwort gestartet wird
Einheit: Mikrosekunde
network_info.response_completed_time_us int64 Mikrosekunden nach event_timestamp bei Netzwerkantwort ist abgeschlossen
Einheit: Mikrosekunde

Was können Sie mit den exportierten Daten tun?

In den folgenden Abschnitten finden Sie Beispiele für Abfragen, die Sie in BigQuery gegen Ihre exportierten Performance Monitoring-Daten.

Aufschlüsselung der durchschnittlichen Latenz beim Starten von Apps nach Land ansehen

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;

Verhältnis von eingefrorenen Frames unter verschiedenen Bedingungen prüfen

Sie können beispielsweise das Verhältnis der eingefrorenen Frames zur Menge der wie viel Zeit Nutzer auf den einzelnen Bildschirmen Ihrer App verbringen, wenn sie verschiedene Funkschnittstellen verwenden, z. B. WLAN, 4G usw.).

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;

Cache-Trefferquote zum Laden bestimmter Dateitypen von der Festplatte berechnen

Bei dieser Analyse wird davon ausgegangen, dass Sie einen benutzerdefinierten Code-Trace zum Laden aus Laufwerk mit dem benutzerdefinierten Attribut file-extension und einem benutzerdefinierten Messwert (ein TRACE_METRIC) mit dem Namen cache-hit. Dieser Wert ist bei Cache-Treffer auf 1 gesetzt und bei Cache-Treffern auf 0. Cache-Fehlers.

Beispielsweise können Sie die Cache-Trefferquote für das Laden von PNG-Dateien berechnen. Von Datenträger:

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);

Tageszeit ermitteln, zu der Nutzer Netzwerkanfragen senden

Sie können z. B. sehen, zu welcher Tageszeit Nutzer aus den USA Netzwerkanfragen von Ihrer App senden:

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;

Performance Monitoring-Daten überallhin mitnehmen

Manchmal möchten Sie auf Ihre Performance Monitoring-Daten serverseitig zugreifen oder sie per Push-Funktion übertragen eine andere Drittanbieterlösung. Der Export von Daten ist derzeit kostenlos.

Sie haben folgende Möglichkeiten, Ihre Daten zu exportieren:

  • BigQuery-Web-UI verwenden

  • Befehl bq extract in der Befehlszeile ausführen

  • Einreichen eines Extrahierungsjob über die API oder die Clientbibliotheken.

Preise

Für den Export von Daten aus Performance Monitoring und BigQuery fallen keine Kosten an bietet großzügige kostenlose Nutzungslimits. Detaillierte Informationen finden Sie unter BigQuery-Preise oder die BigQuery-Sandbox.