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 de 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 carte BigQuery .

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

    Lorsque vous activez l'exportation BigQuery pour la surveillance des performances, les événements suivants se produisent :

    • 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 l’ensemble de données créé, l’emplacement ne peut pas être modifié, mais vous pouvez copier l’ensemble de données vers un autre emplacement ou déplacer (recréer) manuellement l’ensemble 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 liées à BigQuery. Toutes les applications que vous ajoutez ultérieurement au projet sont automatiquement liées à BigQuery. Vous pouvez gérer quelles applications 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 performances capturés. Chaque ligne du tableau correspond à un événement de performance unique qui peut être l'un des éléments 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 identique au nom de la trace
  • Métrique de trace : 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 trace qui contient cette métrique
  • Trace d'écran : traces couvrant toute 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 d'écran réel
  • Requête réseau : traces couvrant toute 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 la requête réseau

Chaque événement de performance 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 l'époque à laquelle l'événement a démarré sur l'appareil client (démarrage de la trace, démarrage du réseau, etc.)
app_display_version chaîne Version d'affichage 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
version_os 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 Transporteur de l'appareil client
type_radio chaîne Type de radio active au moment où l'événement a eu lieu (par exemple, "WIFI")
attributs_personnalisés TABLEAU<ENREGISTREMENT> Tous les attributs personnalisés attaché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 toute 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 toute 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 métrique personnalisé
  • Pour SCREEN_TRACE_st_ suivi du nom de la trace
  • Pour NETWORK_REQUEST : modèle d'URL de demande de réseau
nom_trace_parent chaîne Nom de la trace parent qui transporte la métrique de trace
Présent uniquement pour TRACE_METRIC
trace_info ENREGISTRER Présent uniquement 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 Présent uniquement pour SCREEN_TRACE
trace_info.screen_info.slow_frame_ratio flotteur64 Rapport d'images lentes pour cette trace d'écran, compris 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 à être rendues)
trace_info.screen_info.frozen_frame_ratio flotteur64 Taux d'images figées pour cette trace d'écran, compris 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 à être rendues)
trace_info.metric_info ENREGISTRER Présent uniquement pour TRACE_METRIC
trace_info.metric_info.metric_value int64 Valeur de la métrique de trace
Infos réseau ENREGISTRER Présent uniquement pour NETWORK_REQUEST
network_info.response_code int64 Code de réponse HTTP pour la réponse réseau (par exemple, 200, 404)
network_info.response_mime_type chaîne Type MIME de la réponse réseau (par exemple, "text/html")
network_info.request_http_method chaîne Méthode HTTP de la requête réseau (par exemple, "GET" ou "POST")
network_info.request_payload_bytes int64 Taille de la charge utile de la requête réseau
Unité : octet
network_info.response_payload_bytes int64 Taille de la charge utile de réponse du réseau
Unité : octet
network_info.request_completed_time_us int64 Microsecondes après event_timestamp lorsque l'envoi de la demande réseau est terminé
Unité : microseconde
network_info.response_initiated_time_us int64 Microsecondes après event_timestamp lorsque la réponse réseau est initiée
Unité : microseconde
network_info.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 ratio d'images gelées dans diverses conditions

Par exemple, vous pouvez vérifier le taux d'images figées ainsi que 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;

Calculer le taux de réussite du cache 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 (un TRACE_METRIC ) nommée cache-hit qui est définie sur 1 si le cache est atteint et 0 si le cache manque.

Par exemple, vous pouvez calculer le taux de réussite du cache pour le chargement de 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érifiez 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

  • Soumission d'une tâche d'extraction via l'API ou les bibliothèques clientes.

Tarifs

L'exportation de données à partir de Performance Monitoring est gratuite et BigQuery propose de généreuses limites d'utilisation gratuites. Pour des informations détaillées, reportez-vous aux tarifs BigQuery ou au bac à sable BigQuery .