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.
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"]
}
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"
}
}
]
}
}
- 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"
}
]
}
}
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
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"
Criar documento de automação:
bash:
aws ssm create-document --name "restartInstance" --document-type "Automation" --content file://restartInstance.json
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
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)