Monitorar os resultados da consulta SQL com uma política de alertas

As políticas de alertas baseadas em SQL na Análise de Observabilidade executam periodicamente consultas SQL nos dados de registro e enviam notificações quando os resultados atendem às condições especificadas. Por exemplo, é possível configurar uma política de alertas para notificar você quando pelo menos 25% das entradas de registro em um determinado período tiverem uma gravidade de ERROR.

Como as políticas de alertas criadas na página Análise de Observabilidade são executadas no mecanismo do BigQuery, a visualização de registros consultada precisa ter um conjunto de dados vinculado do BigQuery. Essas consultas SQL só podem consultar visualizações de registro, não visualizações de análise.

Para informações gerais sobre a Análise de Observabilidade, consulte Consultar e analisar registros com a Análise de Observabilidade.

Como funcionam as políticas de alertas

Uma política de alertas descreve as circunstâncias em que você quer receber alertas e notificações. Há três abordagens diferentes que podem ser usadas para receber notificações quando conteúdo ou padrões aparecem nos dados de registro:

  • Para verificar entradas de registro individuais em busca de uma frase específica, crie uma política de alertas com base em registros. Use essas políticas de alertas quando quiser receber notificações sobre eventos relacionados à segurança, por exemplo.

  • Para monitorar eventos nos dados de entrada de registro, crie uma métrica com base em registros e, em seguida, crie uma política de alertas para monitorar a métrica. Esses tipos de políticas de alertas são eficazes quando você quer monitorar tendências em dados de entrada de registro ao longo do tempo. No entanto, eles não são tão eficazes se você espera apenas alguns eventos.

  • Para monitorar a análise agregada dos dados de entrada de registro, combine a Análise de Observabilidade com políticas de alertas. Nesse cenário, você faz upgrade de um bucket de registros para usar a Análise de Observabilidade e cria um conjunto de dados vinculado do BigQuery para esse bucket. Em seguida, use a Análise de Observabilidade, que é compatível com consultas SQL, para consultar uma visualização de registro no bucket de registros. Por fim, você cria a política de alertas para monitorar os resultados da consulta SQL. Esse tipo de política de alertas é chamado de política de alertas baseada em SQL.

As políticas de alertas baseadas em SQL são mais eficazes para avaliar valores exatos em várias entradas de registro. Se você quiser avaliar entradas de registro individuais, crie uma política de alertas com base em registros.

O restante deste documento descreve como usar políticas de alertas baseadas em SQL.

Componentes da política de alerta

Uma política de alertas baseada em SQL contém uma condição e uma programação:

  • A condição contém a consulta, que é uma consulta SQL que consulta seus dados. A condição também define as circunstâncias em que o resultado da consulta faz com que o Monitoring crie um alerta.

  • A programação define a frequência com que a política de alertas executa a consulta. A programação também define o tamanho da janela de lookback, que é um filtro que seleciona apenas os dados recebidos desde a última vez que a consulta foi avaliada. Por exemplo, se você definir a programação como 60 minutos, a consulta será executada a cada 60 minutos usando uma janela de lookback que seleciona os dados dos últimos 60 minutos.

As políticas de alertas também contêm uma lista de canais de notificação. Quando a condição da política de alertas é atendida, o Cloud Monitoring cria um alerta e envia notificações sobre ele por esses canais. Um alerta é um registro dos dados que fizeram com que a condição fosse atendida, além de outras informações relevantes. Essas informações podem ajudar você a resolver problemas que causaram o alerta. É possível ver o alerta usando o console do Google Cloud .

Tipos de avaliação para políticas de alertas baseadas em SQL

As condições que monitoram um resultado de consulta SQL aceitam dois tipos de avaliação:

  • Limite de contagem de linhas: a condição é atendida quando o número de linhas no resultado da consulta é maior, igual ou menor que um valor limite.

    Por exemplo, suponha que você queira receber uma notificação quando mais de 50 entradas de registro na janela de lookback tiverem uma gravidade maior que 200. Você cria uma consulta que informa entradas de registro com gravidade maior que 200. Em seguida, configure uma condição, selecione o Limite de contagem de linhas e defina o limite como 50.

  • Booleano: a condição é atendida quando uma coluna booleana específica na tabela de resultados da consulta contém qualquer linha com um valor de true.

    Por exemplo, suponha que você queira receber uma notificação quando mais de 25% das entradas de registro na janela de lookback tiverem uma gravidade de ERROR. Crie uma consulta que calcule a porcentagem de entradas de registro com nível de gravidade ERROR. A consulta grava true na coluna notify quando essa porcentagem excede 25%. Em seguida, crie uma condição, defina o tipo como Booleano e configure a condição para monitorar a coluna notify.

