Alarmes e notificações do CloudWatch

Monitoramento e Solução de Problemas na AWS

John Q. Martin

Principal Consultant

O que são Alarmes do CloudWatch

 

Conceitos-chave

  • Monitora uma métrica por um período
  • Executa ações quando a métrica cruza um limite

 

Seis componentes centrais do alarme CloudWatch: métrica, limite, período, períodos de avaliação, pontos para alarme e ações

Monitoramento e Solução de Problemas na AWS

Estados do alarme

Os três estados do alarme CloudWatch: OK, ALARM e INSUFFICIENT_DATA

Diagrama de como um alarme CloudWatch muda de estado conforme chegam dados da métrica

Monitoramento e Solução de Problemas na AWS

Avaliação do alarme

 

  1. Coletar pontos em intervalos definidos
  2. Aplicar estatística (Average, Sum, Max, Min) no período
  3. Comparar o resultado ao limite
  4. Contar períodos de avaliação em violação
  5. Mudar estado se atingir o limiar de datapoints-to-alarm

 

Metric: CPUUtilization > 80%
Period: 5 min | 
Eval Periods: 3 | 
Datapoints to Alarm: 2 of 3

Period 1: 85% (breach) | 
Period 2: 75% (ok) | 
Period 3: 90% (breach)
Result: ALARM — 2 of 3 breached
Monitoramento e Solução de Problemas na AWS

Estratégias de avaliação

 

Três estratégias de avaliação do alarme: consecutiva, parcial e violação única, com trade-offs de sensibilidade

Monitoramento e Solução de Problemas na AWS

Tipos de ação e disparos do alarme

 

Disparos de ação

  • OK
  • ALARM
  • INSUFFICIENT_DATA

 

Tipos de ação

  • Notificação SNS
  • Auto Scaling
  • Ação EC2 (stop/terminate/reboot/recover)
  • Systems Manager
Monitoramento e Solução de Problemas na AWS

Comportamento com dados ausentes

 

Opções de comportamento para dados ausentes do alarme: notBreaching, breaching, ignore e missing

Monitoramento e Solução de Problemas na AWS

Criando um alarme padrão: AWS CLI

aws cloudwatch put-metric-alarm \
  --alarm-name HighCPUUtilization \
  --alarm-description "Alert when CPU exceeds 80%" \
  --metric-name CPUUtilization \
  --namespace AWS/EC2 \
  --statistic Average \
  --period 300 \
  --evaluation-periods 2 \
  --threshold 80 \
  --comparison-operator GreaterThanThreshold \
  --dimensions Name=InstanceId,Value=i-1234567890abcdef0 \
  --alarm-actions arn:aws:sns:us-east-1:123456789012:my-topic
Monitoramento e Solução de Problemas na AWS

Alarmes compostos: o que e por quê

Problema

  • Vários alarmes relacionados disparam separados = fadiga de alertas

Solução

  • Combine alarmes com operadores lógicos

Lógica de alarme composto combinando alarmes filhos com operadores AND, OR e NOT

Monitoramento e Solução de Problemas na AWS

Criando alarme composto: AWS CLI

aws cloudwatch put-composite-alarm \
  --alarm-name CriticalSystemHealth \
  --alarm-description "Critical when CPU and Memory both high" \
  --actions-enabled \
  --alarm-actions arn:aws:sns:us-east-1:123456789012:critical-alerts \
  --alarm-rule "ALARM(HighCPUAlarm) AND ALARM(HighMemoryAlarm)"
Exemplo de regra complexa
--alarm-rule "(ALARM(HighErrorRate) OR ALARM(HighLatency)) \
  AND NOT ALARM(MaintenanceMode)"
Monitoramento e Solução de Problemas na AWS

Estratégia para escolher limites

Quatro estratégias de seleção de limite: desvio da linha de base, limites de capacidade, metas de SLA e taxa de variação

Monitoramento e Solução de Problemas na AWS

Estratégia de alarme em múltiplos níveis

 

Resposta em múltiplos níveis com camadas de aviso, crítico e emergência roteadas para tópicos SNS separados

Exemplo: aviso de CPU em 75%, crítico em 90%, cada um com tópicos SNS diferentes

Monitoramento e Solução de Problemas na AWS

Alarmes de detecção de anomalias

aws cloudwatch put-metric-alarm \
  --alarm-name AnomalousTraffic \
  --comparison-operator LessThanLowerOrGreaterThanUpperThreshold \
  --metrics '[
    {"Id":"m1","MetricStat":{"Metric":{"Namespace":"AWS/ApplicationELB",
      "MetricName":"RequestCount"},"Period":300,"Stat":"Average"}},
    {"Id":"e1","Expression":"ANOMALY_DETECTION_BAND(m1, 2)"}
  ]'
  • Modelo de ML aprende o comportamento normal da métrica
  • Cria faixa de limite dinâmica (configurável)
  • Adapta-se a padrões diários/semanais
  • Reduz o ajuste manual de limites
Monitoramento e Solução de Problemas na AWS

Alarmes por recurso: Lambda e ALB

Alarmes para Lambda

Alarmes recomendados para Lambda monitorando contagem de erros, throttles e alta duração próxima ao limite de timeout

Alarmes para ALB

Alarmes recomendados para ALB monitorando tempo de resposta do destino, hosts unhealthy e contagem de erros 5xx

Monitoramento e Solução de Problemas na AWS

Boas práticas de gerenciamento de alarmes

  • Nomes: <Service>-<Metric>-<Resource>-<Severity>
  • Descrições: o que monitora, limite, dicas de solução, links de runbook
  • Tags: Environment, Team, Severity
  • Revisar mensalmente: ajustar limites, remover obsoletos, atualizar ações
aws cloudwatch set-alarm-state \
  --alarm-name MyAlarm \
  --state-value ALARM \
  --state-reason "Testing alarm notification"
Monitoramento e Solução de Problemas na AWS

Resumo do vídeo

  • Três estados: OK, ALARM, INSUFFICIENT_DATA
  • Estratégias de avaliação: consecutiva, parcial, violação única
  • Alarmes compostos combinam vários alarmes com AND, OR, NOT
  • Quatro estratégias de limite: estatística, capacidade, SLA, taxa de variação
  • Alertas em múltiplos níveis: aviso → crítico → emergência
  • Alarmes de recurso para Lambda (erros, throttles, duração) e ALB (5xx, latência)
Monitoramento e Solução de Problemas na AWS

Vamos praticar!

Monitoramento e Solução de Problemas na AWS

Preparing Video For Download...