Introduzione al monitoraggio di BigQuery

Il monitoraggio e il logging sono fondamentali per l'esecuzione di applicazioni affidabili nel cloud. I carichi di lavoro BigQuery non fanno eccezione, soprattutto se hanno volumi elevati o sono di importanza fondamentale. Questo documento fornisce una panoramica generale dei dati di monitoraggio disponibili per BigQuery.

Le origini di monitoraggio e registrazione possono variare in base alla frequenza del campionamento o dell'aggregazione. Ad esempio, i dati dello schema delle informazioni potrebbero essere disponibili a un livello di granularità superiore rispetto ai dati delle metriche di monitoraggio del cloud.

Di conseguenza, i grafici delle metriche con una granularità inferiore potrebbero sembrare diversi dalle statistiche dello schema di informazioni paragonabili. L'aggregazione tende a smussare le discrepanze. Quando progetti una soluzione di monitoraggio, valuta il tempo di risposta della richiesta, la precisione e l'accuratezza delle metriche in base ai tuoi requisiti.

Metriche

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

  • Creare grafici e dashboard.
  • Attivare 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 di una query diventano disponibili solo dopo che la query è andata a buon fine e possono essere generate in un massimo di sette minuti. Le metriche relative alle query non riuscite non vengono registrate. Per un elenco completo delle metriche disponibili, inclusi i relativi tassi di campionamento, la visibilità e le limitazioni, consulta bigquery in Metriche di Google 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. Utilizza queste informazioni per creare query in Monitoring Query Language (MQL). Puoi raggruppare o filtrare ogni metrica utilizzando le etichette.

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

fetch global
| metric 'bigquery.googleapis.com/query/count'
| filter metric.priority = 'interactive'

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

fetch bigquery_project
| metric 'bigquery.googleapis.com/job/num_in_flight'
| filter metric.job_type = 'load'
| group_by 10m

Per ulteriori informazioni, consulta Creare 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 ulteriori informazioni su come eseguire il logging in Google Cloud, consulta Cloud Logging.

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

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

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

I dettagli dell'evento registrato sono contenuti in un sottocampo chiamato campo payload. Per i log di controllo, 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 attualmente scrive i log di controllo in due formati diversi, sebbene entrambi condividano 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 ulteriori informazioni, consulta la guida alla migrazione dei log di controllo.

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 sulle prenotazioni BigQuery, 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 ulteriori informazioni, consulta Monitoraggio delle prenotazioni BigQuery.

INFORMATION_SCHEMA visualizzazioni

Le viste INFORMATION_SCHEMA sono un'altra fonte di informazioni 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 su quali job BigQuery sono stati eseguiti in un periodo di tempo specificato, quindi raggruppare o filtrare i risultati per progetto, utente, tabelle a cui viene fatto riferimento e altre dimensioni.

Puoi utilizzare queste informazioni per eseguire analisi più dettagliate sui tuoi carichi di lavoro 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 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 dei flussi di dati e i metadati delle prenotazioni per ottenere informazioni sul rendimento dei tuoi carichi di lavoro BigQuery.

Puoi trovare query INFORMATION_SCHEMA di esempio 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 ulteriori informazioni, consulta Risolvere i problemi di prestazioni di BigQuery con queste dashboard.

Se hai prenotazioni di slot, oltre a scrivere la tua query, puoi utilizzare i grafici delle risorse di amministrazione di BigQuery per visualizzare i grafici che mostrano l'utilizzo degli slot, la concorrenza dei job e il tempo di esecuzione dei job. Per ulteriori informazioni, consulta Introduzione ai grafici delle risorse di amministrazione di BigQuery (anteprima).

Passaggi successivi