Leistungsüberwachungsdaten nach BigQuery exportieren

Sie können Performance - Monitoring - Daten von iOS exportieren und Android Apps in BigQuery für die weitere Analyse. Mit BigQuery können Sie die Daten mit BigQuery SQL analysieren, in einen anderen Cloud-Anbieter exportieren und die Daten sogar für Ihre benutzerdefinierten ML-Modelle verwenden.

BigQuery-Export aktivieren

  1. Gehen Sie auf die Integrations - Seite in der Konsole Firebase, klicken Sie dann auf Verknüpfung in der BigQuery - Karte.

  2. Befolgen Sie die Anweisungen auf dem Bildschirm, um BigQuery zu aktivieren.

Wenn Sie Ihr Projekt mit BiqQuery verknüpfen:

  • Firebase exportiert eine Kopie Ihrer vorhandenen Daten zu BigQuery.

    • Bei der ersten Verknüpfung plant Firebase automatisch, dass Ihre BigQuery-Tabellen Daten der letzten sieben Tage auffüllen, sodass Sie sofort mit dem Experimentieren beginnen können. Es kann einige Stunden dauern, bis die ersten Daten in BigQuery verfügbar sind.

    • Sie können auch manuell Aufschüttungen Daten Zeitplan für bis zu den letzten 30 Tagen.

  • Firebase richtet tägliche Synchronisierungen Ihrer Daten aus Ihrem Firebase-Projekt mit BigQuery ein.

  • 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 festlegen , welche Anwendungen Daten senden .

BigQuery Export, zu deaktivieren , die Verknüpfung zwischen Ihrem Projekt in der Konsole Firebase.

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 Spur - Spuren, die standardmäßig, die Metrik der „Dauer“ sammeln, die App Start sind, app-in-Vordergrund, und App-in-Hintergrund, sowie alle Entwickler-instrumentierten benutzerdefinierten Code Spuren

    • event_type ist DURATION_TRACE
    • event_name ist das gleiche wie die Spur Namen
  • Trace metrisch - individuelle Metriken , die mit dem Entwickler-instrumentierten benutzerdefinierten Code Spuren zugeordnet sind ,

    • event_type ist TRACE_METRIC
    • event_name ist der Name der Metrik
    • parent_trace_name ist die Spur Name, der diese Metrik enthält
  • Bildschirm Spur - Spuren überspannen die Lebensdauer eines Bildschirms (Screen Rendering - Spuren)

    • event_type ist SCREEN_TRACE
    • event_name heißt Präfix _st_ plus der tatsächlichen Bildschirmnamen
  • Netzwerkanfrage - Spuren überspannen die Lebensdauer eines Netzwerks Anfrage (HTTP Netzwerk Anfrage Spuren)

    • event_type ist NETWORK_REQUEST
    • event_name ist die kategorisierten Muster des Netzes Anforderungs - URL

Jedes Leistungsereignis enthält Attribute des Ereignisses (z. B. Land und Mobilfunkanbieter des Client-Geräts) sowie ereignisspezifische Informationen:

  • Dauer Spuren, Spuren Metriken und Bildschirm Spuren enthalten trace_info
  • Trace - Metriken enthalten trace_info.metric_info
  • Bildschirm Spuren enthalten trace_info.screen_info
  • Netzwerk - Spuren 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, Netzwerkstart usw.)
