Présentation de la surveillance BigQuery

La surveillance BigQuery vous permet de suivre l'utilisation des ressources, l'exécution des jobs et l'état opérationnel de vos charges de travail afin d'identifier les goulots d'étranglement et de maintenir la fiabilité.

La surveillance et la journalisation sont essentielles pour exécuter des applications fiables dans le cloud. Les charges de travail BigQuery ne font pas exception, en particulier si vos charges de travail ont un volume élevé ou qu'elles sont critiques.

Les sources de surveillance varient en fonction de la fréquence d'échantillonnage et du niveau d'agrégation. Par exemple, les vues de schéma d'informations offrent souvent une plus grande précision que les métriques Cloud Monitoring. Par conséquent, les graphiques de métriques peuvent temporairement diverger des données du schéma d'informations jusqu'à ce que l'agrégation lisse les différences. Lorsque vous concevez une stratégie de surveillance, évaluez la latence, la précision et l'exactitude par rapport à vos exigences.

Métriques

Les métriques sont des valeurs numériques collectées à des intervalles réguliers et mises à disposition pour l'analyse. Elles vous permettent d'effectuer les opérations suivantes :

  • Créer des graphiques et des tableaux de bord
  • Déclencher des alertes pour les conditions ou les situations nécessitant une intervention humaine
  • Analyser l'historique des performances

Dans le cas de BigQuery, les métriques disponibles incluent le nombre de tâches en cours d'exécution, le nombre d'octets analysés lors d'une requête et la distribution des temps de requête. Les métriques d'une requête ne sont disponibles qu'une fois que celle-ci aboutit. Leur enregistrement peut prendre jusqu'à sept minutes. Les métriques des requêtes ayant échoué ne sont pas répertoriées. Pour obtenir la liste complète des métriques disponibles, y compris leurs taux d'échantillonnage, leur visibilité et leurs limites, consultez bigquery sous MétriquesGoogle Cloud .

Utilisez Cloud Monitoring pour afficher les métriques BigQuery, et créer des graphiques et des alertes. Chaque métrique possède un type de ressource (bigquery_dataset, bigquery_project ou global) ainsi qu'un ensemble de libellés. Vous pouvez regrouper ou filtrer chaque métrique à l'aide des libellés.

Par exemple, pour représenter graphiquement le nombre de requêtes interactives actives, utilisez l'instruction PromQL suivante, qui filtre par priority égal à interactive :

{"bigquery.googleapis.com/query/count", monitored_resource="global", priority="interactive"}

L'exemple suivant permet d'obtenir le nombre de tâches de chargement en cours de transfert, regroupées par intervalles de 10 minutes :

avg_over_time({"bigquery.googleapis.com/job/num_in_flight",
  monitored_resource="bigquery_project",
  job_type="load"
}[10m])

Pour en savoir plus, consultez la page Créer des graphiques et des alertes pour BigQuery.

Journaux

Les journaux sont des enregistrements textuels générés en réponse à des événements ou actions particuliers. BigQuery crée des entrées de journal pour des actions telles que la création ou la suppression d'une table, l'achat d'emplacements ou l'exécution d'une tâche de chargement. Pour en savoir plus sur la journalisation dans Google Cloud, consultez Cloud Logging.

Un journal est une collection d'entrées de journal en mode "append-only". Par exemple, vous pouvez écrire vos propres entrées de journal dans un journal nommé projects/PROJECT_ID/logs/my-test-log. De nombreux servicesGoogle Cloud , y compris BigQuery, créent un type de journal appelé journaux d'audit. Ces journaux enregistrent :

  • les activités d'administration, telles que la création ou la modification de ressources ;
  • les accès aux données, telles que la lecture de données fournies par l'utilisateur à partir d'une ressource ;
  • les événements système générés par les systèmes Google, plutôt que par des actions des utilisateurs.

Les journaux d'audit sont écrits dans un format JSON structuré. Le type de données de base pour les entrées de journalGoogle Cloud est la structure LogEntry. Cette structure contient le nom du journal, la ressource ayant généré l'entrée de journal, l'horodatage (UTC) et d'autres informations de base.

