DEV Community

Gerenciamento de alta latência com AWS CloudWatch e AWS Systems Manager

Em ambientes de produção, a alta latência nas instâncias EC2 pode afetar drasticamente a experiência do usuário e a performance da aplicação. Detectar e remediar essas questões rapidamente para manter a qualidade do serviço. Neste post, vamos abordar como utilizar o AWS CloudWatch e o AWS Systems Manager para monitorar e automatizar a resposta a problemas de latência.

Problema

Imagine que você é responsável por gerenciar um ambiente de produção que sofre intermitentemente com alta latência nas instâncias EC2, impactando a performance da aplicação e a experiência do usuário. O desafio é detectar essas situações rapidamente e aplicar ações corretivas automaticamente.

Ponto de partida

Vamos identificar o ponto central da problemática: alta latência nas instâncias EC2, afetando a performance da aplicação.

Objetivo final

O nosso objetivo é automatizar a detecção e correção de alta latência nas instâncias EC2, garantindo uma resposta rápida para minimizar o impacto na aplicação.

Táticas

Vamos dividir o problema em táticas que usaremos para alcançar o objetivo:

  • Monitoramento de latência para configurar monitoramento para detectar alta latência.

  • Alertas automáticos para criar alertas que notificam quando a latência ultrapassa um limite aceitável.

  • Remediação automatizada para implementar ações automatizadas para corrigir problemas de latência.

Ação

Para cada tática, implementaremos uma solução usando o AWS CloudWatch e o AWS Systems Manager.

Monitoramento de Latência:

O AWS CloudWatch pode monitorar métricas de latência de suas instâncias EC2.

  • Configurar métricas customizadas com o dever de enviar métricas de latência para o CloudWatch.
  • Criar alarmes para definir alarmes para notificar quando a latência ultrapassar um limite definido.

Image description

Alertas Automáticos:

  • Configurar o alerta no CloudWatch e criar um alarme que envia uma notificação para o SNS quando a latência estiver alta.

json:

{
  "AlarmName": "HighLatencyAlarm",
  "ComparisonOperator": "GreaterThanThreshold",
  "EvaluationPeriods": 1,
  "MetricName": "Latency",
  "Namespace": "AWS/EC2",
  "Period": 60,
  "Statistic": "Average",
  "Threshold": 100,
  "ActionsEnabled": true,
  "AlarmActions": ["arn:aws:sns:us-east-1:123456789012:HighLatencyTopic"]
}

Enter fullscreen mode Exit fullscreen mode

Remediação automatizada:
O AWS Systems Manager Automation pode executar runbooks para corrigir problemas automaticamente.

  • Vamos criar documentos de automação para definir runbooks que executem ações corretivas, como reiniciar a instância ou ajustar parâmetros de configuração.

json:

{
  "content": {
    "description": "Runbook to mitigate high latency by restarting EC2 instance",
    "schemaVersion": "0.3",
    "assumeRole": "arn:aws:iam::123456789012:role/AutomationRole",
    "mainSteps": [
      {
        "name": "restartInstance",
        "action": "aws:restartInstance",
        "inputs": {
          "InstanceId": "i-1234567890abcdef0"
        }
      }
    ]
  }
}

Enter fullscreen mode Exit fullscreen mode
  • Configurar associação de alarmes ao Runbook para vincular o alarme do CloudWatch ao runbook de automação para que ele seja executado automaticamente quando o alarme for acionado.

json:

{
  "Rule": {
    "Name": "HighLatencyAutoRemediation",
    "State": "ENABLED",
    "EventPattern": {
      "source": ["aws.cloudwatch"],
      "detail-type": ["CloudWatch Alarm State Change"],
      "detail": {
        "state": {
          "value": ["ALARM"]
        },
        "alarmName": ["HighLatencyAlarm"]
      }
    },
    "Targets": [
      {
        "Arn": "arn:aws:ssm:us-east-1:123456789012:automation-definition/restartInstance:1",
        "Id": "Target0"
      }
    ]
  }
}

Enter fullscreen mode Exit fullscreen mode

Solução

Deixarei aqui um exemplo de como configurar essas funcionalidades no AWS CloudWatch e AWS Systems Manager.

Configurar métricas customizadas:

bash:

aws cloudwatch put-metric-data --metric-name Latency --namespace "AWS/EC2" --value 120 --unit Milliseconds --dimensions InstanceId=i-1234567890abcdef0

Enter fullscreen mode Exit fullscreen mode

Configurar alerta no CloudWatch:

bash:

aws cloudwatch put-metric-alarm --alarm-name "HighLatencyAlarm" --metric-name "Latency" --namespace "AWS/EC2" --statistic "Average" --period 60 --threshold 100 --comparison-operator "GreaterThanThreshold" --evaluation-periods 1 --alarm-actions "arn:aws:sns:us-east-1:123456789012:HighLatencyTopic"

Enter fullscreen mode Exit fullscreen mode

Criar documento de automação:

bash:

aws ssm create-document --name "restartInstance" --document-type "Automation" --content file://restartInstance.json

Enter fullscreen mode Exit fullscreen mode

Configurar associação de alarmes ao Runbook

bash:

aws events put-rule --name "HighLatencyAutoRemediation" --event-pattern file://eventPattern.json
aws events put-targets --rule "HighLatencyAutoRemediation" --targets file://targets.json

Enter fullscreen mode Exit fullscreen mode

Para finalizar

Ao utilizar o AWS CloudWatch e o AWS Systems Manager, você pode monitorar e remediar automaticamente problemas de alta latência em suas instâncias EC2. Essa automação não só melhora a performance e a experiência do usuário, mas também libera sua equipe para focar em tarefas mais estratégicas para o negócio.

Top comments (0)