Exporter les données de surveillance des performances vers BigQuery

Vous pouvez exporter les données de performance de surveillance d'Apple et les applications Android dans BigQuery pour une analyse ultérieure. BigQuery vous permet d'analyser les données à l'aide de BigQuery SQL, de les exporter vers un autre fournisseur cloud et même d'utiliser les données pour vos modèles ML personnalisés.

Activer l'exportation BigQuery

  1. Aller à la Intégrations page dans la console Firebase, puis cliquez sur le lien dans la carte BigQuery.

  2. Suivez les instructions à l'écran pour activer BigQuery.

Lorsque vous liez votre projet à BiqQuery :

  • Firebase exporte une copie de vos données existantes à BigQuery.

    • Lors de l'association initiale, Firebase planifie automatiquement vos tables BigQuery pour remplir les données des 7 derniers jours afin que vous puissiez commencer à expérimenter immédiatement. Attendez quelques heures pour que les données initiales soient disponibles dans BigQuery.

    • Vous pouvez également manuellement les données de calendrier de remblayage pour jusqu'à 30 derniers jours.

  • Firebase configure des synchronisations quotidiennes de vos données de votre projet Firebase vers BigQuery.

  • Par défaut, toutes les applications de votre projet sont liées à BigQuery et toutes les applications que vous ajoutez ultérieurement au projet sont automatiquement liées à BigQuery. Vous pouvez gérer des applications qui envoient des données .

Pour désactiver l' exportation BigQuery, unlink votre projet dans la console Firebase.

Quelles données sont exportées vers BigQuery ?

Pour chaque application du projet, l'exportation crée un tableau qui inclut tous les événements de performance capturés. Chaque ligne du tableau correspond à un événement de performance unique qui peut être l'un des suivants :

  • Trace Durée - des traces qui recueillent, par défaut, la mesure de la « durée », qui comprennent le démarrage de l' application, l' application en premier plan, et l' application en arrière - plan, ainsi que des traces de code personnalisé instrumenté développeur-

    • event_type est DURATION_TRACE
    • event_name est le même que le nom de la trace
  • Trace métrique - paramètres personnalisés qui sont associés à code personnalisé développeur instrumenté traces

    • event_type est TRACE_METRIC
    • event_name est le nom de la métrique
    • parent_trace_name est le nom de trace qui contient cette métrique
  • Trace d'écran - traces couvrant la durée de vie d'un écran (traces de rendu de l' écran)

    • event_type est SCREEN_TRACE
    • event_name est - préfixe _st_ plus le nom de l' écran réel
  • Demande de réseau - traces couvrant la durée de vie d'une demande de réseau (HTTP traces de demande de réseau)

    • event_type est NETWORK_REQUEST
    • event_name est le modèle classé de l'URL de requête réseau

Chaque événement de performances contient des attributs de l'événement (tels que le pays et l'opérateur de l'appareil client), ainsi que des informations spécifiques à l'événement :

  • Traces Durée, des mesures de trace, et des traces d'écran contiennent trace_info
  • Trace métriques contiennent trace_info.metric_info
  • Traces d'écran contiennent trace_info.screen_info
  • Traces réseau contiennent network_info

Schéma de données détaillé

Nom de domaine Taper La description
événement_horodatage horodatage Horodatage depuis Epoch lorsque l'événement a commencé sur l'appareil client (démarrage de la trace, démarrage du réseau, etc.)
app_display_version chaîne de caractères Afficher la version de l'application (par exemple, "4.1.7")
  • Pour Android - VersionName
  • Pour iOS - CFBundleShortVersionString
app_build_version chaîne de caractères Version de build de l'application (par exemple, "1523456")
  • Pour Android - VersionCode
  • Pour iOS - CFBundleVersion
os_version chaîne de caractères Version du système d'exploitation de l'appareil client
  • Pour Android — Niveau d'API Android (par exemple "26")
  • Pour iOS — version iOS (par exemple "11.4")
nom de l'appareil chaîne de caractères Nom de l'appareil client (par exemple, "Google Pixel")
pays chaîne de caractères Code de pays à deux lettres du pays à partir duquel l'événement a eu lieu (par exemple, "US" ou "ZZ" pour un pays inconnu)
transporteur chaîne de caractères Opérateur de l'appareil client
radio_type chaîne de caractères Type de radio actif au moment de l'événement (par exemple, "WIFI")
attributs_personnalisés TABLEAU<ENREGISTREMENT> Tous les attributs personnalisés associés à cet événement
custom_attributes.key chaîne de caractères Clé de l'attribut personnalisé
custom_attributes.value chaîne de caractères Valeur de l'attribut personnalisé
type d'événement chaîne de caractères Type d'événement ; valeurs possibles:
  • DURATION_TRACE - traces qui recueillent, par défaut, la mesure de la « durée », qui comprennent le démarrage de l' application, l' application en premier plan, et l' application en arrière - plan, ainsi que des traces de code personnalisé instrumenté développeur-
  • SCREEN_TRACE - traces couvrant la durée de vie d'un écran (traces de rendu de l' écran)
  • TRACE_METRIC - paramètres personnalisés qui sont associés à code personnalisé développeur instrumenté traces
  • NETWORK_REQUEST - traces couvrant la durée de vie d'une demande de réseau (HTTP traces de demande de réseau)
