Como monitorar processos e recursos no Linux com ferramentas nativas

1. Introdução ao monitoramento nativo no Linux

O Linux oferece um conjunto robusto de ferramentas nativas para monitoramento de processos e recursos do sistema. Diferentemente de soluções de terceiros, essas ferramentas estão disponíveis em praticamente todas as distribuições, sem necessidade de instalação adicional, e consomem recursos mínimos. Comandos como top, ps, free, df, iostat e netstat formam a base do diagnóstico de desempenho e solução de problemas.

O monitoramento é essencial para identificar gargalos de CPU, memória insuficiente, disco lotado ou problemas de rede. Dominar essas ferramentas permite que administradores e desenvolvedores tomem decisões rápidas e precisas sobre a saúde do sistema.

2. Monitoramento de processos com ps e top

O comando ps (process status) é a ferramenta mais básica para listar processos em execução. As opções mais comuns são:

ps aux

Este comando exibe todos os processos do sistema com informações detalhadas: usuário, PID, %CPU, %MEM, tempo de execução e comando. A saída inclui colunas como:

  • USER: proprietário do processo
  • PID: identificador único
  • %CPU: uso percentual de CPU
  • %MEM: uso percentual de memória
  • VSZ: memória virtual usada
  • RSS: memória física residente

Para uma visão em árvore hierárquica:

ps -ef --forest

O comando top oferece monitoramento em tempo real com atualização contínua:

top

Dentro do top, teclas de atalho permitem interação:
- P: ordenar por uso de CPU
- M: ordenar por uso de memória
- k: matar um processo (solicita PID)
- q: sair

Para filtrar processos por usuário específico:

top -u usuario

3. Análise de uso de CPU e memória com top, htop e free

Embora top seja poderoso, htop oferece uma interface mais amigável com cores e navegação por setas. Para instalar:

sudo apt install htop   # Debian/Ubuntu
sudo yum install htop   # RHEL/CentOS

Para verificar memória RAM e swap rapidamente:

free -h

A saída mostra total, usada, livre, buffers/cache e disponível. A opção -h formata valores legíveis (GB, MB).

Para identificar os 5 processos que mais consomem CPU:

top -o %CPU -b -n 1 | head -20

A opção -o %CPU ordena por uso de CPU, -b ativa modo batch para scripts.

4. Monitoramento de disco e sistema de arquivos com df e du

Verificar espaço em disco é fundamental para evitar interrupções:

df -h

Mostra todas as partições montadas com uso percentual. Para verificar inodes (arquivos):

df -i

Partições com 100% de inodes podem falhar mesmo com espaço livre.

Para analisar quais diretórios consomem mais espaço:

du -sh /var/log

Para uma visão hierárquica:

du -h --max-depth=1 /home

Combinando com sort:

du -h --max-depth=1 / | sort -rh | head -10

Isso lista os 10 maiores diretórios na raiz.

5. Monitoramento de rede com netstat, ss e iftop

O netstat é clássico para verificar portas e conexões:

netstat -tuln
  • -t: conexões TCP
  • -u: conexões UDP
  • -l: apenas sockets ouvindo
  • -n: endereços numéricos

A alternativa moderna ss é mais rápida:

ss -tuln

Para tráfego em tempo real por interface:

sudo iftop -i eth0

Caso iftop não esteja disponível, nload é uma boa alternativa:

sudo nload eth0

6. Monitoramento de I/O de disco com iostat e iotop

O iostat faz parte do pacote sysstat. Para instalar:

sudo apt install sysstat   # Debian/Ubuntu

Monitoramento contínuo com intervalo de 1 segundo:

iostat -x 1

Métricas importantes:
- await: tempo médio de resposta (ms) — alto indica contenção
- svctm: tempo médio de serviço (ms)
- %util: percentual de tempo que o disco esteve ocupado

Para identificar processos específicos com alta I/O:

sudo iotop

Use as teclas o para mostrar apenas processos com I/O ativo e P para ordenar por I/O de leitura/escrita.

7. Logs e diagnóstico de processos com dmesg, journalctl e strace

Mensagens do kernel são acessadas via dmesg:

dmesg | tail -20

Útil para detectar erros de hardware ou disco.

Logs do systemd podem ser consultados por serviço:

journalctl -u nginx.service --since "1 hour ago"

Para rastrear chamadas de sistema de um processo em execução:

strace -p 1234

Substitua 1234 pelo PID. Para salvar em arquivo:

strace -p 1234 -o /tmp/strace.log

O strace é uma ferramenta poderosa para depuração, mas deve ser usada com cautela em produção, pois pode degradar o desempenho.

8. Automatização e scripts de monitoramento com ferramentas nativas

O comando watch repete um comando em intervalos regulares:

watch -n 2 'ps aux --sort=-%cpu | head -10'

Isso atualiza a cada 2 segundos mostrando os 10 processos com maior uso de CPU.

Para gerar alertas simples com scripts:

#!/bin/bash
USO=$(df -h / | awk 'NR==2 {print $5}' | tr -d '%')
if [ "$USO" -gt 90 ]; then
    echo "ALERTA: Disco raiz com $USO% de uso" | mail -s "Alerta de disco" admin@exemplo.com
fi

Para salvar logs de monitoramento automaticamente, configure um cron job:

*/5 * * * * /usr/bin/free -h >> /var/log/memoria.log

Isso registra o uso de memória a cada 5 minutos.

Referências