Introduzione al monitoraggio di BigQuery
Il monitoraggio e il logging sono fondamentali per eseguire applicazioni affidabili nel cloud. I carichi di lavoro BigQuery non fanno eccezione, soprattutto se il tuo carico di lavoro ha volumi elevati o è fondamentale per la missione. Questo documento fornisce una panoramica di alto livello dei dati di monitoraggio disponibili per BigQuery.
Le fonti di monitoraggio e registrazione possono variare in base alla frequenza di campionamento o aggregazione. Ad esempio, i dati dello schema informativo potrebbero essere disponibili a un livello di granularità superiore rispetto ai dati delle metriche di Cloud Monitoring.
Di conseguenza, i grafici delle metriche con granularità inferiore potrebbero sembrare diversi dalle statistiche dello schema informativo comparabili. L'aggregazione tenderà ad appianare le discrepanze. Quando progetti una soluzione di monitoraggio, valuta il tempo di risposta alle richieste, 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.
- 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 prima che vengano segnalate. Le metriche per le query non riuscite non vengono segnalate. Per un elenco completo delle metriche disponibili, inclusi i tassi di campionamento, la visibilità e le limitazioni, consulta bigquery
in Google Cloud metriche.
Utilizza Cloud Monitoring per visualizzare le metriche di BigQuery e creare grafici e avvisi. Ogni metrica ha un tipo di risorsa, ovvero
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 ulteriori informazioni, vedi Creazione di grafici e avvisi per BigQuery.
Log
I log sono record di testo generati in risposta a eventi o azioni particolari. 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ù sull'accesso Google Cloud, consulta Cloud Logging.
Un log è una raccolta di voci di log solo di accodamento. 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 log di controllo. Questi log registrano:
- Attività amministrativa, ad esempio creazione o modifica di risorse.
- Accesso ai dati, ad esempio lettura dei dati forniti dagli utenti 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 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 campo secondario chiamato payload. Per gli audit log, il campo payload è denominato protoPayload
. Il valore di
questo campo è una
struttura AuditLog
, indicata dal valore del campo protoPayload.@type
, che è
impostato su type.googleapis.com/google.cloud.audit.AuditLog
.
Per le operazioni su set di dati, tabelle e job, BigQuery scrive
log di controllo 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 strutturaAuditData
.
Nel nuovo formato:
- Il campo
resource.type
èbigquery_project
obigquery_dataset
. La risorsabigquery_project
contiene voci di log relative ai job, mentre la risorsabigquery_dataset
contiene voci di log relative all'archiviazione. - I dettagli dell'operazione vengono scritti nel campo
protoPayload.metadata
. Il valore di questo campo è una strutturaBigQueryAuditMetadata
.
Ti consigliamo di utilizzare i log nel formato più recente. Per saperne di più, 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, vedi
Monitoraggio delle prenotazioni BigQuery.
Viste BigQuery INFORMATION_SCHEMA
Le visualizzazioni INFORMATION_SCHEMA
sono un'altra fonte di approfondimenti in BigQuery, che puoi utilizzare insieme a metriche e log.
Queste viste contengono metadati relativi a 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 e poi 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 di streaming 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, vedi 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 BigQuery per visualizzare grafici che mostrano l'utilizzo degli slot, la concorrenza dei job e il tempo di esecuzione dei job. Per ulteriori informazioni, vedi Monitorare l'integrità, l'utilizzo delle risorse e i job.
Passaggi successivi
- Scopri come monitorare l'utilizzo delle risorse e i job.
- Scopri come creare grafici e avvisi per BigQuery.