vps-linux/Artigo

    Monitorar CPU, RAM e disco na VPS

    Monitorar a VPS proativamente evita surpresas: disco cheio derruba todos os containers, CPU em 100% por horas indica processo malicioso ou loop infinito, RAM no limite causa OOM killer matando processos aleatórios. Com as ferramentas certas, você recebe alerta antes que o problema afete os usuários.

    Monitoramento em tempo real: htop

    htop é o monitor interativo padrão para Linux — mostra CPU, RAM, processos e permite matar processos diretamente:

    bash
    # Instalar htop
    sudo apt install -y htop
    
    # Executar
    htop
    
    # Atalhos úteis no htop:
    # F6 / > — ordenar por coluna (CPU%, MEM%, etc.)
    # F9      — matar processo (escolha SIGTERM ou SIGKILL)
    # F5      — modo árvore (mostra hierarquia de processos)
    # Space   — marcar processo para ação em lote
    # u       — filtrar por usuário
    
    # Ver uso de CPU e memória sem interface interativa
    top -bn1 | grep -E "Cpu|Mem|Swap"
    
    # Processos que mais consomem CPU agora
    ps aux --sort=-%cpu | head -10
    
    # Processos que mais consomem memória
    ps aux --sort=-%mem | head -10

    Uso de disco: df e du

    Disco cheio é a causa silenciosa mais comum de falhas em VPS. Monitore regularmente:

    bash
    # Espaço livre por partição (formato humano)
    df -h
    
    # Espaço livre apenas da partição raiz
    df -h /
    
    # Encontrar os diretórios mais pesados
    du -sh /* 2>/dev/null | sort -rh | head -10
    du -sh /var/* 2>/dev/null | sort -rh | head -10
    
    # Encontrar arquivos grandes (> 100 MB)
    find / -xdev -size +100M -printf '%s %p
    ' 2>/dev/null \
      | sort -rn | numfmt --to=iec --field=1 | head -20
    
    # Uso de disco por container Docker
    docker system df
    docker system df -v   # detalhado
    Dica
    Volumes Docker e imagens não utilizadas são frequentemente a maior causa de disco cheio em VPS de desenvolvimento. docker system prune -af --volumes limpa tudo não utilizado.

    Alertas automáticos com scripts

    Configure alertas por e-mail ou webhook quando CPU, RAM ou disco atingirem limites:

    bash
    # Script de monitoramento — /opt/check-resources.sh
    cat > /opt/check-resources.sh << 'SCRIPT'
    #!/bin/bash
    WEBHOOK_URL="https://hooks.slack.com/services/..."  # ou URL do n8n
    HOSTNAME=$(hostname)
    THRESHOLD_DISK=85
    THRESHOLD_CPU=90
    THRESHOLD_MEM=90
    
    # Verificar disco
    DISK_USAGE=$(df / | awk 'NR==2 {print $5}' | tr -d '%')
    if [ "$DISK_USAGE" -gt "$THRESHOLD_DISK" ]; then
      curl -s -X POST "$WEBHOOK_URL" \
        -H "Content-Type: application/json" \
        -d "{"text": "⚠️ DISCO em $HOSTNAME: ${DISK_USAGE}% usado"}"
    fi
    
    # Verificar RAM
    MEM_USAGE=$(free | awk '/^Mem:/ {printf "%.0f", $3/$2*100}')
    if [ "$MEM_USAGE" -gt "$THRESHOLD_MEM" ]; then
      curl -s -X POST "$WEBHOOK_URL" \
        -H "Content-Type: application/json" \
        -d "{"text": "⚠️ RAM em $HOSTNAME: ${MEM_USAGE}% usada"}"
    fi
    SCRIPT
    
    chmod +x /opt/check-resources.sh
    
    # Executar a cada 5 minutos via cron
    echo "*/5 * * * * /opt/check-resources.sh" | crontab -

    Netdata: painel visual de monitoramento

    Netdata é um painel web completo com gráficos em tempo real, sem configuração manual de métricas:

    bash
    # Instalar Netdata via script oficial
    curl https://get.netdata.cloud/kickstart.sh > /tmp/netdata-kickstart.sh
    sh /tmp/netdata-kickstart.sh --stable-channel
    
    # Acessar o painel em: http://IP_DA_VPS:19999
    
    # Para proteger com Nginx (sem expor a porta 19999):
    # No nginx.conf:
    # location /netdata/ {
    #     proxy_pass http://127.0.0.1:19999/;
    #     auth_basic "Restrito";
    #     auth_basic_user_file /etc/nginx/.htpasswd;
    # }
    
    # Criar senha para autenticação básica
    sudo apt install apache2-utils -y
    sudo htpasswd -c /etc/nginx/.htpasswd admin
    Dica
    Netdata coleta 1000+ métricas por segundo com <1% de CPU overhead. A versão gratuita (open-source) inclui alertas configuráveis e dashboards históricos de até 1 hora.

    Monitorar containers Docker

    Além do sistema, monitore o consumo de recursos por container:

    bash
    # Snapshot de uso de todos os containers
    docker stats --no-stream
    
    # Monitoramento contínuo (atualiza a cada segundo)
    docker stats
    
    # Uso de memória detalhado por container
    docker stats --format "table {{.Name}}	{{.MemUsage}}	{{.MemPerc}}	{{.CPUPerc}}"
    
    # Eventos Docker (start, stop, die, OOM)
    docker events --filter type=container
    
    # Ver se algum container foi morto por OOM
    docker inspect nome_do_container | grep -A5 "OOMKilled"
    # OOMKilled: true = container foi morto por falta de memória
    Dica
    "OOMKilled: true" no inspect do container significa que o kernel matou o processo por falta de RAM. Solução: adicione mais memória à VPS ou configure limites de memória por container no docker-compose.yml para evitar que um container consuma toda a RAM disponível.

    $ runstack deploy --plan starter

    Não quer configurar manualmente?

    Não quer configurar manualmente? Implante o VPS em menos de 3 minutos com a Runstack. Infraestrutura da OPEN DATACENTER, com servidores no Brasil.

    Perguntas frequentes