Introducao

No cenario de infraestrutura em nuvem, monitorar a saude e os recursos das instancias EC2 e essencial. Um desafio comum para administradores de sistemas e garantir que o espaco em disco nao acabe, o que pode levar a degradacao do desempenho ou interrupcoes de servico. Embora a AWS ofereca ferramentas robustas de monitoramento como CloudWatch, elas podem gerar custos e complexidade adicionais, especialmente para configuracoes menores ou menos complexas.

Neste artigo, vamos explorar uma solucao simples e economica usando um script Bash que roda como um cron job em suas instancias EC2. Este script verificara o uso de disco na instancia e, se exceder um limite definido, enviara um alerta para um canal do Slack. Este metodo requer configuracao minima, sem ferramentas externas de monitoramento e mantem os custos baixos.


Por que Voce Precisa de Monitoramento de Disco?

Problemas de espaco em disco sao frequentemente negligenciados ate que levem a problemas como:

  • Falhas em Aplicacoes: Aplicacoes ou servicos podem falhar quando ha espaco em disco insuficiente para logs, escrita de dados ou arquivos temporarios.
  • Degradacao de Desempenho: Pouco espaco em disco pode causar lentidao no sistema, especialmente para servicos que dependem muito de operacoes de leitura/escrita.
  • Tempo de Inatividade: Sistemas criticos podem travar se processos essenciais nao puderem operar devido a discos cheios.

Monitorando Espaco em Disco Proativamente

Monitorar o uso de disco ajuda voce a evitar tais problemas:

  • Recebendo avisos antecipados quando o uso do disco ultrapassar um certo limite.
  • Tomando acoes preventivas (como aumentar o tamanho do disco ou limpar dados antigos) antes que se torne critico.

Embora o AWS CloudWatch ofereca uma maneira de monitorar metricas personalizadas como espaco em disco, ele gera custos adicionais e requer configuracao e integracao com suas instancias EC2. Um script Bash com um webhook do Slack oferece uma alternativa leve e de baixo custo.


A Solucao com Script Bash

Aqui esta a solucao usando um script Bash e um webhook do Slack. O script verifica o uso de disco do volume raiz (/) e envia um alerta para um canal do Slack se o uso exceder um limite definido. Tambem inclui informacoes como hostname, IP privado e IP publico da instancia EC2 para ajudar a identificar rapidamente a instancia afetada.

#!/bin/bash

THRESHOLD=85 # Define o limite de uso de disco (em %) SLACK_WEBHOOK_URL=“https://hooks.slack.com/services/seu/webhook/url"

Obter metadados EC2 para hostname, IP publico e IP privado

hostname=$(curl -s http://169.254.169.254/latest/meta-data/local-hostname) public_ip=$(curl -s http://169.254.169.254/latest/meta-data/public-ipv4) private_ip=$(curl -s http://169.254.169.254/latest/meta-data/local-ipv4)

Verificar uso de espaco em disco no diretorio raiz

disk_usage=$(df -h / | grep -v Filesystem | awk ‘{print $5}’ | sed ’s/%//’)

if [ “$disk_usage” -ge “$THRESHOLD” ]; then message=“Uso de disco na instancia EC2 ‘${hostname}’ esta em ${disk_usage}%. \nIP Privado: ${private_ip} \nIP Publico: ${public_ip}. \nPor favor, aumente o espaco em disco!”

payload=”{’text’: ‘$message’}" curl -X POST -H ‘Content-type: application/json’ –data “$payload” $SLACK_WEBHOOK_URL fi

Configuracao do Webhook do Slack

  • No seu workspace do Slack, navegue ate a pagina Slack API e crie um incoming webhook para o canal desejado.
  • Substitua SLACK_WEBHOOK_URL no script pela URL do webhook gerada.

Pros e Contras Desta Abordagem

Pros:

  1. Economico:
    • Nao ha necessidade de servicos AWS adicionais como CloudWatch, que podem gerar custos para metricas personalizadas. O unico custo envolvido e a propria instancia EC2 e a largura de banda minima para enviar notificacoes do Slack.
  2. Simples e Leve:
    • A solucao usa ferramentas nativas (Bash, curl, cron) disponiveis em quase todos os sistemas baseados em Linux. Nao ha necessidade de instalar agentes de monitoramento adicionais.
  3. Notificacoes Imediatas:
    • Usar o Slack como canal de notificacao garante que sua equipe receba alertas em tempo real sem precisar fazer login na AWS ou configurar dashboards de monitoramento mais complexos.
  4. Personalizavel:
    • Voce pode facilmente personalizar o script para verificar diferentes limites, monitorar diretorios adicionais ou modificar a frequencia das verificacoes.
  5. Baixa Sobrecarga:
    • Executar um cron job leve tem impacto minimo no desempenho do sistema. Isso e especialmente util para instancias EC2 menores.

Contras:

  1. Sem Monitoramento Centralizado:
    • Como o script roda em instancias EC2 individuais, nao ha um dashboard centralizado para visualizar o uso de disco em todas as instancias. Voce so e notificado quando um limite e ultrapassado, nao antes.
  2. Manutencao:
    • Se voce tem muitas instancias EC2, precisara implantar e manter este script em todas elas. Em contraste, solucoes centralizadas como AWS CloudWatch fornecem uma visao agregada com configuracao minima por instancia.
  3. Limitado ao Monitoramento de Disco:
    • Este script monitora apenas o uso de disco, enquanto servicos como CloudWatch podem monitorar varios aspectos da saude da EC2, como CPU, memoria e trafego de rede.
  4. Requer Integracao com Slack:
    • Se sua organizacao nao usa Slack, voce precisara integrar o script com outra plataforma de mensagens ou usar e-mail para notificacoes.

Conclusao

Este script Bash oferece uma solucao simples e de baixo custo para monitorar o espaco em disco da EC2 e enviar alertas para o Slack quando o uso do disco exceder um limite critico. E uma excelente solucao para organizacoes ou projetos que nao precisam da complexidade e custos associados ao AWS CloudWatch ou outras ferramentas abrangentes de monitoramento.

No entanto, e importante ponderar a simplicidade e a economia de custos contra as limitacoes desta abordagem, especialmente no que diz respeito ao gerenciamento centralizado e ao monitoramento mais amplo da saude do sistema. Para implantacoes de pequeno a medio porte ou ambientes com consciencia de custos, este pode ser um metodo altamente eficaz para garantir que suas instancias EC2 nao estejam ficando sem espaco em disco.

Gostaria de experimentar esta solucao ou explorar alternativas mais abrangentes? Deixe-me saber nos comentarios!


Deixe-me saber se precisar de mais alteracoes ou adicoes a este artigo!