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 kerneluser: processos de usuáriowait: 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 discodirty: páginas sujas aguardando escrita
Linha de disco:
DSK sda busy read write avio
busy: percentual de tempo ocupadoavio: 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
- Documentação oficial do htop — Guia completo com todas as teclas de atalho e opções de configuração do htop.
- Manual do atop (man page) — Documentação oficial com todos os parâmetros e exemplos de uso do atop.
- Tutorial de monitoramento com atop no DigitalOcean — Guia prático de instalação e interpretação de métricas do atop.
- Comparativo entre htop, atop e outras ferramentas no Linux — Artigo técnico comparando ferramentas de monitoramento e seus casos de uso ideais.
- Guia de diagnóstico de desempenho com atop no Red Hat — Documentação da Red Hat sobre uso avançado do atop para troubleshooting em servidores corporativos.