Exporter les données de surveillance des performances vers BigQuery

Vous pouvez exporter des données Performance Monitoring depuis les applications Apple et Android vers BigQuery pour plus l'analyse. BigQuery vous permet d'analyser les données à l'aide de SQL BigQuery, de les exporter vers un autre fournisseur de services cloud et même de les utiliser pour vos modèles de ML personnalisés.

Activer l'exportation BigQuery

  1. Accédez au Intégrations de la console Firebase, puis cliquez sur Associer dans la section BigQuery .

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

    Lorsque vous activez l'exportation BigQuery pour Performance Monitoring, les éléments suivants 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 l'ensemble de données créé, l'emplacement ne peut pas être modifié, mais vous pouvez copier l'ensemble de données à un autre emplacement ou déplacer (recréer) manuellement l'ensemble de données à un autre emplacement. Pour en savoir plus, consultez la page Modifier l'emplacement d'un ensemble de données.

    • Firebase synchronise régulièrement les données de votre projet Firebase BigQuery Ces opérations d'exportation quotidiennes se terminent généralement en 24 heures après leur planification.

    • Par défaut, toutes les applications de votre projet sont associées à BigQuery. N'importe quelle valeur les applications que vous ajoutez par la suite au projet sont automatiquement associées à BigQuery Vous pouvez gérer les applications qui envoient des données.

Pour désactiver l'exportation BigQuery : dissocier 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 est un événement de performances unique Il peut s'agir de l'un des éléments suivants:

  • Trace de durée : traces qui collectent, par défaut, la métrique de "Durée", ce qui inclut le démarrage de l'application, son affichage au premier plan et en arrière-plan et les traces de code personnalisées instrumentées par le développeur

    • event_type correspond à DURATION_TRACE.
    • event_name est identique au nom de la trace.
  • Métrique de trace : métriques personnalisées associées à Traces de code personnalisés instrumentées par le développeur

    • event_type correspond à 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 (rendu de l'écran) traces)

    • event_type correspond à SCREEN_TRACE.
    • event_name correspond au préfixe _st_ suivi du nom d'écran réel.
  • 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 correspond à NETWORK_REQUEST.
    • event_name est le format catégorisé de l'URL de la requête réseau.

Chaque événement de performance contient des attributs de l'événement (comme le pays et opérateur de l'appareil client), ainsi que des informations spécifiques aux événements:

  • Les traces de durée, les métriques de trace et les traces de l'é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 du champ Type Description
event_timestamp timestamp Code temporel depuis l'epoch du début de l'événement sur l'appareil client (début de la trace, début du réseau, etc.)
version_display_app chaîne Afficher la version de l'application (par exemple, "4.1.7")
  • Pour Android : VersionName
  • Pour iOS : CFBundleShortVersionString
version_de_build_app chaîne Version de l'application (par exemple, "1523456")
  • Pour Android : VersionCode
  • Pour iOS : CFBundleVersion
os_version chaîne Version de l'OS de l'appareil client
  • Pour Android : niveau d'API Android (par exemple, "26")
  • Pour iOS : version d'iOS (par exemple, "11.4")
device_name (nom de l'appareil) chaîne Nom de l'appareil client (par exemple, "Google Pixel")
country chaîne Code pays à deux lettres du pays dans lequel l'événement est organisé (par exemple, "US" ou "ZZ" pour un pays inconnu)
transporteur chaîne Opérateur de l'appareil client
type de radio chaîne Type de radio actif lorsque l'événement s'est produit (par exemple, "WIFI")
custom_attributes ARRAY<RECORD> Tous les attributs personnalisés associés à cet événement
clé_attributs_personnalisés chaîne Clé de l'attribut personnalisé
custom_attributes.value chaîne Valeur de l'attribut personnalisé
event_type chaîne Type d'événement valeurs possibles:
  • DURATION_TRACE : traces qui collectent, par la métrique "durée", qui inclut le démarrage de l'application, au premier plan et en arrière-plan, ainsi que Traces de code personnalisés instrumentées par le développeur
  • SCREEN_TRACE : traces couvrant la durée de vie de 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)
event_name 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 par le nom de la trace
  • Pour NETWORK_REQUEST : format d'URL de la requête réseau
nom_trace_parent chaîne Nom de la trace parente contenant la métrique de trace
Uniquement présente pour TRACE_METRIC
trace_info ENREGISTREMENT Uniquement présente pour DURATION_TRACE, SCREEN_TRACE et TRACE_METRIC
trace_info.duration_us int64
  • Pour DURATION_TRACE et SCREEN_TRACE — Durée du début à la fin ("durée") la trace
  • Pour TRACE_METRIC : durée ("duration") du début à la fin de la trace parente
Unité : microseconde
trace_info.screen_info ENREGISTREMENT Uniquement présente pour SCREEN_TRACE
trace_info.screen_info.slow_frame_ratio float64 Ratio d'images affichées trop lentement pour cette trace d'écran, compris entre 0 et 1 (Par exemple, une valeur de 0,05 signifie que 5% des images de cet écran l'instance a mis plus de 16 ms à s'afficher)
trace_info.screen_info.frozen_frame_ratio float64 Ratio de cadres figés pour cette trace d'écran, compris entre 0 et 1 (Par exemple, une valeur de 0,05 signifie que 5% des images de cet écran l'instance a mis plus de 700 ms à s'afficher)
trace_info.metric_info ENREGISTREMENT Uniquement présente pour TRACE_METRIC
trace_info.metric_info.metric_value int64 Valeur de la métrique de trace
informations_réseau ENREGISTREMENT Uniquement présente pour NETWORK_REQUEST
network_info.response_code int64 Code de réponse HTTP pour la réponse du réseau (par exemple, 200, 404).
type_mime_réponse chaîne Type MIME de la réponse du 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 réseau
Unité: octet
network_info.request_completed_time_us int64 Microsecondes après event_timestamp lorsque la requête réseau envoi terminé
Unité: microseconde
network_info.response_selected_time_us int64 Microsecondes après event_timestamp lorsque la réponse du réseau est lancé
Unité: microseconde
network_info.response_completed_time_us int64 Microsecondes après event_timestamp lorsque la réponse du réseau terminé
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 BigQuery par rapport à vos données Performance Monitoring exportées.

Afficher la répartition de la latence moyenne 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érifier le ratio de cadres figés par rapport à différentes conditions

Par exemple, vous pouvez vérifier le ratio des images figées ainsi que le temps que les utilisateurs passent sur chaque écran de votre application avec différents types de radio (Wi-Fi, 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;

Calcul du taux de succès de cache (hits) 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é cache-hit qui est défini sur 1 en cas de cache hit et sur 0 en cas de cache miss.

Par exemple, vous pouvez calculer le taux de succès de cache (hits) 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érifier l'heure de la journée à laquelle les utilisateurs envoient des requêtes réseau

Par exemple, vous pouvez vérifier à quelle heure de la journée les utilisateurs habitant aux États-Unis émettre des requêtes réseau à partir de 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 Performance Monitoring partout

Parfois, vous souhaitez accéder à vos données Performance Monitoring côté serveur ou les transférer vers une autre solution tierce. Actuellement, l'exportation des données est sans frais.

Vous pouvez exporter vos données de différentes manières:

Tarifs

L'exportation de données depuis Performance Monitoring et BigQuery est sans frais propose des limites d'utilisation généreuses et sans frais. Pour en savoir plus, consultez Tarifs de BigQuery ou le bac à sable BigQuery.