Introdução ao monitoramento do BigQuery
O monitoramento e a geração de registros são fundamentais para executar aplicativos confiáveis na nuvem. As cargas de trabalho do BigQuery não são exceção, especialmente se a carga de trabalho tiver grandes volumes ou for essencial. Este documento fornece uma visão geral de alto nível dos dados de monitoramento disponíveis para o BigQuery.
As origens de monitoramento e registros 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 em um nível mais alto de granularidade do que os dados de métricas de monitoramento na nuvem.
Como resultado, gráficos de métricas com menor granularidade podem parecer diferentes das estatísticas de esquema de informações comparáveis. A agregação tende a suavizar as discrepâncias. Ao projetar uma solução de monitoramento, avalie o tempo de resposta, a precisão e a exatidão das métricas em relação aos requisitos.
Métrica
As métricas são valores numéricos coletados em intervalos regulares e disponibilizados para análise. É possível usar métricas para:
- Criar gráficos e painéis.
- Acionar alertas para condições ou situações que precisam de intervenção humana.
- Analisar o desempenho histórico.
No caso do BigQuery, as métricas disponíveis incluem o número
de jobs em execução, quantos bytes foram verificados durante uma consulta e a
distribuição dos tempos de consulta. As métricas de uma consulta só
ficam disponíveis depois que a consulta é bem-sucedida e pode levar até sete minutos para serem
informadas. As métricas das consultas com falha não são informadas. Para uma lista completa das
métricas disponíveis, incluindo taxas de amostragem, visibilidade e limitações, consulte
bigquery
em
Métricas do Google Cloud.
Use o Cloud Monitoring para visualizar
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 rótulos. Use
essas informações para criar consultas na Linguagem de consulta do Monitoring (MQL).
É possível agrupar ou filtrar cada métrica usando esses rótulos.
Por exemplo, para representar o número de consultas interativas em andamento, use a
seguinte instrução MQL, que filtra por priority
igual a interactive
:
fetch global
| metric 'bigquery.googleapis.com/query/count'
| filter metric.priority = 'interactive'
O próximo exemplo recebe o número de jobs de carregamento em andamento, agrupados em intervalos de 10 minutos:
fetch bigquery_project
| metric 'bigquery.googleapis.com/job/num_in_flight'
| filter metric.job_type = 'load'
| group_by 10m
Para mais informações, consulte Como criar gráficos e alertas para o BigQuery.
Registros
Os registros são registros de texto gerados em resposta a eventos ou ações específicos. O BigQuery cria entradas de registro para ações, como criar ou excluir uma tabela, comprar slots ou executar um job de carregamento. Para mais informações sobre a geração de registros no Google Cloud, consulte Cloud Logging.
Um registro é um conjunto somente de entradas de registros. Por exemplo, é possível gravar
suas próprias entradas de registro em um registro
chamado projects/PROJECT_ID/logs/my-test-log
. Muitos
serviços do Google Cloud, incluindo o BigQuery, criam um tipo de
registro chamado registros de auditoria. Esses registros gravam:
- Atividade administrativa, como criação ou modificação de recursos
- Acesso a dados, como leitura de dados fornecidos pelo usuário em um recurso.
- Eventos do sistema gerados por sistemas do Google, e não por ações do usuário.
Os registros de auditoria são gravados em um formato JSON estruturado. O tipo de dados base para
entradas de registro do Google Cloud é a
estrutura LogEntry
. Essa
estrutura contém o nome do registro, o recurso que gerou a entrada de
registro, o carimbo de data/hora e outras informações básicas.
Os detalhes do evento registrado estão em um subcampo chamado
payload. Para registros de auditoria, o campo de payload é chamado protoPayload
. O valor desse
campo é uma
estrutura AuditLog
,
indicada pelo valor do campo protoPayload.@type
, que é
definido como type.googleapis.com/google.cloud.audit.AuditLog
:
Para operações em conjuntos de dados, tabelas e jobs, o BigQuery grava
registros de auditoria em dois formatos diferentes, embora ambos compartilhem o tipo
base AuditLog
.
No formato mais antigo:
- O campo
resource.type
ébigquery_resource
. - Os detalhes sobre a operação são gravados no campo
protoPayload.serviceData
. O valor desse campo é uma estruturaAuditData
.
No formato mais recente:
- O campo
resource.type
ébigquery_project
oubigquery_dataset
. O recursobigquery_project
tem entradas de registro sobre jobs, enquanto o recursobigquery_dataset
tem entradas de registro sobre armazenamento. - Os detalhes sobre a operação são gravados no campo
protoPayload.metadata
. O valor desse campo é uma estruturaBigQueryAuditMetadata
.
Recomendamos o uso de registros no formato mais recente. Para mais informações, consulte o guia de migração de registros de auditoria.
Este é um exemplo abreviado de uma entrada de registro 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 BigQuery Reservations, protoPayload
é uma
estrutura AuditLog
e os campos protoPayload.request
e protoPayload.response
contêm mais informações. Encontre as definições de campo na
API BigQuery Reservation. Para mais
informações, consulte
Como monitorar reservas do BigQuery.
INFORMATION_SCHEMA
visualização
As visualizações de INFORMATION_SCHEMA
são
outra fonte de insights no BigQuery. Elas podem ser usadas
com métricas e registros.
Essas visualizações contêm metadados sobre jobs, conjuntos de dados, tabelas e outras entidades do BigQuery. Por exemplo, é possível receber metadados em tempo real sobre quais jobs do BigQuery foram executados em um período especificado e agrupar ou filtrar os resultados por projeto, usuário, tabelas referenciadas e outras dimensões.
É possível usar essas informações para realizar uma análise mais detalhada sobre 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 sete dias de um determinado projeto?
- Quais usuários enviaram um job de carregamento em lote de um determinado projeto?
- Quais erros de streaming ocorreram nos últimos 30 minutos, agrupados por código de erro?
Particularmente, consulte metadados de jobs, metadados de streaming e metadados de reservas para receber insights sobre o desempenho das cargas de trabalho do BigQuery.
Encontre exemplos de consultas INFORMATION_SCHEMA
no
GitHub
(em inglês) que mostram o uso de slots e reservas de uma organização, a execução de jobs
e erros de jobs. Por exemplo, a consulta a seguir fornece uma lista de consultas pendentes ou em execução no momento. Essas consultas são ordenadas pelo tempo 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 Resolver problemas de desempenho do BigQuery com estes painéis.
Se você tiver reservas de slots, além de gravar sua própria consulta, poderá usar os gráficos de recursos de administrador do BigQuery para visualizar gráficos que exibem o uso do slot, a simultaneidade do job e o tempo de execução do job. Para mais informações, consulte Introdução aos gráficos de recursos de administrador do BigQuery (Pré-lançamento).
A seguir
- Saiba como monitorar a utilização de recursos e jobs.
- Saiba como criar gráficos e alertas para o BigQuery.
- Aprenda a monitorar o uso de jobs de carregamento.