Introdução à monitorização do BigQuery
A monitorização e o registo são cruciais para executar aplicações fiáveis na nuvem. As cargas de trabalho do BigQuery não são exceção, especialmente se a sua carga de trabalho tiver volumes elevados ou for essencial para a missão. Este documento apresenta uma vista geral dos dados de monitorização disponíveis para o BigQuery.
As origens de monitorização e registo podem variar com base na frequência de amostragem ou agregação. Por exemplo, os dados do esquema de informações podem estar disponíveis a um nível de detalhe superior ao dos dados das métricas do Cloud Monitoring.
Como resultado, os gráficos de métricas com um nível de detalhe inferior podem parecer divergir das estatísticas do esquema de informações comparáveis. A agregação tende a suavizar as discrepâncias. Quando cria uma solução de monitorização, avalie o tempo de resposta do pedido, a precisão e a exatidão das métricas em função dos seus requisitos.
Métrica
As métricas são valores numéricos que são recolhidos a intervalos regulares e disponibilizados para análise. Pode usar métricas para:
- Criar gráficos e painéis de controlo.
- Acionar alertas para condições ou situações que necessitam de intervenção humana.
- Analise o histórico de desempenho.
No caso do BigQuery, as métricas disponíveis incluem o número de tarefas em execução, o número de bytes analisados durante uma consulta e a distribuição dos tempos de consulta. As métricas de uma consulta só ficam disponíveis depois de a consulta ser bem-sucedida e podem demorar até sete minutos a serem comunicadas. As métricas para consultas que falham não são comunicadas. Para ver uma lista completa das métricas disponíveis, incluindo as respetivas taxas de amostragem, visibilidade e limitações, consulte bigquery
em Google Cloud métricas.
Use o Cloud Monitoring para ver as métricas do BigQuery e criar gráficos e alertas. Cada métrica tem um tipo de recurso, bigquery_dataset
, bigquery_project
ou global
, e um conjunto de etiquetas. Pode agrupar ou filtrar cada métrica através das etiquetas.
Por exemplo, para criar um gráfico do número de consultas interativas em curso, use a seguinte declaração PromQL, que filtra por priority
igual a interactive
:
{"bigquery.googleapis.com/query/count", monitored_resource="global", priority="interactive"}
O exemplo seguinte obtém o número de tarefas de carregamento em curso, agrupadas em intervalos de 10 minutos:
avg_over_time({"bigquery.googleapis.com/job/num_in_flight",
monitored_resource="bigquery_project",
job_type="load"
}[10m])
Para mais informações, consulte o artigo Criar gráficos e alertas para o BigQuery.
Registos
Os registos são registos de texto gerados em resposta a eventos ou ações específicos. O BigQuery cria entradas de registo para ações como criar ou eliminar uma tabela, comprar slots ou executar uma tarefa de carregamento. Para mais informações sobre como iniciar sessão Google Cloud, consulte o Cloud Logging.
Um registo é uma coleção de entradas de registo apenas de anexação. Por exemplo, pode escrever as suas próprias entradas de registo num registo denominado projects/PROJECT_ID/logs/my-test-log
. Muitos
Google Cloud serviços, incluindo o BigQuery, criam um tipo de
registo denominado registos de auditoria. Estes registos registam:
- Atividade administrativa, como a criação ou a modificação de recursos.
- Acesso a dados, como a leitura de dados fornecidos pelos utilizadores a partir de um recurso.
- Eventos do sistema gerados pelos sistemas Google e não por ações do utilizador.
Os registos de auditoria são escritos num formato JSON estruturado. O tipo de dados base para as entradas de registoGoogle Cloud é a estrutura LogEntry
. Esta estrutura contém o nome do registo, o recurso que gerou a entrada do registo, a indicação de tempo (UTC) e outras informações básicas.
Os detalhes do evento registado estão contidos num subcampo denominado campo payload. Para os registos de auditoria, o campo de carga útil chama-se protoPayload
. O valor deste campo é uma estrutura AuditLog
, indicada pelo valor do campo protoPayload.@type
, que está definido como type.googleapis.com/google.cloud.audit.AuditLog
.
Para operações em conjuntos de dados, tabelas e tarefas, o BigQuery escreve registos de auditoria em dois formatos diferentes, embora ambos partilhem o tipo base AuditLog
.
No formato mais antigo:
- O campo
resource.type
ébigquery_resource
. - Os detalhes sobre a operação são escritos no campo
protoPayload.serviceData
. O valor deste campo é uma estruturaAuditData
.
No formato mais recente:
- O campo
resource.type
ébigquery_project
oubigquery_dataset
. O recursobigquery_project
tem entradas de registo sobre tarefas, enquanto o recursobigquery_dataset
tem entradas de registo sobre armazenamento. - Os detalhes sobre a operação são escritos no campo
protoPayload.metadata
. O valor deste campo é uma estruturaBigQueryAuditMetadata
.
Recomendamos que consuma os registos no formato mais recente. Para mais informações, consulte o guia de migração dos registos de auditoria.
Segue-se um exemplo abreviado de uma entrada de registo que mostra uma operação com falha:
{
"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",
...
}
Para operações em reservas do BigQuery, protoPayload
é uma estrutura AuditLog
, e os campos protoPayload.request
e protoPayload.response
contêm mais informações. Pode encontrar as definições dos campos na API BigQuery Reservation. Para mais
informações, consulte o artigo
Monitorizar reservas do BigQuery.
Vistas do BigQuery INFORMATION_SCHEMA
As visualizações INFORMATION_SCHEMA
são outra fonte de estatísticas no BigQuery, que pode usar em conjunto com métricas e registos.
Estas vistas contêm metadados sobre tarefas, conjuntos de dados, tabelas e outras entidades do BigQuery. Por exemplo, pode obter metadados em tempo real sobre as tarefas do BigQuery executadas durante um período especificado e, em seguida, agrupar ou filtrar os resultados por projeto, utilizador, tabelas referenciadas e outras dimensões.
Pode usar estas informações para fazer uma análise mais detalhada acerca das suas cargas de trabalho do BigQuery e responder a perguntas como:
- Qual é a utilização média de slots para todas as consultas nos últimos 7 dias para um determinado projeto?
- Que utilizadores enviaram uma tarefa de carregamento em lote para um determinado projeto?
- Que erros de streaming ocorreram nos últimos 30 minutos, agrupados por código de erro?
Em particular, consulte os metadados das tarefas, os metadados de streaming e os metadados das reservas para obter estatísticas sobre o desempenho das suas cargas de trabalho do BigQuery.
Pode encontrar consultas de INFORMATION_SCHEMA
exemplo no
GitHub
que mostram a utilização de slots e reservas de uma organização, a execução de tarefas
e os erros de tarefas. Por exemplo, a consulta seguinte fornece uma lista de consultas pendentes ou em execução. Estas consultas são ordenadas
pelo tempo decorrido desde que foram criadas na região 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
Para mais informações, consulte o artigo Resolva problemas de desempenho do BigQuery com estes painéis de controlo.
Se tiver reservas de slots, além de escrever a sua própria consulta, pode usar os gráficos de recursos de administração do BigQuery para ver gráficos que apresentam a utilização de slots, a concorrência de tarefas e o tempo de execução de tarefas. Para mais informações, consulte o artigo Monitorize o estado de funcionamento, a utilização de recursos e as tarefas.
O que se segue?
- Saiba como monitorizar a utilização de recursos e os serviços.
- Saiba como criar gráficos e alertas para o BigQuery.