Les détails de l'événement consigné sont contenus dans un sous-champ appelé charge utile. Pour les journaux d'audit, le champ de charge utile est nommé protoPayload. La valeur de ce champ est une structure AuditLog, indiquée par la valeur du champ protoPayload.@type, qui est définie sur type.googleapis.com/google.cloud.audit.AuditLog.

Pour les opérations sur des ensembles de données, des tables et des jobs, BigQuery écrit des journaux d'audit dans deux formats différents, bien qu'ils partagent tous deux le type de base AuditLog.

Avec l'ancien format :

  • Le champ resource.type correspond à bigquery_resource.
  • Les détails de l'opération sont écrits dans le champ protoPayload.serviceData. La valeur de ce champ est une structure AuditData.

Au format le plus récent :

  • Le champ resource.type contient bigquery_project ou bigquery_dataset. La ressource bigquery_project contient des entrées de journal sur les tâches, tandis que la ressource bigquery_dataset dispose d'entrées de journal concernant le stockage.
  • Les détails de l'opération sont écrits dans le champ protoPayload.metadata. La valeur de ce champ est une structure BigQueryAuditMetadata.

Nous vous recommandons de consulter les journaux dans un format plus récent. Pour en savoir plus, consultez le guide de migration des journaux d'audit.

Voici un exemple d'entrée de journal illustrant une opération ayant échoué :

