Como usar htop e atop para análise de recursos em servidores

1. Introdução às ferramentas de monitoramento de recursos

Em ambientes de servidores Linux, a capacidade de monitorar e diagnosticar o uso de recursos é essencial para garantir estabilidade e desempenho. Duas ferramentas se destacam nesse contexto: htop e atop. Embora ambas forneçam informações sobre CPU, memória, disco e processos, suas abordagens são complementares.

O htop é uma ferramenta interativa de tempo real, ideal para visualizar instantaneamente o estado do sistema e identificar processos que consomem muitos recursos no momento. Já o atop é uma ferramenta que registra logs históricos do sistema, permitindo analisar o comportamento do servidor ao longo do tempo, mesmo após o problema ter ocorrido.

Cenários típicos de uso:
- Diagnóstico de picos: htop para ver o que está consumindo CPU agora; atop para descobrir o que causou um pico há 3 horas.
- Análise de desempenho: atop fornece métricas detalhadas de I/O, swap e CPU steal.
- Troubleshooting: htop para matar processos problemáticos; atop para investigar causas raiz.

Instalação básica:

# Debian/Ubuntu (apt)
sudo apt update
sudo apt install htop atop

# CentOS/RHEL (yum)
sudo yum install epel-release
sudo yum install htop atop

# Fedora (dnf)
sudo dnf install htop atop

2. Navegando e interpretando a interface do htop

Ao executar htop, você verá um layout dividido em seções:

  • Barras de CPU: mostram o uso de cada núcleo, com cores diferenciando processos de usuário (verde), sistema (vermelho), nice (azul) e I/O wait (laranja).
  • Barra de memória: verde para memória usada, azul para buffers/cache, laranja para swap.
  • Lista de processos: colunas com PID, usuário, prioridade, CPU%, memória%, tempo de execução e comando.

Navegação interativa:

Tecla Função
F1 Ajuda
F2 Configuração
F3 Buscar processo
F4 Filtro
F5 Modo árvore
F6 Ordenar por coluna
F9 Enviar sinal (kill)
F10 Sair

Ordenação e filtragem:
- Pressione F6 e selecione PERCENT_CPU para ordenar por uso de CPU.
- Use F4 e digite nginx para filtrar apenas processos do nginx.
- As setas direcionais permitem navegar entre processos e expandir árvores.

3. Funcionalidades avançadas do htop

Visualização em árvore (modo tree):
Pressione F5 para exibir processos em hierarquia pai-filho. Isso ajuda a identificar processos filhos que consomem recursos sem serem óbvios na lista plana.

Configuração de colunas personalizadas:
Pressione F2 e vá em "Columns". Você pode adicionar métricas como:
- IO_RBYTES e IO_WBYTES (bytes lidos/escritos)
- CTXT (mudanças de contexto)
- NLWP (número de threads)

Envio de sinais e alteração de prioridade:
- Selecione um processo e pressione F9 para enviar sinais como SIGTERM (15), SIGKILL (9) ou SIGSTOP (19).
- Pressione F7 para aumentar a prioridade (renice) ou F8 para diminuir.

# Exemplo: matar processo com PID 1234
# Selecione o processo, F9, escolha SIGKILL, Enter

4. Introdução ao atop e seus logs históricos

Diferente do htop, o atop coleta dados em intervalos regulares (padrão: 10 minutos) e os armazena em arquivos binários em /var/log/atop/. Isso permite "voltar no tempo" e analisar o estado do servidor em momentos específicos.

Estrutura de logs:

/var/log/atop/
├── atop_20250326
├── atop_20250327
├── atop_20250328
...

Exibição em tempo real vs. replay:

# Tempo real
atop

# Replay de log de 2 dias atrás
atop -r /var/log/atop/atop_20250325

# Navegar pelos intervalos: 't' avança, 'T' retrocede

Configuração de coleta:
O serviço atop.service (ou atopacct.service) coleta dados automaticamente. Para alterar o intervalo, edite /etc/default/atop:

INTERVAL=600  # 10 minutos (em segundos)

5. Interpretação das métricas do atop

O relatório do atop é denso em informações. Vamos decifrar suas principais seções:

Linha de CPU (primeira linha):

