Alarmes nos logs
É possível criar alarmes do CloudWatch que monitoram seus dados de log de duas maneiras:
-
Abordagem de alarme de log — crie um alarme de log que execute uma consulta do CloudWatch Logs Insights em um cronograma e avalie os resultados agregados diretamente em relação a um limite.
-
Abordagem de filtro de métrica — crie um filtro de métrica em um grupo de logs e, em seguida, crie um alarme de métrica padrão na métrica resultante.
Criar um alarme de log
Criar um alarme de log
É possível criar um alarme do CloudWatch que usa uma consulta do CloudWatch Logs Insights para monitorar dados de log diretamente. A consulta é executada em uma agenda usando uma Consulta Agendada, e o alarme avalia os resultados agregados em relação a um limite. Para obter mais informações sobre como os alarmes de log funcionam, consulte Alarmes de log.
Pré-requisitos
Antes de criar um alarme de log, você deve criar um perfil do IAM que conceda ao CloudWatch Logs permissão para executar a consulta agendada. Se você também quiser que as linhas de log sejam incluídas nas notificações do Amazon SNS, você deve criar um segundo perfil.
nota
Se você criar um alarme de log a partir do console do CloudWatch, o console o ajudará a criar esses perfis.
Função de execução de consulta agendada
A função de execução de consulta agendada permite que o CloudWatch Logs execute a consulta em seu nome. Essa função é necessária para que todos os alarmes de log executem a consulta agendada. A função deve confiar no serviço principal logs.amazonaws.com.
O exemplo mostrado a seguir mostra a política de confiança para a função de execução de consulta agendada.
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "Service": "logs.amazonaws.com" }, "Action": "sts:AssumeRole" } ] }
A seguir, um exemplo da política de permissões. Defina o escopo de Resource para os ARNs do grupo de logs que a consulta tem como alvo.
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "logs:StartQuery", "logs:StopQuery", "logs:GetQueryResults", "logs:DescribeLogGroups" ], "Resource": "arn:aws:logs:region:account-id:log-group:your-log-group:*" } ] }
Função de linhas de log (opcional)
A função de linhas de log permite que o CloudWatch busque linhas de log para notificações por e-mail do Amazon SNS. Essa função será necessária somente se você definir ActionLogLineCount com um valor maior que 0. A função deve confiar no serviço principal cloudwatch.amazonaws.com.
O exemplo a seguir mostra a política de confiança para a função de linhas de log.
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "Service": "cloudwatch.amazonaws.com" }, "Action": "sts:AssumeRole" } ] }
O exemplo a seguir mostra a política de permissões para a função de linhas de log. A permissão logs:GetQueryResults é necessária para buscar linhas de log. Defina o escopo de Resource para os ARNs do grupo de logs que a consulta tem como alvo.
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "logs:GetQueryResults" ], "Resource": "arn:aws:logs:region:account-id:log-group:your-log-group:*" } ] }
nota
Para visualizar os resultados da consulta de alarme de log no console do CloudWatch, o usuário ou o perfil do IAM que está acessando o console deve ter a permissão logs:GetScheduledQueryData. Essa é uma API somente para console e não está disponível por meio da AWS CLI ou do SDK. O CloudTrail registra essa API em log como um evento de dados, então você deve configurar uma trilha com registro de eventos de dados em log para capturá-la.
Como criar um alarme de log usando o console
As etapas desta seção explicam como usar o console do CloudWatch para criar um alarme de log. Também é possível usar a AWS CLI para criar um alarme de log. Para obter mais informações, consulte Como criar um alarme de log usando a AWS CLI.
Para criar um alarme de log
-
Abra o console do CloudWatch em https://console.aws.amazon.com/cloudwatch/
. -
No painel de navegação, selecione Alarmes.
-
Selecione Create alarm (Criar alarme).
-
Em Fonte de dados, selecione Logs.
-
Em Consulta de logs:
-
Escolha Criar consulta no Log Analytics. Isso abre a página do Log Analytics na qual você cria sua consulta.
-
Na página do Log Analytics, escreva sua consulta. Ao terminar, selecioneContinuar com os alarmes no canto superior direito para retornar ao console de alarmes.
-
Para Expressão de agregação, especifique como agregar os resultados da consulta para retornar um valor numérico para avaliação do alarme (por exemplo,
count(*)ouavg(latency) by endpoint).
-
-
Em Condições do alarme:
-
Para Sempre que o resultado agregado for..., selecione um operador de comparação.
-
Para do que…, insira o valor limite.
-
(Opcional) Em Configuração adicional:
-
Modifique Pontos de dados para alarme para especificar o número de resultados de violação necessários para acionar
ALARMdas últimas N consultas. -
Modifique Tratamento de dados ausentes para especificar como tratar os dados ausentes.
-
-
-
Em Cronograma:
-
Em Frequência de avaliação, escolha a frequência com a qual a consulta é executada (por exemplo, a cada 5 minutos).
-
Em Deslocamento da hora de início, a janela de retrospectiva para cada execução de consulta.
-
Para Deslocamento da hora de término (opcional), o final do intervalo de tempo da consulta como um deslocamento em segundos em relação à hora atual.
-
-
Em Permissão do IAM:
-
Especifique a função necessária para executar a consulta agendada. É possível usar selecionar criar uma nova função ou usar uma existente.
-
-
Escolha Próximo.
-
Em Configurar ações, ajuste as ações e notificações conforme necessário.
-
Para incluir linhas de log que acionam a transição de alarme nas notificações por e-mail do Amazon SNS, em Incluir resultados da consulta nas ações:
-
Adicione o Número de resultados da consulta para especificar o número de linhas de log a serem incluídas.
-
Crie ou escolha uma função existente que seja utlizada para obter os resultados de consulta necessários.
-
-
-
Escolha Próximo.
-
Insira um Nome e uma Descrição opcional (compatível com Markdown).
-
(Opcional) Adicione tags.
-
Escolha Próximo.
-
Em Pré-visualizar e criar, revise a configuração e escolha Criar alarme.
Como criar um alarme de log usando a AWS CLI
É possível usar o comando AWS CLI put-log-alarm para criar um alarme de log.
O exemplo mostrado a seguir cria um Alarme de Log que monitora a contagem de erros em um grupo de logs e faz a transição para o estado ALARM quando a contagem excede 100 em 3 de 5 execuções de consulta.
aws cloudwatch put-log-alarm \ --alarm-name "HighErrorCount" \ --alarm-description "Alarm when error count exceeds 100" \ --comparison-operator GreaterThanThreshold \ --threshold 100 \ --query-results-to-evaluate 5 \ --query-results-to-alarm 3 \ --treat-missing-data missing \ --alarm-actions "arn:aws:sns:region:account-id:topic-name" \ --scheduled-query-configuration '{ "QueryString": "fields @timestamp, @message | filter @message like /ERROR/", "LogGroupIdentifiers": ["/aws/lambda/my-function"], "ScheduledQueryRoleARN": "arn:aws:iam::account-id:role/ScheduledQueryRole", "AggregationExpression": "count(*)", "ScheduleConfiguration": { "ScheduleExpression": "rate(10 minutes)", "StartTimeOffset": 600 } }' \ --action-log-line-count 5 \ --action-log-line-role-arn "arn:aws:iam::account-id:role/LogLineRole"
A tabela a seguir descreve os principais parâmetros para o comando put-log-alarm.
| Parâmetro | Obrigatório | Descrição |
|---|---|---|
--alarm-name |
Sim | O nome do alarme. Deve conter somente caracteres UTF-8. |
--comparison-operator |
Sim | O operador de comparação para a avalição de limite. Valores válidos: GreaterThanThreshold, GreaterThanOrEqualToThreshold, LessThanThreshold, LessThanOrEqualToThreshold. |
--threshold |
Sim | O valor de limite numérico com o qual comparar. |
--query-results-to-evaluate |
Sim | O número de execuções de consultas recentes a serem avaliadas (N em M-out-of-N). |
--query-results-to-alarm |
Sim | O número de resultados de violação necessários para acionar ALARM (M em M-out-of-N). |
--treat-missing-data |
Não | Como tratar dados ausentes. Valores válidos: missing (padrão), notBreaching, breaching, ignore. |
--scheduled-query-configuration |
Sim | A configuração da consulta, incluindo string de consulta, identificadores de grupos de logs, ARN da função de consulta agendada, expressão de agregação e configuração de cronograma. |
--action-log-line-count |
Não | O número de linhas de log a serem incluídas nas notificações por e-mail do Amazon SNS (0 a 50). O padrão é 0. |
--action-log-line-role-arn |
Não | O ARN do perfil do IAM que confia em cloudwatch.amazonaws.com. Obrigatório se action-log-line-count for maior que 0. |
Como criar um alarme de log usando AWS CloudFormation
É possível utilizar o tipo de recurso AWS::CloudWatch::LogAlarm para criar um alarme de log em um modelo AWS CloudFormation.
O modelo de exemplo mostrado a seguir cria um alarme de log que monitora contagens de erros.
AWSTemplateFormatVersion: '2010-09-09' Resources: HighErrorCountAlarm: Type: AWS::CloudWatch::LogAlarm Properties: AlarmName: HighErrorCount AlarmDescription: Alarm when error count exceeds 100 ComparisonOperator: GreaterThanThreshold Threshold: 100 QueryResultsToEvaluate: 5 QueryResultsToAlarm: 3 TreatMissingData: missing ActionLogLineCount: 5 ActionLogLineRoleArn: !GetAtt LogLineRole.Arn ScheduledQueryConfiguration: QueryString: "fields @timestamp, @message | filter @message like /ERROR/" LogGroupIdentifiers: - /aws/lambda/my-function ScheduledQueryRoleARN: !GetAtt ScheduledQueryRole.Arn AggregationExpression: "count(*)" ScheduleConfiguration: ScheduleExpression: "rate(10 minutes)" StartTimeOffset: 600 AlarmActions: - !Ref AlarmSNSTopic
Criar um alarme do CloudWatch com base em um filtro de métrica de grupo de logs
O procedimento contido nesta seção descreve como criar um alarme com base em um filtro de métrica de grupo de logs. Com filtros de métrica, você pode procurar termos e padrões em dados de log à medida que os dados são enviados ao CloudWatch Logs. Para obter mais informações, consulte Criar métricas de eventos de logs usando filtros no Guia do usuário do Amazon CloudWatch Logs. Antes de criar um alarme com base em um filtro de métrica de grupo de logs, é necessário concluir as seguintes ações:
-
Crie um grupo de logs. Para obter mais informações, consulte Trabalhar com grupos de logs e fluxos de logs no Guia do usuário do Amazon CloudWatch Logs.
-
Crie um filtro de métrica. Para obter mais informações, consulte Criar um filtro de métrica para um grupo de logs no Guia do usuário do Amazon CloudWatch Logs.
Para criar um alarme com base em um filtro de métrica de grupo de logs
-
Abra o console do CloudWatch, em https://console.aws.amazon.com/cloudwatch/
. -
No painel de navegação, escolha Logs e escolha Log groups (Grupos de logs).
-
Escolha o grupo de logs que contém seu filtro de métrica.
-
Escolha Metric filters (Filtros de métrica).
-
Na guia de filtros de métrica, selecione a caixa do filtro de métrica no qual deseja basear seu alarme.
-
Selecione Criar alarme.
-
(Opcional) Em Metric (Métrica), edite Metric name (Nome da métrica), Statistic (Estatística) e Period (Período).
-
Em Conditions (Condições), especifique o seguinte:
-
Para Threshold type (Tipo de limite), escolha Static (Estático) ou Anomaly detection (Detecção de anomalias).
-
Em Whenever
your-metric-nameis... (Sempre que o nome da métrica for…), escolha Greater (Maior), Greater/Equal (Maior ou igual a), Lower/Equal (Menor ou igual a) ou Lower (Menor). -
Em than... (que…), especifique um número para o valor limite.
-
-
Escolha Additional configuration (Configuração adicional).
-
Em Data points to alarm (Pontos de dados para alarme), especifique quantos pontos de dados acionam seu alarme para entrar no estado
ALARM. Se você especificar valores correspondentes, o alarme passará para o estadoALARMse existirem nessa quantidade períodos consecutivos violando. Para criar um alarme M de um alarme N, especifique um número para o primeiro valor que seja menor do que o segundo valor que você especificou. Para obter mais informações, consulte Avaliação de alarme. -
Em Missing data treatment (Tratamento de dados ausentes), selecione uma opção para especificar como tratar dados ausentes quando o alarme for avaliado.
-
-
Escolha Próximo.
-
Em Notification (Notificação), especifique um tópico do Amazon SNS para notificar quando o alarme estiver no estado
ALARM,OKouINSUFFICIENT_DATA.-
(Opcional) Para enviar várias notificações para o mesmo estado de alarme ou para diferentes estados de alarme, escolha Add notification (Adicionar notificação).
-
(Opcional) Para não enviar notificações, escolha Remove (Remover).
-
-
Para que o alarme execute ações do Auto Scaling, EC2, Lambda ou Systems Manager, escolha o botão apropriado e selecione o estado do alarme e a ação a ser executada. Se você escolher uma função do Lambda como uma ação de alarme, especifique o nome da função ou o ARN e, opcionalmente, você poderá escolher uma versão específica da função.
Os alarmes só poderão executar ações do Systems Manager ao entrarem no estado ALARM. Para obter mais informações sobre ações do Systems Manager, consulte Configurar o CloudWatch para criar OpsItems a partir de alarmes e Criação de incidentes.
nota
Para criar um alarme que executa uma ação do SSM Incident Manager, é necessário ter determinadas permissões. Para obter mais informações, consulte Exemplos de políticas baseadas em identidade para o AWS Systems Manager Incident Manager.
-
Escolha Próximo.
-
Em Name e Description (Nome e Descrição), insira um nome e uma descrição para o seu alarme. O nome deve conter somente caracteres UTF-8, e não poderá conter caracteres de controle ASCII. A descrição pode incluir a formatação de markdown, que é exibida somente na guia Detalhes do alarme no console do CloudWatch. O markdown pode ser útil para adicionar links para runbooks ou outros recursos internos.
-
Em Preview and create (Pré-visualizar e criar), verifique se sua configuração está correta e escolha Create alarm (Criar alarme).