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

Este documento explica como criar uma política de alertas para monitorar os resultados de uma consulta SQL. A política de alertas notifica você quando o resultado da consulta atende às condições especificadas. Por exemplo, é possível configurar uma política de alertas para receber uma notificação quando pelo menos 25% das entradas de registro em um determinado período tiverem uma gravidade de ERROR.

Há três abordagens diferentes que você pode usar 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 querem receber notificações sobre coisas como eventos relacionados à segurança.

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

  • Para realizar uma análise agregada dos dados de entrada de registro e monitorar os resultados, grave uma consulta SQL na Análise de dados de registros para analisar os dados de entrada de registro. Depois, criar uma política de alertas para monitorar a tabela de resultados da consulta. 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 e não precisam monitorar valores exatos, políticas de alertas com base em registros que usam Linguagem de consulta do Logging.

O restante deste documento descreve como usar políticas de alerta com base em SQL.

Para informações gerais sobre a Análise de dados de registros, consulte Visão geral de consultas e registros.

Como as políticas de alertas funcionam

Uma política de alertas descreve as circunstâncias em que você quer receber alertas e notificações sobre um incidente. Uma política de alertas pode monitorar os resultados de uma consulta SQL. Quando o resultado da consulta atende à condição da política de alertas, o Cloud Monitoring cria um incidente e envia notificações sobre ele por canais de notificação.

Um incidente é um registro dos dados que fizeram com que a condição fosse e outras informações relevantes. Isso informações podem ajudar você a solucionar os problemas que causaram o incidente. É possível conferir o incidente usando o console do Google Cloud. Para mais informações, consulte Incidentes para políticas de alertas baseadas em SQL.

Componentes da política de alerta

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

  • A condition contém a query, que é uma consulta SQL que uma visualização de registros. A condição também define as circunstâncias em que o resultado da consulta faz com que o Monitoring crie um incidente.

  • A programação define com que frequência a política de alerta executa a consulta. A programação também define o tamanho da janela de lookback, que é um filtro que seleciona apenas as entradas de registro recebidas desde a avaliação anterior da consulta. Por exemplo, se você definir a programação para 60 minutos, a consulta será executada a cada 60 minutos, usando uma janela de lookback que seleciona os 60 minutos de entradas de registro.

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

As condições que monitoram um resultado 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 de 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 as 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.

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

    Por exemplo, suponha que você queira ser notificado quando mais de 25% dos entradas de registro na janela de lookback têm gravidade ERROR. Você cria uma consulta que calcula a porcentagem de entradas de registro com nível de gravidade ERROR. Os resultados da consulta gravam true à coluna notify quando essa porcentagem exceder 25%. Em seguida, crie uma condição, defina o tipo como Booleano e configure os para monitorar a coluna notify.

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

Políticas de alertas e o BigQuery

Quando uma política de alertas executa uma consulta SQL, essa consulta é executada usando slots do BigQuery no projeto do Google Cloud em que o política de alertas estiver definida. Para mais informações, consulte Trabalhar com reservas de slots.

Para que uma política de alertas use slots reservados do BigQuery para consultar uma visualização de registro, que precisa ser configurada para ter um conjunto de dados vinculado. Vinculada permitem executar funções do BigQuery nos dados retornados por sua consulta SQL. Para mais informações, consulte Criar um conjunto de dados vinculado do BigQuery.

Antes de começar

  1. Para receber as permissões necessárias para usar o Log Analytics, peça ao administrador para conceder a você os seguintes papéis do IAM nos seus buckets ou visualizações de registros:

    • Para consultar os buckets de registro _Required e _Default: Leitor de registros (roles/logging.viewer).
    • Para consultar todas as visualizações de registros em um projeto: Acessador de visualização de registros (roles/logging.viewAccessor).
    • Para consultar registros em uma visualização de registros específica: Crie uma política do IAM para a visualização de registros ou restrinja o papel de acessador de visualizações de registros (roles/logging.viewAccessor) a uma determinada visualização. Para mais informações, consulte Controlar o acesso a uma visualização de registros.

    Para mais informações sobre outros papéis, consulte Registro de papéis.
  2. Para as visualizações de registro que você quer consultar, acesse a página Armazenamento de registros e verifique se os buckets de registro que armazenam essas visualizações foram atualizados para usar a Análise de dados de registros. Se necessário, faça upgrade do bucket de registros.
  3. No console do Google Cloud, acesse a página Armazenamento de registros:

    Acessar o armazenamento de registros

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

  4. Para ativar a execução de consultas em slots reservados do BigQuery, faça o seguinte:
    1. Se o bucket de registros que você planeja consultar não tiver um conjunto de dados vinculado, Em seguida, crie um conjunto de dados vinculado para isso.
    2. Configure slots reservados do BigQuery e atribua ao seu projeto do Google Cloud.

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

    Para informações sobre como conceder acesso a um conjunto de dados, consulte Conceder acesso a um conjunto de dados.

  6. Verifique se a conta de serviço de monitoramento existe e tem os seguintes papéis:

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

    Se a conta de serviço de monitoramento não existir, consulte Solução de problemas: conta de serviço de monitoramento ausente.

  7. Configure os canais de notificação que você quer usar para receber em caso de incidentes. Para fins de redundância, recomendamos que você criar 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 com base em SQL, faça o seguinte:

Console do Google Cloud

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

    Acesse Análise de registros

    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 dados de registros, no Editor de consultas, inserir uma consulta SQL para a visualização de registros.

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

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

    O Log Analytics executa sua consulta no mecanismo do BigQuery e mostra os resultados na tabela Results.

    Se Executar no BigQuery não for exibido, clique em Selecionar mecanismo de consulta e depois em BigQuery. O botão Executar consulta muda para Executar no BigQuery.

  4. Na tabela Results da página Log Analytics, clique em Create alert.

    A página Análise de dados de registros mostra a janela Criar política de alertas SQL, que seu comando será exibido na seção Consulta SQL.

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

  6. Configure os detalhes do alerta da sua política.

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

    2. Adicione canais de notificação e clique em Próxima.

  7. Revise e crie a política de alertas clicando em Salvar.

API Cloud Monitoring

Use o método alertPolicies.create para e criar políticas de alertas de maneira programática. O tipo Condition da sua política de alertas precisa ser conditionSql, que é uma instância de SqlCondition. Esse tipo permite que as condições da sua política de alertas que será definida 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 contém um valor verdadeiro .
  • row_count_test: configura a política de alerta para que a condição seja atendida quando o número de linhas na tabela de resultados da consulta atender a 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

Quando uma política de alertas executa uma consulta SQL programada, a política de alertas introduz um atraso de 15 minutos para que haja tempo de propagação das entradas no bucket de registros. Se as entradas de registro demorarem mais de 15 minutos para chegar, a política de alertas não as avaliará.

A introdução de um atraso de 15 minutos afeta o tempo entre o momento em que uma entrada de registro é gerada e o momento em que o monitoramento detecta quando uma condição é atendida. Por exemplo, suponha que você tenha uma consulta SQL programada para ser executada a cada 30 minutos. Quando a política de alertas avalia periodicamente a condição, ela consulta as entradas de registro com carimbos de data/hora de 15 a 45 minutos atrás.

Para saber os limites associados às políticas de alertas, consulte Limites de monitoramento.

Preços

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

A seguir

Para informações sobre como criar gráficos com seus dados da Análise de registros, consulte Resultados da consulta de gráficos com a Análise de registros.