{
  "protoPayload": {
    "@type": "type.googleapis.com/google.cloud.audit.AuditLog",
    "status": {
      "code": 5,
      "message": "Not found: Dataset my-project:my-dataset was not found in location US"
    },
    "authenticationInfo": { ... },
    "requestMetadata":  { ... },
    "serviceName": "bigquery.googleapis.com",
    "methodName": "google.cloud.bigquery.v2.JobService.InsertJob",
    "metadata": {
  },
  "resource": {
    "type": "bigquery_project",
    "labels": { .. },
  },
  "severity": "ERROR",
  "logName": "projects/my-project/logs/cloudaudit.googleapis.com%2Fdata_access",
  ...
}

Pour les opérations sur BigQuery Reservations, le champ protoPayload est une structure AuditLog, et les champs protoPayload.request et protoPayload.response contiennent davantage d'informations. Vous pouvez voir les définitions des champs dans l'API BigQuery Reservations. Pour en savoir plus, consultez la page Surveiller BigQuery Reservations.

Vues de schéma d'informations BigQuery

Les vues de schéma d'informations sont une autre source d'insights dans BigQuery, que vous pouvez utiliser avec les métriques et les journaux.

Ces vues contiennent des métadonnées sur les tâches, les ensembles de données, les tables et d'autres entités BigQuery. Par exemple, vous pouvez obtenir des métadonnées en temps réel sur les tâches BigQuery exécutées sur une période donnée, puis regrouper ou filtrer les résultats par projet, utilisateur, tables référencées et d'autres dimensions.

Vous pouvez utiliser ces informations pour effectuer une analyse plus détaillée de vos charges de travail BigQuery et répondre à des questions telles que :

  • Quelle est l'utilisation moyenne des emplacements pour toutes les requêtes effectuées au cours des sept derniers jours sur un projet donné ?
  • Quels utilisateurs ont envoyé une tâche de chargement par lot sur un projet donné ?
  • Quels codes d'erreurs de flux continu ont été le plus vus au cours des 30 dernières minutes ?

Intéressez-vous particulièrement aux métadonnées de tâches, aux métadonnées en flux continu et aux métadonnées de réservation pour obtenir des informations sur les performances. de vos charges de travail BigQuery.

Vous trouverez sur GitHub des exemples de requêtes de schéma d'informations indiquant l'utilisation des emplacements et des réservations d'une organisation, l'exécution des jobs et les erreurs liées à un job. Par exemple, la requête suivante fournit la liste des requêtes en attente ou en cours d'exécution. Ces requêtes sont triées en fonction de la durée qui s'est écoulée depuis leur création dans la région us :

SELECT
    creation_time,
    project_id,
    user_email,
    job_id,
    job_type,
    priority,
    state,
    TIMESTAMP_DIFF(CURRENT_TIMESTAMP(), start_time,second) as running_time_sec
 FROM
   `region-us`.INFORMATION_SCHEMA.JOBS_BY_PROJECT
 WHERE
    creation_time BETWEEN TIMESTAMP_SUB(CURRENT_TIMESTAMP(), INTERVAL 1 DAY) AND CURRENT_TIMESTAMP()
    AND state != "DONE"
ORDER BY
    running_time_sec DESC

Pour en savoir plus, consultez la page Résoudre les problèmes de performances de BigQuery avec ces tableaux de bord.

En plus d'écrire vos propres requêtes, vous pouvez utiliser les outils de surveillance BigQuery dans la console Google Cloud  :

  • Surveiller l'état, l'utilisation des ressources et les jobs Consultez les tableaux de bord de l'état opérationnel et les graphiques de ressources d'administration BigQuery qui suivent l'utilisation des emplacements, la simultanéité des jobs et la durée d'exécution des jobs dans votre organisation et vos réservations.
  • Surveiller les jobs Recherchez, filtrez et regroupez les exécutions de requêtes individuelles dans votre organisation pour inspecter les graphiques d'exécution des requêtes, identifier les principaux consommateurs d'emplacements et résoudre les problèmes liés aux jobs.

Carte de télémétrie

Le tableau suivant met en correspondance les fonctionnalités et les ressources BigQuery avec leur télémétrie de surveillance opérationnelle, les services et ressources d'API audités, et la documentation de référence sur les journaux d'audit. Vous pouvez l'utiliser pour trouver la télémétrie dont vous avez besoin pour résoudre les problèmes, optimiser les performances, contrôler les coûts, auditer l'utilisation et assurer la conformité.

Contrairement à de nombreux services Google Cloud qui écrivent des journaux de jobs opérationnels dans Cloud Logging, BigQuery écrit la télémétrie des jobs opérationnels dans des vues de schéma d'informations telles que INFORMATION_SCHEMA.JOBS. Ces vues capturent les étapes d'exécution des requêtes, l'utilisation des emplacements, les octets facturés et tous les jobs envoyés, y compris les jobs en cours et ceux ayant échoué.

BigQuery utilise Logging principalement pour émettre des journaux d'audit Cloud, qui enregistrent les activités d'administration et d'accès aux données. Lorsque vous auditez cette activité, vous pouvez déterminer qui a accédé aux ressources ou aux données, où et quand.

Les journaux d'audit ne sont pas émis pour chaque interruption ou échec de job. Par exemple, les jobs ayant échoué ne génèrent pas d'événements TableDataRead ou TableDataChange, et jobCompletedEvent n'enregistre que les jobs terminés avec succès. Pour en savoir plus sur les scénarios qui n'émettent pas de journaux d'audit, consultez Accès aux données dans la présentation des journaux d'audit BigQuery.

Dans le tableau suivant, un astérisque (*) dans un nom de vue INFORMATION_SCHEMA indique des variantes de vue spécifiques à un champ d'application, telles que _BY_PROJECT, _BY_USER, _BY_FOLDER et _BY_ORGANIZATION.

Fonctionnalité ou ressource Surveillance opérationnelle Cloud Audit Logs
Requêtes et jobs

Vues de schéma d'informations :

  • JOBS* : exécution des jobs en temps réel et historique, millisecondes d'emplacements, octets facturés, étapes d'exécution et tous les jobs envoyés, quel que soit l'état d'achèvement.
  • JOBS_TIMELINE* : état du job et utilisation des emplacements par intervalle de temps

Console :

Métriques : métriques Cloud Monitoring, telles que query/count, query/execution_times et job/num_in_flight.

Service d'API : bigquery.googleapis.com.

Ressources auditées : jobs dans JobService (ressource surveillée : bigquery_project).

Journaux d'audit : journaux d'accès aux données utilisant BigQueryAuditMetadata (événements JobInsertion et JobChange), enregistrant qui a envoyé ou annulé un job, l'état du job, le type d'instruction et les tables ou vues référencées. Consultez la présentation des journaux d'audit BigQuery.

Tables et vues

Vues de schéma d'informations :

  • TABLES : métadonnées de la table
  • VIEWS : afficher les définitions et les métadonnées
  • TABLE_STORAGE* : octets logiques et physiques, et facturation du stockage
  • PARTITIONS : nombre de lignes et taille de stockage de la partition
  • STREAMING_TIMELINE* : débit et erreurs d'insertion en flux continu
  • WRITE_API_TIMELINE* : débit et erreurs du flux d'écriture

Métriques : métriques Monitoring, telles que storage/stored_bytes et storage/table_count.

Services d'API : bigquery.googleapis.com et bigquerystorage.googleapis.com. Les journaux d'accès aux données pour l'API BigQuery Storage utilisent bigquery.googleapis.com, tandis que les journaux de refus de stratégie utilisent bigquerystorage.googleapis.com.

Ressources auditées : tables, vues et vues matérialisées dans TableService et TableDataService ; sessions de lecture et flux d'écriture de stockage dans BigQueryRead et BigQueryWrite (ressources surveillées : bigquery_dataset et bigquery_table).

Journaux d'audit : journaux d'accès aux données utilisant BigQueryAuditMetadata (événements TableDataRead et TableDataChange pour les lectures, les modifications, les champs référencés, les jobs sources et les lectures et écritures de flux de l'API BigQuery Storage), ainsi que les journaux d'activité d'administration, d'accès aux données et les journaux des événements système pour les événements TableCreation, TableChange et TableDeletion, y compris les modifications de stratégie IAM (Identity and Access Management) et les expirations de tables. Consultez la présentation des journaux d'audit BigQuery.

Ensembles de données

Vues de schéma d'informations :

  • SCHEMATA : métadonnées de l'ensemble de données et expiration par défaut
  • SCHEMATA_OPTIONS : options et étiquettes de l'ensemble de données
  • SCHEMATA_REPLICAS : état de la réplication interrégionale

Service d'API : bigquery.googleapis.com.

Ressources auditées : ensembles de données, stratégies IAM d'ensembles de données et LCA d'ensembles de données dans DatasetService et IAMPolicy (ressource surveillée : bigquery_dataset).

Journaux d'audit : journaux d'activité d'administration et d'accès aux données utilisant BigQueryAuditMetadata (événements DatasetCreation, DatasetChange et DatasetDeletion), y compris les modifications apportées aux stratégies IAM de l'ensemble de données dans bindingDeltas et les mises à jour des LCA dans accessChanges. Consultez la présentation des journaux d'audit BigQuery.

Emplacements et réservations

Vues de schéma d'informations :

Console :

Métriques : métriques Monitoring, telles que slots/allocated et slots/total_available.

Service d'API : bigqueryreservation.googleapis.com pour l'API BigQuery Reservation.

Ressources auditées : réservations, engagements de capacité et attributions de réservations dans ReservationService (ressource surveillée : bigquery_project).

Journaux d'audit : journaux d'activité d'administration et d'accès aux données pour la création, la modification, la suppression et l'affichage des réservations, des engagements de capacité et des attributions de projets ou de dossiers. Consultez Journaux d'audit de l'API BigQuery Reservation.

Sécurité au niveau des colonnes et masquage des données

Vues de schéma d'informations :

  • COLUMN_FIELD_PATHS : chemins d'accès aux colonnes imbriquées, tags avec stratégie et attributions de règles de données
  • COLUMNS : schémas de colonnes et types de données

Services d'API : datacatalog.googleapis.com pour les tags avec stratégie Data Catalog, bigquerydatapolicy.googleapis.com pour l'API BigQuery Data Policy et bigquery.googleapis.com.

Ressources auditées : taxonomies et tags avec stratégie dans PolicyTagManager, stratégies de données dans DataPolicyService et colonnes de table avec tag avec stratégie (ressources surveillées : audited_resource et bigquery_dataset).

Journaux d'audit : journaux d'activité d'administration et d'accès aux données pour la gestion des taxonomies et des tags avec stratégie, et les modifications de stratégie IAM (Auditer les tags avec stratégie) ; gestion des stratégies de données et mises à jour des bénéficiaires (Journalisation d'audit des stratégies de données BigQuery) ; et journaux TableDataRead.fields pour les lectures sur les colonnes protégées (Présentation des journaux d'audit BigQuery).

Routines, y compris les fonctions définies par l'utilisateur et les procédures stockées

Vues de schéma d'informations :

  • ROUTINES : définitions et métadonnées de routine
  • ROUTINE_OPTIONS : options de routine
  • PARAMETERS : paramètres d'entrée et de sortie de la routine
  • JOBS* : jobs d'exécution de routine

Service d'API : bigquery.googleapis.com.

Ressources auditées : fonctions définies par l'utilisateur (UDF), fonctions de table et procédures stockées dans RoutineService (ressources surveillées : bigquery_dataset et bigquery_project).

Journaux d'audit : journaux d'activité d'administration et d'accès aux données à l'aide de BigQueryAuditMetadata (événements RoutineCreation, RoutineChange et RoutineDeletion), ainsi que des événements de job enfant pour les exécutions de procédures stockées. Consultez la présentation des journaux d'audit BigQuery.

Connexions externes

Vues de schéma d'informations :

  • OBJECT_PRIVILEGES : droits de connexion
  • JOBS* : requêtes fédérées et jobs de fonction distante qui utilisent des connexions

Service d'API : bigqueryconnection.googleapis.com pour l'API BigQuery Connection.

Ressources auditées : connexions et stratégies IAM de connexion dans ConnectionService (ressource surveillée : audited_resource).

Journaux d'audit : journaux d'activité d'administration et d'accès aux données pour la création de connexions, les mises à jour d'identifiants, la suppression, la liste et les modifications de stratégies IAM. Consultez Journaux d'audit de l'API BigQuery Connection.

BigQuery Sharing

Vues de schéma d'informations :

  • SHARED_DATASET_USAGE : utilisation par les abonnés des tables d'ensembles de données partagés
  • SCHEMATA_LINKS : ensembles de données associés et ressources partagées

Tableau de bord : tableau de bord des métriques d'utilisation du partage.

Service d'API : analyticshub.googleapis.com.

Ressources auditées : échanges de données, fiches, abonnements et stratégies IAM d'échange ou de fiche dans AnalyticsHubService (ressource surveillée : audited_resource).

Journaux d'audit : journaux d'activité d'administration et d'accès aux données pour l'échange de données et la création, la mise à jour et la suppression de fiches, les modifications de règles IAM et les opérations des abonnés. Consultez Journalisation d'audit du partage.

Service de transfert de données BigQuery

Métriques et journaux :

Service d'API : bigquerydatatransfer.googleapis.com pour l'API Service de transfert de données BigQuery.

Ressources auditées : configurations de transfert, exécutions de transfert et sources de données dans DataTransferService (ressource surveillée : audited_resource).

Journaux d'audit : journaux d'activité d'administration et d'accès aux données pour la création, la mise à jour, la suppression, la liste et le démarrage des configurations et des exécutions de transfert. Consultez Journaux d'audit du service de transfert de données BigQuery.

Catalogues et tables BigLake

Vues de schéma d'informations :

  • TABLES : métadonnées de la table
  • JOBS* : statistiques de requête de stockage d'objets externes (metadata_cache_statistics et object_storage_stats)

Services d'API : biglake.googleapis.com et bigquery.googleapis.com.

Ressources auditées : catalogues, bases de données, tables et partitions de métastore dans MetastoreService et HiveMetastoreService, et catalogues, espaces de noms et tables Apache Iceberg dans IcebergCatalogService (ressources surveillées : audited_resource et bigquery_dataset).

Journaux d'audit : journaux d'activité d'administration et d'accès aux données pour les opérations de stratégie IAM de catalogue, de base de données, d'espace de noms, de table, de partition et de catalogue. Consultez Journaux d'audit BigLake.

Service de migration BigQuery

État et rapports :

  • État du job de traduction SQL par lot dans la console Google Cloud
  • État du workflow et de la sous-tâche dans l'API BigQuery Migration
  • Rapports récapitulatifs de traduction dans Cloud Storage

Service d'API : bigquerymigration.googleapis.com pour l'API BigQuery Migration.

Ressources auditées : workflows de migration, sous-tâches de migration et requêtes de traduction SQL dans MigrationService et SqlTranslationService (ressource surveillée : audited_resource).

Journaux d'audit : journaux d'accès aux données pour la création, le démarrage, l'affichage, la consultation et la suppression des workflows et des sous-tâches de migration, ainsi que pour la traduction des requêtes SQL. Consultez Journaux d'audit du service de migration BigQuery.

Étapes suivantes