Introduzione al monitoraggio di BigQuery

Il monitoraggio di BigQuery ti consente di monitorare l'utilizzo delle risorse, l'esecuzione dei job e l'integrità operativa dei tuoi workload per identificare i colli di bottiglia e mantenere l'affidabilità.

Il monitoraggio e il logging sono fondamentali per l'esecuzione di applicazioni affidabili nel cloud. I workload BigQuery non fanno eccezione, soprattutto se il tuo workload ha volumi elevati o è mission critical.

Le origini di monitoraggio variano in base alla frequenza di campionamento e al livello di aggregazione. Ad esempio, le viste dello schema di informazioni spesso forniscono una granularità maggiore rispetto alle metriche di Cloud Monitoring. Di conseguenza, i grafici delle metriche potrebbero differire temporaneamente dai dati dello schema di informazioni finché l'aggregazione non appiana le differenze. Quando progetti una strategia di monitoraggio, valuta la latenza, la precisione e l'accuratezza in base ai tuoi requisiti.

Metriche

Le metriche sono valori numerici che vengono raccolti a intervalli regolari e resi disponibili per l'analisi. Puoi utilizzare le metriche per:

  • Creare grafici e dashboard.
  • Attiva avvisi per condizioni o situazioni che richiedono l'intervento umano.
  • Analizza il rendimento storico.

Nel caso di BigQuery, le metriche disponibili includono il numero di job in esecuzione, il numero di byte analizzati durante una query e la distribuzione dei tempi di query. Le metriche per una query diventano disponibili solo dopo che la query è stata eseguita correttamente e possono essere necessarie fino a sette minuti per la generazione del report. Le metriche per le query non riuscite non vengono registrate. Per un elenco completo delle metriche disponibili, incluse le frequenze di campionamento, la visibilità e le limitazioni, consulta bigquery in metriche diGoogle Cloud .

Utilizza Cloud Monitoring per visualizzare le metriche di BigQuery e creare grafici e avvisi. Ogni metrica ha un tipo di risorsa, bigquery_dataset, bigquery_project o global, e un insieme di etichette. Puoi raggruppare o filtrare ogni metrica utilizzando le etichette.

Ad esempio, per tracciare un grafico del numero di query interattive in corso, utilizza la seguente istruzione PromQL, che filtra in base a priority uguale a interactive:

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

L'esempio successivo recupera il numero di job di caricamento in corso, raggruppati in intervalli di 10 minuti:

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

Per saperne di più, consulta Creazione di grafici e avvisi per BigQuery.

Log

I log sono record di testo generati in risposta a determinati eventi o azioni. BigQuery crea voci di log per azioni come la creazione o l'eliminazione di una tabella, l'acquisto di slot o l'esecuzione di un job di caricamento. Per saperne di più sul logging in Google Cloud, consulta Cloud Logging.

Un log è una raccolta di voci di log di sola aggiunta. Ad esempio, puoi scrivere le tue voci di log in un log denominato projects/PROJECT_ID/logs/my-test-log. Molti serviziGoogle Cloud , tra cui BigQuery, creano un tipo di log chiamato audit log. Questi log registrano:

  • Attività amministrativa, ad esempio la creazione o la modifica di risorse.
  • Accesso ai dati, ad esempio la lettura dei dati forniti dagli utenti da una risorsa.
  • Eventi di sistema generati dai sistemi Google, anziché dalle azioni degli utenti.

Gli audit log sono scritti in un formato JSON strutturato. Il tipo di dati di base per le voci di logGoogle Cloud è la struttura LogEntry. Questa struttura contiene il nome del log, la risorsa che ha generato la voce di log, il timestamp (UTC) e altre informazioni di base.

I dettagli dell'evento registrato sono contenuti in un sottocampo chiamato campo payload. Per gli audit log, il campo del payload è denominato protoPayload. Il valore di questo campo è una struttura AuditLog, indicata dal valore del campo protoPayload.@type, impostato su type.googleapis.com/google.cloud.audit.AuditLog.

Per le operazioni su set di dati, tabelle e job, BigQuery scrive gli audit log in due formati diversi, anche se entrambi condividono il tipo di base AuditLog.

Nel formato precedente:

  • Il campo resource.type è bigquery_resource.
  • I dettagli dell'operazione vengono scritti nel campo protoPayload.serviceData. Il valore di questo campo è una struttura AuditData.

Nel formato più recente:

  • Il campo resource.type è bigquery_project o bigquery_dataset. La risorsa bigquery_project contiene voci di log relative ai job, mentre la risorsa bigquery_dataset contiene voci di log relative allo spazio di archiviazione.
  • I dettagli dell'operazione vengono scritti nel campo protoPayload.metadata. Il valore di questo campo è una struttura BigQueryAuditMetadata.

