Como configuro notificações de alarme personalizadas do CloudWatch?

2 minuto de leitura
0

Quero criar uma notificação de alarme do Amazon CloudWatch para uma mudança de estado para incluir os eventos de log que acionaram o alarme.

Breve descrição

É possível configurar filtros de métrica para corresponder a eventos de logs específicos, como eventos do AWS CloudTrail que contêm erros de AccessDenied ou UnauthorizedOperations. Em seguida, use o CloudWatch Logs para obter métricas. Para monitorar as métricas, crie um alarme do CloudWatch.

Por padrão, um alarme do CloudWatch que usa o Amazon Simple Notification Service (Amazon SNS) entrega uma notificação pré-formatada que contém detalhes de alarmes e métricas. Para determinar o que causou a mudança de estado, é possível incorporar os eventos de log que acionaram o alarme do CloudWatch na notificação.

Para invocar uma função do AWS Lambda quando o estado do alarme muda, use a integração direta de alarmes do CloudWatch com o Lambda. A função do Lambda pode então publicar uma notificação personalizada com os eventos de log relacionados.

Resolução

Pré-requisito: certifique-se de ter um alarme do CloudWatch que monitore uma métrica personalizada a partir de um filtro de métrica. Para mais informações, consulte Criar um alarme do CloudWatch com base em um limite estático.

Criar uma função do AWS Lambda

Configure uma função do Lambda para realizar as seguintes ações:

  • Analisar os detalhes do evento de alarme do CloudWatch, como nome do alarme, descrição, data e hora e motivo da mudança de estado. É possível incorporar os detalhes na mensagem personalizada.

  • Usar o CloudWatch Logs Insights para analisar dados de log no grupo de logs relacionado do CloudWatch.
    Quando o alarme muda de estado, a função do Lambda emite a chamada de API StartQuery para executar uma consulta no grupo de logs. O exemplo de consulta a seguir resume as chamadas de API do CloudTrail que falham com um erro AccessDenied ou UnauthorizedOperation:

    filter (errorCode="AccessDenied" or errorCode="UnauthorizedOperation")
    | stats count(*) as Hits by errorCode, errorMessage, sourceIPAddress, userIdentity.arn
    | sort Hits desc
  • Use GetQueryResults para recuperar os resultados correspondentes.

  • Use a API Publish do Amazon SNS para entregar uma mensagem personalizada que contém detalhes do alarme e resultados da consulta do CloudWatch Logs Insights.

Informações relacionadas

Como personalizo as mensagens de e-mail padrão do Amazon SNS?