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é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 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 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ções

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