Ti consigliamo di utilizzare i log nel formato più recente. Per saperne di più, consulta la guida alla migrazione degli audit log.

Ecco un esempio abbreviato di una voce di log che mostra un'operazione non riuscita:

{
  "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",
  ...
}

Per le operazioni su BigQuery Reservations, protoPayload è una struttura AuditLog e i campi protoPayload.request e protoPayload.response contengono ulteriori informazioni. Puoi trovare le definizioni dei campi nell'API BigQuery Reservation. Per saperne di più, consulta Monitoraggio delle prenotazioni BigQuery.

Viste INFORMATION_SCHEMA di BigQuery

Le viste dello schema di informazioni sono un'altra fonte di insight in BigQuery, che puoi utilizzare insieme a metriche e log.

Queste viste contengono metadati su job, set di dati, tabelle e altre entità BigQuery. Ad esempio, puoi ottenere metadati in tempo reale sui job BigQuery eseguiti in un periodo di tempo specificato, quindi raggruppare o filtrare i risultati per progetto, utente, tabelle di riferimento e altre dimensioni.

Puoi utilizzare queste informazioni per eseguire un'analisi più dettagliata dei tuoi workload BigQuery e rispondere a domande come:

  • Qual è l'utilizzo medio degli slot per tutte le query negli ultimi 7 giorni per un determinato progetto?
  • Quali utenti hanno inviato un job di caricamento in batch per un determinato progetto?
  • Quali errori di streaming si sono verificati negli ultimi 30 minuti, raggruppati per codice di errore?

In particolare, esamina i metadati dei job, i metadati di flussi di dati e i metadati delle prenotazioni per ottenere insight sulle prestazioni dei tuoi workload BigQuery.

Puoi trovare esempi di query dello schema di informazioni su GitHub che mostrano l'utilizzo di slot e prenotazioni, l'esecuzione dei job e gli errori dei job di un'organizzazione. Ad esempio, la seguente query fornisce un elenco di query in attesa o in esecuzione. Queste query sono ordinate in base al tempo trascorso dalla loro creazione nella regione 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

Per saperne di più, consulta Risolvi i problemi relativi alle prestazioni di BigQuery con queste dashboard.

Oltre a scrivere le tue query, puoi utilizzare gli strumenti di monitoraggio di BigQuery nella console Google Cloud :

  • Monitora l'integrità, l'utilizzo delle risorse e i job. Visualizza le dashboard di integrità operativa e i grafici delle risorse di BigQuery Admin che monitorano l'utilizzo degli slot, la contemporaneità dei job e il tempo di esecuzione dei job nell'organizzazione e nelle prenotazioni.
  • Monitora i job. Cerca, filtra e raggruppa le singole esecuzioni di query nella tua organizzazione per ispezionare i grafici di esecuzione delle query, identificare i principali consumer di slot e risolvere i problemi dei job problematici.

Mappa di telemetria

La tabella seguente mappa le funzionalità e le risorse di BigQuery alla telemetria di monitoraggio operativo, ai servizi e alle risorse API controllati e alla documentazione di riferimento degli audit log. Puoi utilizzarlo per trovare la telemetria necessaria per risolvere i problemi, ottimizzare le prestazioni, controllare i costi, controllare l'utilizzo e mantenere la conformità.

A differenza di molti servizi Google Cloud che scrivono i log dei job operativi in Cloud Logging, BigQuery scrive la telemetria dei job operativi nelle viste dello schema di informazioni, come INFORMATION_SCHEMA.JOBS. Queste visualizzazioni acquisiscono le fasi di esecuzione delle query, l'utilizzo degli slot, i byte fatturati e tutti i job inviati, inclusi quelli in corso e quelli non riusciti.

BigQuery utilizza Logging principalmente per generare Cloud Audit Logs, che registrano le attività amministrative e di accesso ai dati. Quando esegui l'audit di questa attività, puoi determinare chi ha eseguito l'accesso alle risorse o ai dati, dove e quando.

Gli audit log non vengono emessi per ogni interruzione o errore del job. Ad esempio, i job non riusciti non generano eventi TableDataRead o TableDataChange e jobCompletedEvent registra solo i completamenti dei job riusciti. Per i dettagli sugli scenari che non generano audit log, consulta Accesso ai dati nella panoramica degli audit log di BigQuery.

Nella tabella seguente, un asterisco (*) nel nome di una vista INFORMATION_SCHEMA indica varianti della vista specifiche per l'ambito, ad esempio _BY_PROJECT, _BY_USER, _BY_FOLDER e _BY_ORGANIZATION.

