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.

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 críticas que precisem 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, a distribuição dos tempos da consulta e outras estatísticas. Para ver a lista completa de métricas disponíveis para o BigQuery, 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 estrutura AuditData.

No formato mais recente:

  • O campo resource.type é bigquery_project ou bigquery_dataset. O recurso bigquery_project tem entradas de registro sobre jobs, enquanto o recurso bigquery_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 estrutura BigQueryAuditMetadata.

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. Também é possível ver os painéis do Google Data Studio criados com base nessas consultas. Consulte Relatórios de tabelas do sistema do BigQuery.

A seguir