Introdução ao monitoramento do BigQuery
O monitoramento do BigQuery permite acompanhar o uso de recursos, a execução de jobs e a integridade operacional nas cargas de trabalho para identificar gargalos e manter a confiabilidade.
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.
As fontes de monitoramento variam de acordo com a frequência de amostragem e o nível de agregação. Por exemplo, as visualizações de esquema de informações geralmente oferecem maior granularidade do que as métricas do Cloud Monitoring. Como resultado, os gráficos de métricas podem divergir temporariamente dos dados do esquema de informações até que a agregação suavize as diferenças. Ao projetar uma estratégia de monitoramento, avalie a latência, a precisão e a exatidão em relação aos seus requisitos.
Métricas
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 de
métricas disponíveis, incluindo taxas de amostragem, visibilidade e limitações, consulte
bigquery em
métricas doGoogle 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. É possível agrupar ou filtrar cada métrica usando esses rótulos.
Por exemplo, para gerar um gráfico com o número de consultas interativas em andamento, use a
seguinte instrução PromQL, que filtra por priority igual a interactive:
{"bigquery.googleapis.com/query/count", monitored_resource="global", priority="interactive"}
O próximo exemplo recebe o número de jobs de carregamento em andamento, agrupados 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 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 doGoogle 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 doGoogle 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_projectoubigquery_dataset. O recursobigquery_projecttem entradas de registro sobre jobs, enquanto o recursobigquery_datasettem 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.
Visualizações de esquema de informações do BigQuery
As visualizações de esquema de informações são outra fonte de insights no BigQuery, que podem ser usadas em conjunto 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 do 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 de esquema de informações 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. 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.
Além de escrever suas próprias consultas, é possível usar as ferramentas de monitoramento do BigQuery no console do Google Cloud :
- Monitorar a integridade e a utilização de recursos. Confira painéis de integridade operacional e gráficos de recursos que monitoram o uso de slots, a capacidade e a simultaneidade de jobs ao longo do tempo na sua organização e nas reservas.
- Monitorar jobs. Pesquise, filtre e agrupe execuções de consulta individuais em toda a organização para inspecionar gráficos de execução de consulta, identificar os principais consumidores de slots e resolver problemas de jobs problemáticos.
A seguir
- Saiba como monitorar e filtrar jobs com o explorador de jobs.
- Saiba como monitorar a integridade e a utilização de recursos.
- Saiba como criar gráficos e alertas para o BigQuery.