Funzionalità o risorsa Monitoraggio operativo Cloud Audit Logs
Query e job

Viste dello schema di informazioni:

  • JOBS*: esecuzione di job in tempo reale e storici, millisecondi slot, byte fatturati, fasi di esecuzione e tutti i job inviati indipendentemente dallo stato di completamento
  • JOBS_TIMELINE*: stato del job e utilizzo degli slot per intervallo di tempo

Console:

Metriche: metriche di Cloud Monitoring, come query/count, query/execution_times e job/num_in_flight.

Servizio API: bigquery.googleapis.com.

Risorse controllate: job in JobService (risorsa monitorata: bigquery_project).

Audit log: log di accesso ai dati che utilizzano BigQueryAuditMetadata (eventi JobInsertion e JobChange), che registrano chi ha inviato o annullato un job, lo stato del job, il tipo di istruzione e le tabelle o le viste di riferimento. Consulta la panoramica degli audit log di BigQuery.

Tabelle e viste

Viste dello schema di informazioni:

  • TABLES: metadati della tabella
  • VIEWS: visualizza definizioni e metadati
  • TABLE_STORAGE*: byte logici e fisici e fatturazione dello spazio di archiviazione
  • PARTITIONS: conteggi delle righe e dimensioni dello spazio di archiviazione della partizione
  • STREAMING_TIMELINE*: throughput ed errori di inserimento di flussi di dati
  • WRITE_API_TIMELINE*: throughput ed errori del flusso di scrittura

Metriche: metriche di Monitoring, come storage/stored_bytes e storage/table_count.

Servizi API: bigquery.googleapis.com e bigquerystorage.googleapis.com. I log di accesso ai dati per l'API BigQuery Storage utilizzano bigquery.googleapis.com, mentre i log di policy rifiutata utilizzano bigquerystorage.googleapis.com.

Risorse controllate: tabelle, viste e viste materializzate in TableService e TableDataService; sessioni di lettura e flussi di scrittura dello spazio di archiviazione in BigQueryRead e BigQueryWrite (risorse monitorate: bigquery_dataset e bigquery_table).