app_display_version Schnur Anzeigeversion der Anwendung (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 (zum Beispiel "26")
  • Für iOS – iOS-Version (zum Beispiel "11.4")
Gerätename Schnur Name des Clientgeräts (z. B. "Google Pixel")
Land Schnur Zweistelliger Ländercode des Landes, aus dem die Veranstaltung 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<RECORD> Alle benutzerdefinierten Attribute, die mit diesem Ereignis verknüpft sind
custom_attributes.key Schnur Schlüssel des benutzerdefinierten Attributs
custom_attributes.value Schnur Wert des benutzerdefinierten Attributs
event_typ Schnur Art der Veranstaltung; mögliche Werte:
  • DURATION_TRACE - Spuren, die standardmäßig, die Metrik der „Dauer“, sammeln die App Start ist, app-in-Vordergrund, und App-in-Hintergrund, sowie alle Entwickler-instrumentierten Spuren benutzerdefinierten Code
  • SCREEN_TRACE - Spuren überspannen die Lebensdauer eines Bildschirms (Screen Rendering - Spuren)
  • TRACE_METRIC - individuelle Metriken , die mit dem Entwickler-instrumentierten benutzerdefinierten Code Spuren zugeordnet sind ,
  • NETWORK_REQUEST - Spuren überspannt die Lebensdauer eines Netzwerks Anfrage (HTTP Netzwerk Anfrage Spuren)
Veranstaltungsname Schnur Name der Veranstaltung
  • Für DURATION_TRACE - Trace - Namen
  • Für TRACE_METRIC - benutzerdefinierte Metriknamen
  • Für SCREEN_TRACE - _st_ gefolgt von der Spur Namen
  • Für NETWORK_REQUEST - Netzwerk URL - Muster
parent_trace_name Schnur Name des übergeordneten Trace, der die Trace-Metrik 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
  • Für DURATION_TRACE und SCREEN_TRACE - Länge der Zeit ( „Dauer“) vom Anfang bis zum Ende der Spur
  • Für TRACE_METRIC - Zeitdauer ( „Dauer“) von Anfang an bis zum Ende der Mutter Spur
Einheit: Mikrosekunde
trace_info.screen_info AUFZEICHNEN Nur vorhanden für SCREEN_TRACE
trace_info.screen_info.slow_frame_ratio float64 Verhältnis der 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 mehr als 16 ms zum Rendern benötigt haben)
trace_info.screen_info.frozen_frame_ratio float64 Verhältnis der eingefrorenen Frames für diese Bildschirmspur zwischen 0 und 1 (ein Wert von 0,05 bedeutet beispielsweise, dass 5 % der Frames für diese Bildschirminstanz mehr als 700 ms zum Rendern benötigt haben)
trace_info.metric_info AUFZEICHNEN Nur vorhanden für TRACE_METRIC
trace_info.metric_info.metric_value int64 Wert der Trace-Metrik
Netzwerk information AUFZEICHNEN Nur vorhanden für NETWORK_REQUEST
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 (zum Beispiel "GET" oder "POST")
network_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 wenn Anfrage Netzwerk zu senden abgeschlossen ist
Einheit: Mikrosekunde
network_info.response_initiated_time_us int64 Mikrosekunden nach event_timestamp wenn Netzwerkantwort ausgelöst wird
Einheit: Mikrosekunde
network_info.response_completed_time_us int64 Mikrosekunden nach event_timestamp , wenn das Netzwerk Reaktion 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.

Aufschlüsselung der durchschnittlichen App-Startlatenz nach Land anzeigen

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 der eingefrorenen Frames anhand verschiedener Bedingungen

Sie können beispielsweise das Verhältnis der eingefrorenen Frames zusammen mit der Zeit überprüfen, die Benutzer auf jedem Bildschirm Ihrer App verbringen, wenn sie verschiedene Radiotypen (WiFi, 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;

Cache-Trefferrate für das Laden bestimmter Dateitypen von der Festplatte berechnen

Diese Analyse geht davon aus, dass Sie einen benutzerdefinierten Code Trace für das Laden von der Festplatte mit einer benutzerdefinierten Attribute mit dem Namen instrumentierten file-extension und einer benutzerdefinierten Metrik (a TRACE_METRIC ) mit dem Namen cache-hit , der gesetzt ist 1 , wenn Cache - Treffer und 0 , wenn Cache - Miss.

Sie können beispielsweise 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 Nutzer 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 überall hin

Manchmal möchten Sie serverseitig auf Ihre Leistungsüberwachungsdaten zugreifen oder sie an eine andere Drittanbieterlösung übertragen. Für den Datenexport fallen derzeit keine Gebühren an.

Sie können Ihre Daten exportieren, indem Sie:

  • Verwenden der BigQuery-Web-UI

  • Das Ausführen des CLI - Befehl bq extract

  • Einreichung eines Extraktes Job über die API oder Client - Bibliotheken.

Preisgestaltung

Der Export von Daten aus der Leistungsüberwachung ist kostenlos und BigQuery bietet großzügige kostenlose Nutzungslimits. Ausführliche Informationen finden Sie in BigQuery Preise oder die BigQuery Sandbox .