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 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.

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