DEV Community

Carlos Filho for AWS Community Builders

Posted on

2 1

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.

Heroku

Simplify your DevOps and maximize your time.

Since 2007, Heroku has been the go-to platform for developers as it monitors uptime, performance, and infrastructure concerns, allowing you to focus on writing code.

Learn More

Top comments (0)

Best Practices for Running  Container WordPress on AWS (ECS, EFS, RDS, ELB) using CDK cover image

Best Practices for Running Container WordPress on AWS (ECS, EFS, RDS, ELB) using CDK

This post discusses the process of migrating a growing WordPress eShop business to AWS using AWS CDK for an easily scalable, high availability architecture. The detailed structure encompasses several pillars: Compute, Storage, Database, Cache, CDN, DNS, Security, and Backup.

Read full post