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 executada no Log Analytics. Essas consultas são gravadas em SQL e precisam consultar uma visualização de registro. 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.

As políticas de alerta criadas na página Análise de dados de registros são executadas em um mecanismo do BigQuery. Portanto, os dados consultados precisam ser acessíveis por um conjunto de dados vinculado do BigQuery.

Para informações gerais sobre a Análise de registros, consulte Consultar e analisar registros com a Análise de 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. 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 alerta quando você quiser receber notificações sobre 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 alerta são eficazes quando você quer monitorar tendências nos dados de entrada de registro ao longo do tempo. No entanto, elas 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 registros com as políticas de alerta. Nesse cenário, você faz upgrade de um bucket de registros para usar a Análise de dados de registros e cria um conjunto de dados vinculado do BigQuery para esse bucket. Em seguida, use a Análise de dados de registros, que oferece suporte a consultas SQL, para consultar uma visualização de registros 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 com base 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 uma visualização de registro. 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 alertas 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 que foram recebidas 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 60 minutos mais recentes das entradas de registro.

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 incidente e envia notificações sobre ele por esses canais. Um incidente é 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 os problemas que causaram o incidente. É possível conferir o incidente usando o console do Google Cloud.

Tipos de avaliação para políticas de alertas com base em 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.

  • 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 no período de referência tiverem uma gravidade de 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 na coluna notify quando essa porcentagem excede 25%. Em seguida, crie uma condição, defina o tipo como Boolean e configure a condição 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 alerta e BigQuery

Quando uma política de alertas executa uma consulta SQL, ela é executada usando slots do BigQuery reservados no projeto do Google Cloud em que a política de alertas é 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, o bucket de registros que hospeda a visualização precisa ser configurado para ter um conjunto de dados do BigQuery vinculado. Os conjuntos de dados vinculados permitem que o BigQuery leia os dados no bucket de registros e realize funções do BigQuery nos dados retornados pela consulta SQL.

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: Visualizador de registros (roles/logging.viewer).
    • Para consultar todas as visualizações de registro em um projeto: Acessador de exibiçã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 registro.

    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, crie um conjunto de dados vinculado para ele.
    2. Configure slots reservados do BigQuery e os atribua ao seu projeto do Google Cloud.

  5. Para conseguir 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. Função de leitor de dados do BigQuery (roles/bigquery.dataViewer) no seu 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 notificações de incidentes. 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 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 Log Analytics, no editor de consultas, insira uma consulta SQL para uma visualização de registro.

    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 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 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 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 do alerta da sua política de alertas.

    1. Opcional: adicione rótulos de política 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 criar políticas de alerta de forma programática. O tipo Condition da sua política de alertas precisa ser conditionSql, que é uma instância de SqlCondition. Esse tipo de condição permite que as condições da sua 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 atender a um determinado limite.

Para conferir 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, ela introduz um atraso de 15 minutos para que as entradas de registro sejam propagadas para o 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 limites associados a políticas de alertas, consulte Limites de monitoramento.

Preços

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

A seguir