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.typecorrespond àbigquery_resource. - Les détails de l'opération sont écrits dans le champ
protoPayload.serviceData. La valeur de ce champ est une structureAuditData.
Au format le plus récent :
- Le champ
resource.typecontientbigquery_projectoubigquery_dataset. La ressourcebigquery_projectcontient des entrées de journal sur les tâches, tandis que la ressourcebigquery_datasetdispose 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 structureBigQueryAuditMetadata.
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 :
Console :
Métriques : métriques Cloud Monitoring, telles que |
Service d'API : Ressources auditées : jobs dans Journaux d'audit : journaux d'accès aux données utilisant |
| Tables et vues |
Vues de schéma d'informations :
Métriques : métriques Monitoring, telles que |
Services d'API : Ressources auditées : tables, vues et vues matérialisées dans Journaux d'audit : journaux d'accès aux données utilisant |
| Ensembles de données |
Vues de schéma d'informations :
|
Service d'API : Ressources auditées : ensembles de données, stratégies IAM d'ensembles de données et LCA d'ensembles de données dans Journaux d'audit : journaux d'activité d'administration et d'accès aux données utilisant |
| Emplacements et réservations |
Vues de schéma d'informations :
Console :
Métriques : métriques Monitoring, telles que |
Service d'API : Ressources auditées : réservations, engagements de capacité et attributions de réservations dans 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 :
|
Services d'API : Ressources auditées : taxonomies et tags avec stratégie dans 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 |
| Routines, y compris les fonctions définies par l'utilisateur et les procédures stockées |
Vues de schéma d'informations :
|
Service d'API : Ressources auditées : fonctions définies par l'utilisateur (UDF), fonctions de table et procédures stockées dans Journaux d'audit : journaux d'activité d'administration et d'accès aux données à l'aide de |
| Connexions externes |
Vues de schéma d'informations :
|
Service d'API : Ressources auditées : connexions et stratégies IAM de connexion dans 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 :
Tableau de bord : tableau de bord des métriques d'utilisation du partage. |
Service d'API : Ressources auditées : échanges de données, fiches, abonnements et stratégies IAM d'échange ou de fiche dans 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 : Ressources auditées : configurations de transfert, exécutions de transfert et sources de données dans 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 : |
Services d'API : Ressources auditées : catalogues, bases de données, tables et partitions de métastore dans 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 :
|
Service d'API : Ressources auditées : workflows de migration, sous-tâches de migration et requêtes de traduction SQL dans 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
- Découvrez comment surveiller et filtrer les jobs avec l'explorateur de jobs.
- Découvrez comment surveiller l'état et l'utilisation des ressources.
- Découvrez comment créer des graphiques et des alertes pour BigQuery.