Catch up on highlights from Firebase at Google I/O 2023. Learn more

Exporter les données de surveillance des performances vers BigQuery

Vous pouvez exporter les données de surveillance des performances des applications Apple et Android vers BigQuery pour une analyse plus approfondie. 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. Accédez à la page Intégrations dans la console Firebase, puis cliquez sur Lien dans la fiche BigQuery .

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

    Lorsque vous activez l'exportation BigQuery pour la surveillance des performances, voici ce qui se produit :

    • Firebase exporte une copie de vos données existantes vers BigQuery. La propagation initiale des données à exporter peut prendre jusqu'à 48 heures.

    • Une fois le jeu de données créé, l'emplacement ne peut pas être modifié, mais vous pouvez copier le jeu de données vers un autre emplacement ou déplacer (recréer) manuellement le jeu de données vers un autre emplacement. Pour en savoir plus, consultez Modifier l'emplacement du jeu de données .

    • Firebase configure des synchronisations régulières de vos données de votre projet Firebase vers BigQuery. Ces opérations d'exportation quotidiennes se terminent généralement 24 heures après leur planification.

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

Pour désactiver l'exportation BigQuery, dissociez 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 de durée - traces qui collectent, par défaut, la métrique de "durée", qui inclut le démarrage de l'application, l'application en premier plan et l'application en arrière-plan, ainsi que toutes les traces de code personnalisé instrumentées par le développeur

    • event_type est DURATION_TRACE
    • event_name est le même que le nom de la trace
  • Métrique de suivi — métriques personnalisées associées aux traces de code personnalisées instrumentées par le développeur

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

    • event_type est SCREEN_TRACE
    • event_name est le préfixe _st_ plus le nom réel de l'écran
  • Requête réseau — traces couvrant la durée de vie d'une requête réseau (traces de requête réseau HTTP)

    • event_type est NETWORK_REQUEST
    • event_name est le modèle catégorisé 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 :

  • Les traces de durée, les métriques de trace et les traces d'écran contiennent trace_info
  • Les métriques de trace contiennent trace_info.metric_info
  • Les traces d'écran contiennent trace_info.screen_info
  • Les traces réseau contiennent network_info

Schéma de données détaillé

Nom de domaine Taper 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 Afficher la version de l'application (par exemple, "4.1.7")
  • Pour Android — VersionName
  • Pour iOS — CFBundleShortVersionString
app_build_version chaîne Version de build de l'application (par exemple, "1523456")
  • Pour Android — VersionCode
  • Pour iOS — CFBundleVersion
os_version chaîne 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 Nom de l'appareil client (par exemple, "Google Pixel")
pays chaîne 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 Opérateur de l'appareil client
radio_type chaîne 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 Clé de l'attribut personnalisé
custom_attributes.value chaîne Valeur de l'attribut personnalisé
type d'événement chaîne Type d'événement ; valeurs possibles:
  • DURATION_TRACE - traces qui collectent, par défaut, la métrique de "durée", qui inclut le démarrage de l'application, l'application en premier plan et l'application en arrière-plan, ainsi que toutes les traces de code personnalisé instrumentées par le développeur
  • SCREEN_TRACE - traces couvrant la durée de vie d'un écran (traces de rendu d'écran)
  • TRACE_METRIC — métriques personnalisées associées aux traces de code personnalisées instrumentées par le développeur
  • NETWORK_REQUEST - traces couvrant la durée de vie d'une requête réseau (traces de requête réseau HTTP)
Nom de l'événement chaîne Nom de l'événement
  • Pour DURATION_TRACE — nom de la trace
  • Pour TRACE_METRIC — nom de la métrique personnalisée
  • Pour SCREEN_TRACE_st_ suivi du nom de la trace
  • Pour NETWORK_REQUEST - modèle d'URL de demande réseau
parent_trace_name chaîne Nom de la trace parent qui porte la métrique de trace
Uniquement présent pour TRACE_METRIC
info_trace ENREGISTRER Uniquement présent pour DURATION_TRACE , SCREEN_TRACE et TRACE_METRIC
trace_info.duration_us int64
  • Pour DURATION_TRACE et SCREEN_TRACE — Durée ("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 parent
Unité : microseconde
trace_info.screen_info ENREGISTRER Uniquement présent 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 ENREGISTRER Uniquement présent pour TRACE_METRIC
trace_info.metric_info.metric_value int64 Valeur de la métrique de trace
Infos réseau ENREGISTRER Uniquement présent 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 Type MIME de la réponse réseau (par exemple, "text/html")
info_réseau.request_http_method chaîne 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 l'envoi de la requête réseau est terminé
Unité : microseconde
info_réseau.response_initiated_time_us int64 Microsecondes après event_timestamp lorsque la réponse du réseau est initié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 avez instrumenté une trace de code personnalisée pour le chargement à partir du disque avec un attribut personnalisé nommé file-extension et une métrique personnalisée (une TRACE_METRIC ) nommée cache-hit qui est définie sur 1 si le cache est réussi et 0 si le cache est manqué.

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

  • Exécution de la commande CLI bq extract

  • Envoi d'une tâche d'extraction 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 la tarification BigQuery ou le bac à sable BigQuery .