As políticas de alertas que monitoram o resultado de uma consulta SQL precisam ter apenas uma condição.

Políticas de alertas e BigQuery

Para que uma política de alertas consulte seus dados de registro, é necessário configurar um conjunto de dados vinculado do BigQuery. Os conjuntos de dados vinculados do BigQuery permitem que o BigQuery leia seus dados de registro e que você execute funções do BigQuery nos dados retornados pela consulta SQL.

Quando uma política de alertas executa uma consulta SQL, ela é executada no mecanismo do BigQuery no projeto do Google Cloud em que a política de alertas é definida. Por padrão, as consultas executadas no mecanismo do BigQuery usam slots sob demanda. Os slots sob demanda e reservados estão sujeitos aos preços do BigQuery.

Também é possível configurar reservas de Slot do BigQuery dedicados para seu projeto:

  1. Crie uma reserva com slots dedicados ou identifique uma reserva atual.
  2. Crie atribuições de reserva para seu projeto.

Entradas de registro avaliadas

Para que uma entrada de registro seja avaliada pela consulta SQL de uma política de alertas, as duas condições a seguir precisam ser verdadeiras:

  • O carimbo de data/hora de recebimento da entrada de registro, que registra quando a entrada de registro foi recebida pelo Cloud Logging, precisa estar dentro da janela de lookback da política de alertas.
  • O carimbo de data/hora da entrada de registro, que registra quando ela foi gerada, precisa estar dentro de 15 minutos da janela de lookback.

Por exemplo, sua política de alertas baseada em SQL tem uma janela de lookback de 60 minutos. A Análise de Observabilidade executa a consulta SQL da política de alertas às 13h30. Para ser incluída na consulta, uma entrada de registro precisa corresponder aos dois critérios a seguir:

  • O carimbo de data/hora recebido precisa ser entre 12h30 e 13h30.
  • O carimbo de data/hora precisa ser entre 12h15 e 13h45.

Quando você executa uma consulta na interface da Análise de Observabilidade, todas as entradas de registro no período selecionado são avaliadas com base no carimbo de data/hora da entrada de registro.

Janela de lookback e tempo de propagação do alerta

Quando uma política de alertas é programada para avaliar a condição, a Análise de Observabilidade atrasa a execução da consulta SQL em cinco minutos para que o Cloud Logging indexe os dados recebidos durante a janela de lookback. Por exemplo, se a política de alertas usar uma janela de lookback que termina às 14h, a Análise de Observabilidade não vai executar a consulta SQL até as 14h05.

Se a condição de alerta for atendida após a execução da consulta, pode levar até dois minutos adicionais para que o alerta se propague pelo sistema.

Falhas de consulta

As consultas emitidas por políticas de alertas baseadas em SQL podem falhar por vários motivos, incluindo os seguintes:

  • A conta de serviço do Monitoring não existe mais ou não tem mais as permissões necessárias para ler os dados de registro que estão sendo consultados.

  • O tempo de execução da consulta excede cinco minutos.

  • Ocorre um erro interno.

Uma consulta com falha gera uma entrada de registro que contém o ID da política de alertas e o status do erro. É possível usar uma política de alertas com base em registros para criar um alerta quando um erro for registrado.

Antes de começar

Nesta seção, presumimos que você tenha feito upgrade do bucket de registros para usar a Análise de Observabilidade para consultar e visualizar os dados de registro usando a página Análise de Observabilidade. Também pressupõe que você já criou um conjunto de dados vinculado do BigQuery no bucket de registros.

