EC2: Instâncias EC2 com baixa utilização

Esta regra identifica instâncias Amazon EC2 em estado running que apresentam:

  • Baixa utilização máxima de CPU (< 10%)

  • Baixo volume total de tráfego de saída de rede (< 5 MB)

  • Tempo mínimo desde a criação conforme período configurado

O objetivo é detectar instâncias subutilizadas que representam oportunidade de rightsizing ou desligamento.


Contexto da regra e impacto no negócio

Instâncias EC2 frequentemente permanecem em execução mesmo quando:

  • A aplicação foi descontinuada

  • A carga reduziu significativamente

  • O ambiente é utilizado apenas esporadicamente

  • Foram superdimensionadas inicialmente

Manter instâncias com baixa utilização gera:

  • Custo recorrente desnecessário

  • Consumo ineficiente de orçamento

  • Distorção da análise de capacidade

Essa regra atua como mecanismo de otimização contínua de infraestrutura.


Detalhamento técnico da regra

A regra executa análise regional das instâncias EC2 em execução.


Como a regra é executada

  1. Autentica na conta AWS por região.

  2. Lista instâncias com filtro:

  3. Aplica filtros de tag (inclusão/exclusão).

  4. Para cada instância:

    • Valida se atende ao critério de tempo mínimo desde criação.

    • Consulta métricas no CloudWatch para o período configurado:

      • CPUUtilization (Statistic: Maximum)

      • NetworkOut (Statistic: Sum)

    • Calcula:

      • CPU máxima registrada no período

      • Total de bytes de saída de rede

  5. A instância é sinalizada se atender simultaneamente:

    • CPU máxima < 10%

    • NetworkOut total < 5 MB


Lógica aplicada

Uma instância será sinalizada quando:


Campos analisados

Instância EC2:

  • InstanceId

  • InstanceType

  • LaunchTime

  • Architecture

  • Tags

  • Região

CloudWatch:

  • CPUUtilization (Maximum)

  • NetworkOut (Sum)


Parâmetros considerados na busca

APIs utilizadas:

  • ec2:DescribeInstances

  • cloudwatch:GetMetricStatistics

Configuração técnica:

  • Período analisado: self.checker.period.days

  • Agregação diária (86400 segundos)

  • Thresholds fixos:

    • CPU < 10%

    • NetworkOut < 5 MB


Período Avaliado (Filtro Temporal)

Período Avaliado (Filtro Temporal): A regra avalia:

  • A data de criação da instância (LaunchTime)

  • As métricas de CPU e NetworkOut dentro do intervalo correspondente aos dias definidos na configuração da regra.

Padrão é configurado para 15 dias, a regra analisará a utilização dos últimos 15 dias e considerará apenas instâncias criadas há pelo menos esse período.

Esse parâmetro de avaliação pode ser ajustado nas configurações das regras.


Intervalo de Análise

Execução padrão: a cada 8 horas.


Cálculo de Savings

O savings é baseado na possibilidade de:

  • Rightsizing (redução de tamanho da instância) ou

  • Desligamento da instância


Fórmula Conceitual

Para desligamento completo:

Para rightsizing:


Campo de custo utilizado

No Billing AWS:

  • Service: AmazonEC2

  • Usage Type:

    • BoxUsage

  • Line Item Type: Usage

  • Campo financeiro considerado:

    • lineitem/unblendedcost


Elementos considerados

  • Tipo da instância

  • Região

  • Horas em execução

  • Não considera Savings Plans ou RIs aplicadas (análise bruta de uso)


Exemplo aplicado ao Billing

Cenário:

  • Instância m5.xlarge

  • Custo mensal aproximado: $150

  • CPU máxima registrada: 6%

  • NetworkOut: 2 MB no período

Possível ação:

  • Rightsize para t3.medium ($35/mês)

Cálculo:

Savings anual:


Dicas de uso e boas práticas para o usuário

  • Validar padrão de uso sazonal antes de desligar.

  • Verificar picos fora do período analisado.

  • Avaliar recomendação de rightsizing em vez de exclusão.

  • Revisar dependências (Load Balancer, Auto Scaling).

  • Considerar uso de Instâncias Spot para cargas não críticas.

  • Cruzar análise com cobertura de RI/Savings Plan.

Possíveis exceções:

  • Instâncias de standby.

  • Servidores de contingência (DR).

  • Ambientes com uso extremamente esporádico.

Recomenda-se validação técnica antes da ação definitiva.

Last updated