Nom de l'événement chaîne de caractères Nom de l'événement
  • Pour DURATION_TRACE - Nom de la trace
  • Pour TRACE_METRIC - nom métrique personnalisé
  • Pour SCREEN_TRACE - _st_ suivi du nom de trace
  • Pour NETWORK_REQUEST - demande réseau modèle d'URL
parent_trace_name chaîne de caractères Nom de la trace parent qui porte la métrique de trace
Seulement présents pour TRACE_METRIC
info_trace ENREGISTREMENT Uniquement présent pour DURATION_TRACE , SCREEN_TRACE et TRACE_METRIC
trace_info.duration_us int64
  • Pour DURATION_TRACE et SCREEN_TRACE - Durée ( la « durée ») du début à la fin de la trace
  • Pour TRACE_METRIC - durée ( « durée ») du début à la fin de la trace mère
Unité : microseconde
trace_info.screen_info ENREGISTREMENT Seulement présents pour SCREEN_TRACE
trace_info.screen_info.slow_frame_ratio float64 Rapport des images lentes pour cette trace d'écran, entre 0 et 1 (par exemple, une valeur de 0,05 signifie que 5 % des images de cette instance d'écran ont mis plus de 16 ms à s'afficher)
trace_info.screen_info.frozen_frame_ratio float64 Rapport des images gelées pour cette trace d'écran, entre 0 et 1 (par exemple, une valeur de 0,05 signifie que 5 % des images de cette instance d'écran ont mis plus de 700 ms à s'afficher)
info_trace.info_métrique ENREGISTREMENT Seulement présents pour TRACE_METRIC
trace_info.metric_info.metric_value int64 Valeur de la métrique de trace
Infos réseau ENREGISTREMENT Seulement présents pour NETWORK_REQUEST
info_réseau.code_réponse int64 Code de réponse HTTP pour la réponse réseau (par exemple, 200, 404)
info_réseau.response_mime_type chaîne de caractères Type MIME de la réponse réseau (par exemple, "text/html")
info_réseau.request_http_method chaîne de caractères Méthode HTTP de la requête réseau (par exemple, "GET" ou "POST")
info_réseau.request_payload_bytes int64 Taille de la charge utile de la requête réseau
Unité : octet
info_réseau.response_payload_bytes int64 Taille de la charge utile de réponse du réseau
Unité : octet
info_réseau.request_completed_time_us int64 Microsecondes après event_timestamp lorsque la demande du réseau d' envoi est complet
Unité : microseconde
info_réseau.response_initiated_time_us int64 Microsecondes après event_timestamp lorsque la réponse du réseau est lancée
Unité : microseconde
info_réseau.response_completed_time_us int64 Microsecondes après event_timestamp lorsque la réponse du réseau est terminée
Unité : microseconde

Que pouvez-vous faire avec les données exportées ?

Les sections suivantes proposent des exemples de requêtes que vous pouvez exécuter dans BigQuery sur vos données de surveillance des performances exportées.

Afficher la répartition moyenne de la latence de démarrage des applications par pays

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;

Vérifiez le rapport des images gelées par rapport à diverses conditions

Par exemple, vous pouvez vérifier le rapport entre les images gelées et le temps que les utilisateurs passent sur chaque écran de votre application lorsqu'ils utilisent différents types de radio (WiFi, 4G, etc.).

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;

Taux de réussite du cache de calcul pour le chargement de certains types de fichiers à partir du disque

Cette analyse suppose que vous instrumenté une trace de code personnalisé pour le chargement à partir du disque avec un attribut personnalisé appelé file-extension et une métrique personnalisée (un TRACE_METRIC ) nommé cache-hit qui est réglé sur 1 si dans le cache et 0 si défaut de cache.

Par exemple, vous pouvez calculer le taux d'accès au cache pour charger des fichiers PNG à partir du disque :

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

Vérifier l'heure de la journée à laquelle les utilisateurs émettent des requêtes réseau

Par exemple, vous pouvez vérifier à quelle heure de la journée les utilisateurs des États-Unis émettent des requêtes réseau depuis votre application :

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;

Emportez vos données de surveillance des performances partout

Parfois, vous souhaitez accéder à vos données de surveillance des performances côté serveur ou les transférer vers une autre solution tierce. Il n'y a actuellement aucun frais pour l'exportation de données.

Vous pouvez exporter vos données en :

  • Utiliser l'interface utilisateur Web de BigQuery

  • L' exécution de la commande CLI bq extract

  • Envoi d' un travail d'extrait via l'API ou les bibliothèques clientes.

Tarification

L'exportation de données à partir de Performance Monitoring est gratuite, et BigQuery fournit de généreuses limites d'utilisation sans frais. Pour plus d' informations, consultez les prix BigQuery ou le bac à sable BigQuery .