Audit log: log di accesso ai dati che utilizzano BigQueryAuditMetadata (TableDataRead e TableDataChange log eventi per letture, modifiche, campi di riferimento, job di origine e letture e scritture di flussi dell'API BigQuery Storage per le tabelle), oltre ai log di attività di amministrazione, accesso ai dati e log eventi di sistema per gli eventi TableCreation, TableChange e TableDeletion, incluse le modifiche ai criteri di Identity and Access Management (IAM) delle tabelle e le scadenze delle tabelle. Consulta la panoramica degli audit log di BigQuery.

Set di dati

Viste dello schema di informazioni:

Servizio API: bigquery.googleapis.com.

Risorse controllate: set di dati, policy IAM dei set di dati e ACL dei set di dati in DatasetService e IAMPolicy (risorsa monitorata: bigquery_dataset).

Audit log: log di Attività di amministrazione e Accesso ai dati utilizzando BigQueryAuditMetadata (eventi DatasetCreation, DatasetChange e DatasetDeletion), incluse le modifiche alle policy IAM del set di dati in bindingDeltas e gli aggiornamenti delle ACL in accessChanges. Consulta la panoramica degli audit log di BigQuery.

Slot e prenotazioni

Viste dello schema di informazioni:

Console:

Metriche: metriche di Monitoring, come slots/allocated e slots/total_available.

Servizio API: bigqueryreservation.googleapis.com per l'API BigQuery Reservation.

Risorse controllate: prenotazioni, impegni di capacità e assegnazioni di prenotazioni in ReservationService (risorsa monitorata: bigquery_project).

Audit log: log Attività di amministrazione e Accesso ai dati per la creazione, la modifica, l'eliminazione e l'elenco di prenotazioni, impegni di capacità e assegnazioni di progetti o cartelle. Consulta Audit logging dell'API BigQuery Reservation.

Sicurezza a livello di colonna e mascheramento dei dati

Viste dello schema di informazioni:

  • COLUMN_FIELD_PATHS: percorsi di colonne nidificate, tag di policy e assegnazioni di policy dei dati
  • COLUMNS: schemi e tipi di dati delle colonne

Servizi API: datacatalog.googleapis.com per i tag di policy di Data Catalog, bigquerydatapolicy.googleapis.com per l'API BigQuery Data Policy e bigquery.googleapis.com.

Risorse controllate: tassonomie e tag di policy in PolicyTagManager, policy dei dati in DataPolicyService e colonne della tabella con tag di policy (risorse monitorate: audited_resource e bigquery_dataset).

Audit log: log di Attività di amministrazione e Accesso ai dati per la gestione delle tassonomie e dei tag di criteri e per le modifiche alle policy IAM (Tag di policy di controllo); gestione delle policy dei dati e aggiornamenti dei beneficiari (Audit logging di BigQuery Data Policy); e log di TableDataRead.fields per le letture sulle colonne protette (Panoramica degli audit log di BigQuery).

Routine, incluse le funzioni definite dall'utente e le stored procedure

Viste dello schema di informazioni:

Servizio API: bigquery.googleapis.com.

Risorse controllate: funzioni definite dall'utente (UDF), funzioni di tabella e stored procedure in RoutineService (risorse monitorate: bigquery_dataset e bigquery_project).

Audit log: log di Attività di amministrazione e Accesso ai dati che utilizzano BigQueryAuditMetadata (eventi RoutineCreation, RoutineChange e RoutineDeletion), oltre agli eventi dei job secondari per le esecuzioni delle stored procedure. Consulta la panoramica degli audit log di BigQuery.

Connessioni esterne

Viste dello schema di informazioni:

  • OBJECT_PRIVILEGES: privilegi di connessione
  • JOBS*: query federate e job di funzioni remote che utilizzano connessioni

Servizio API: bigqueryconnection.googleapis.com per l'API BigQuery Connection.

Risorse controllate: connessioni e policy IAM di connessione in ConnectionService (risorsa monitorata: audited_resource).

Audit log: log di attività di amministrazione e accesso ai dati per la creazione di connessioni, gli aggiornamenti delle credenziali, l'eliminazione, l'elenco e le modifiche alle policy IAM. Consulta Audit logging dell'API BigQuery Connection.

BigQuery sharing

Viste dello schema di informazioni:

Dashboard: dashboard delle metriche di utilizzo della condivisione.

Servizio API: analyticshub.googleapis.com.

Risorse controllate: scambi di dati, schede, abbonamenti e policy IAM di scambio o scheda in AnalyticsHubService (risorsa monitorata: audited_resource).

Audit log: log di attività di amministrazione e accesso ai dati per la creazione, l'aggiornamento e l'eliminazione di scambi di dati e schede, modifiche alle policy IAM e operazioni dei sottoscrittori. Consulta Audit logging della condivisione.

BigQuery Data Transfer Service

Metriche e log:

Servizio API: bigquerydatatransfer.googleapis.com per l'API BigQuery Data Transfer Service.

Risorse controllate: configurazioni dei trasferimenti, esecuzioni dei trasferimenti e origini dati in DataTransferService (risorsa monitorata: audited_resource).

Audit log: log di attività di amministrazione e accesso ai dati per la creazione, l'aggiornamento, l'eliminazione, l'elenco e l'avvio di configurazioni ed esecuzioni di trasferimento. Consulta Audit logging di BigQuery Data Transfer Service.

Cataloghi e tabelle BigLake

Viste dello schema di informazioni:

  • TABLES: metadati della tabella
  • JOBS*: statistiche sulle query di archiviazione di oggetti esterni (metadata_cache_statistics e object_storage_stats)

Servizi API: biglake.googleapis.com e bigquery.googleapis.com.

Risorse controllate: cataloghi, database, tabelle e partizioni del metastore in MetastoreService e HiveMetastoreService, nonché cataloghi, spazi dei nomi e tabelle Apache Iceberg in IcebergCatalogService (risorse monitorate: audited_resource e bigquery_dataset).

Audit log: log Attività di amministrazione e Accesso ai dati per le operazioni relative a policy IAM di catalogo, database, spazio dei nomi, tabella, partizione e catalogo. Consulta Audit logging di BigLake.

BigQuery Migration Service

Stato e report:

  • Stato del job di traduzione SQL batch nella console Google Cloud
  • Stato del workflow e dei subtask nell'API BigQuery Migration
  • Report di riepilogo della traduzione in Cloud Storage

Servizio API: bigquerymigration.googleapis.com per l'API BigQuery Migration.

Risorse controllate: workflow di migrazione, attività secondarie di migrazione e richieste di traduzione SQL in MigrationService e SqlTranslationService (risorsa monitorata: audited_resource).

Audit log: log di accesso ai dati per la creazione, l'avvio, l'elenco, la visualizzazione e l'eliminazione di workflow e attività secondarie di migrazione e per la traduzione di query SQL. Consulta Audit logging di BigQuery Migration Service.

Passaggi successivi