CPU  sys  user  irq  idle  wait  steal
  • sys: tempo do kernel
  • user: processos de usuário
  • wait: I/O wait (espera por disco)
  • steal: tempo "roubado" pelo hipervisor (importante em VMs)

Linha de memória:

MEM  tot  free  cache  buff  slab  dirty
  • cache: memória usada para cache de disco
  • dirty: páginas sujas aguardando escrita

Linha de disco:

DSK  sda  busy  read  write  avio
  • busy: percentual de tempo ocupado
  • avio: tempo médio de I/O (milissegundos) — valores acima de 20ms indicam lentidão

Comandos essenciais:

# Detalhar um intervalo específico
atop -r /var/log/atop/atop_20250327 -a

# Resumo por processo (atopsar)
atopsar -r /var/log/atop/atop_20250327 -P

# Ordenar por uso de CPU
atop -r /var/log/atop/atop_20250327 -o CPU

6. Casos práticos de diagnóstico com htop e atop

Caso 1: Detectando vazamento de memória

Com htop, ordene por MEM% e observe se um processo cresce continuamente:

# No htop, pressione F6, selecione MEM% e observe o processo suspeito

Com atop, analise o log histórico para ver o crescimento:

atop -r /var/log/atop/atop_20250327 -P python3 | head -20

Caso 2: Pico de CPU por cron job

Se o servidor ficou lento às 3h da manhã:

atop -r /var/log/atop/atop_20250327 -b 03:00 -e 03:10

Navegue com t e T para ver quais processos estavam ativos. Procure por comandos como backup.sh ou php artisan schedule:run.

Caso 3: Correlacionando lentidão de disco

No atop, observe a linha DSK:

DSK  sda  busy=85%  read=45  write=120  avio=35ms

Um avio acima de 20ms indica gargalo. Use atopsar -d para ver os processos com maior I/O:

atopsar -r /var/log/atop/atop_20250327 -d | head -10

7. Integração e automação do monitoramento

Script para captura periódica em servidores remotos:

#!/bin/bash
# coletar_atop_remoto.sh
SERVIDOR="user@servidor"
ssh $SERVIDOR "sudo atop -r /var/log/atop/atop_$(date +%Y%m%d) -P" > atop_relatorio_$(date +%Y%m%d).txt

Geração de relatório resumido com atopsar:

# Exportar para CSV
atopsar -r /var/log/atop/atop_20250327 -P -o csv > relatorio_cpu.csv

# Relatório de memória
atopsar -r /var/log/atop/atop_20250327 -m -o csv > relatorio_mem.csv

Combinação com SSH config:
Configure ~/.ssh/config para acesso simplificado:

Host servidor-prod
    HostName 192.168.1.100
    User admin
    IdentityFile ~/.ssh/id_rsa_prod

Depois:

ssh servidor-prod "sudo atop -r /var/log/atop/atop_20250327 -b 14:00 -e 14:30"

8. Boas práticas e limitações

Quando usar cada ferramenta:
- htop: diagnóstico imediato, matar processos, visualização interativa.
- atop: análise histórica, identificação de padrões, investigação de incidentes passados.
- vmstat/iostat: complementam com métricas específicas de memória virtual e I/O de disco.

Impacto no desempenho:
- htop é leve, consome ~1% de CPU.
- atop coleta a cada 10 minutos e ocupa ~1 MB por dia de log.
- Em servidores com milhares de processos, o atop pode ter overhead ao processar logs.

Configuração de alertas proativos:
Use scripts que analisam logs do atop e disparam alertas:

#!/bin/bash
# alerta_cpu.sh
THRESHOLD=90
CPU_USAGE=$(atopsar -r /var/log/atop/atop_$(date +%Y%m%d -d "1 day ago") -P | awk '{print $4}' | sort -n | tail -1)
if [ "$CPU_USAGE" -gt "$THRESHOLD" ]; then
    echo "Alerta: CPU atingiu $CPU_USAGE% no último dia" | mail -s "Alerta de CPU" admin@exemplo.com
fi

Limitações:
- atop não mostra conexões de rede por processo (use nethogs ou iftop).
- htop não persiste dados entre reinicializações.
- Ambos dependem de permissões root para acesso completo.


Referências