Antes de criar uma política de alertas baseada em SQL, siga estas etapas:

  1. Para receber as permissões necessárias para consultar visualizações de registros e criar e gerenciar políticas de alertas baseadas em SQL, peça ao administrador para conceder a você os seguintes papéis do IAM:

  2. Verifique se a conta de serviço do Monitoring existe e se ela tem os seguintes papéis:

    1. Agente de serviço do Monitoring (roles/monitoring.notificationServiceAgent) no projeto.
    2. Visualizador de dados do BigQuery (roles/bigquery.dataViewer) no conjunto de dados vinculado do BigQuery.

    Se a conta de serviço do Monitoring não existir, consulte Solução de problemas: nenhuma conta de serviço do Monitoring.

  3. Configure os canais de notificação que você quer usar para receber notificações de alertas. Para fins de redundância, recomendamos que você crie vários tipos de canais de notificação. Para saber mais, consulte Criar e gerenciar canais de notificação.

Criar uma política de alertas baseada em SQL

Para criar uma política de alertas baseada em SQL, faça o seguinte:

Console

  1. No console Google Cloud , acesse a página Análise de observabilidade:

    Acessar a análise de observabilidade

    Se você usar a barra de pesquisa para encontrar essa página, selecione o resultado com o subtítulo Logging.

  2. Na página Análise de Observabilidade, no editor de consultas, insira uma consulta SQL que consulte seus dados de registro.

    Para mais informações sobre como escrever consultas SQL para visualizações de registros, consulte Consultar uma visualização de registro.

  3. Na barra de ferramentas, clique em Executar no BigQuery.

    A Análise de Observabilidade executa a consulta no mecanismo do BigQuery e mostra os resultados na tabela Resultados.

    Se a opção Executar no BigQuery não aparecer, clique em Selecionar mecanismo de consulta e em BigQuery. O botão Executar consulta muda para Executar no BigQuery.

  4. Na tabela Resultados da página Análise de Observabilidade, clique em  Criar alerta.

    A página Análise de Observabilidade mostra a janela Criar política de alertas SQL, que mostra sua consulta na seção Consulta SQL.

  5. Na seção Condição de alerta, configure a condição e a programação da política de alertas.

  6. Configure os detalhes da política de alertas.

    1. Adicione canais de notificação e configure o conteúdo da notificação, como um assunto personalizado.

    2. Opcional: adicione rótulos de política de alertas e documentação.

    3. Clique em Próxima.

  7. Revise a política de alertas e clique em Salvar para criá-la.

Terraform

  1. Instale e configure o Terraform para seu projeto. Para configurações do App Hub, selecione o projeto host ou de gerenciamento do App Hub.

  2. No Cloud Shell, acesse o diretório que contém a configuração do Terraform.

  3. Na configuração do Terraform, configure uma instância do recurso google_monitoring_alert_policy, incluindo condition_sql.

  4. No Cloud Shell, digite terraform apply.

Para modificar a política de alertas, faça as edições e aplique novamente a configuração do Terraform. Para mais informações, consulte Gerenciar políticas de alertas com o Terraform.

Para informações gerais sobre como usar o Google Cloud com o Terraform, consulte Terraform com o Google Cloud.

REST

Use o método alertPolicies.create para criar políticas de alertas de maneira programática. O tipo Condition da política de alertas precisa ser conditionSql, que é uma instância de SqlCondition. Esse tipo de condição permite que as condições da política de alertas sejam definidas com SQL.

Para definir a programação, defina um valor periodicity para um dos campos minutes, hours ou days. Por exemplo, se você quiser que a consulta seja executada a cada 12 horas, defina a periodicidade do campo hours como 12.

Para definir a condição, use os seguintes campos:

  • boolean_test: configura a política de alertas para que a condição seja atendida quando uma linha de uma coluna booleana na tabela de resultados da consulta contiver um valor verdadeiro.
  • row_count_test: configura a política de alertas para que a condição seja atendida quando o número de linhas na tabela de resultados da consulta atingir um determinado limite.

Para uma lista completa de campos e definições, consulte SqlCondition na documentação da API Cloud Monitoring.

Para mais informações sobre a API Monitoring para políticas de alertas, consulte Como gerenciar políticas de alertas por API.

Limitações

  • É possível ter uma condição por política de alertas baseada em SQL.
  • As consultas emitidas por políticas de alertas baseadas em SQL falham quando o tempo de execução excede cinco minutos.

  • Há um atraso de até sete minutos, além do tempo de execução da consulta, entre o momento em que uma consulta é programada e o momento em que um alerta é criado.

Para uma lista completa de limites associados a políticas de alertas, consulte Limites do Monitoring.

Preços

Para mais informações sobre preços, consulte estes documentos:

A seguir