Assim como um check-up médico regular é essencial para a saúde humana, o monitoramento contínuo de servidores Linux é crucial para a estabilidade da infraestrutura. Quando usuários relatam lentidão ou travamentos, ter visibilidade proativa sobre o uso de CPU, memória e I/O pode prevenir falhas maiores. Este guia explora as ferramentas e métodos fundamentais para o monitoramento de desempenho no Linux, desde coletas em tempo real até a análise histórica e otimização de gargalos.
Ferramentas Básicas de Monitoramento em Tempo Real
Utilitários como top, htop, free e vmstat oferecem uma visão instantânea do estado atual do sistema, semelhante a um termômetro para métricas de saúde.
Monitoramento com top e htop
O top é uma ferramenta integrada ao Linux para monitoramento contínuo, enquanto o htop proporciona uma experiência visual aprimorada.
Para iniciar o top com atualizações a cada 5 segundos:
top -d 5
No painel superior, as linhas de CPU mostram:
- %us: tempo de CPU em processos do usuário.
- %sy: tempo de CPU em processos do kernel.
- %id: tempo ocioso. Um valor abaixo de 10% indica sobrecarga.
Na seção de memória, observe available em vez de free, pois inclui buffers/cache recuperáveis.
Dentro do top, pressione P para ordenar por uso de CPU ou M por memória. Para encerrar um processo problemático, pressione k e insira o PID.
O htop pode ser instalado e iniciado com:
sudo apt install htop # Debian/Ubuntu
sudo dnf install htop # RHEL/CentOS
htop
Ele oferece barras de uso coloridas, visualização em árvore de processos e ordenação por clique.
Análise Focada com free e vmstat
O comando free revela a quantidade real de memória utilizável:
free -h
No exemplo a seguir, available indica a memória livre real:
total usado livre compartilhado buff/cache disponível
Memória: 15Gi 6.2Gi 2.1Gi 384Mi 6.7Gi 8.3Gi
Swap: 15Gi 0B 15Gi
O vmstat monitora a atividade de memória e I/O ao longo do tempo:
vmstat 3 4
As colunas si (swap in) e so (swap out) devem permanecer próximas de zero. Valores elevados indicam pressão na memória. As colunas bi (block in) e bo (block out) refletem a atividade de disco.
Ferramentas Avançadas para Análise Histórica
Para investigar incidentes passados ou identificar tendências, ferramentas que armazenam dados históricas são indispensáveis.
sar: Relatório de Atividade do Sistema
O sar (System Activity Reporter) é parte do pacote sysstat e pode registrar métricas periodicamente.
Para coletar dados de CPU a cada 10 segundos, 5 vezes, salvando em um arquivo:
sar 10 5 -o /tmp/sar_data.cpu
Para visualizar os dados de CPU coletados anteriormente:
sar -f /tmp/sar_data.cpu -u
Use os parâmetros -s (hora de início) e -e (hora de fim) para recortar intervalos específicos:
sar -f /var/log/sa/sa25 -u -s 14:00:00 -e 15:00:00
Outros relatórios úteis incluem sar -r para memória e sar -b para atividade de I/O.
iostat: Estatísticas de E/S
O iostat é especializado em monitoramento de discos. A opção -x fornece métricas detalhadas:
iostat -x -d 2
Os indicadores críticos são:
- %util: porcentagem do tempo em que o disco estava ocupado. Valores acima de 80% consistentemente indicam saturação.
- await: tempo médio de espera (em milissegundos) parra requisições de I/O. Valores altos sugerem lentidão no dispositivo.
- r/s, w/s: número de operações de leitura e escrita por segundo.
nmon: Monitoramento e Relatórios
O nmon é uma ferramenta interativa que também gera logs em formato CSV para análise posterior.
nmon
Pressione c para CPU, m para memória, d para discos e n para rede.
Para gerar um relatório automático por 2 horas, com amostras a cada 30 segundos:
nmon -f -s 30 -c 240 -m /var/log/nmon/
O arquivo CSV gerado pode ser importado em planilhas para análise gráfica de tendências.
Diagnóstico e Resolução de Gargalos
Gargalo de CPU
Quando a CPU está sobrecarregada:
- Identifique os processos consomem mais CPU com
topoups aux --sort=-%cpu | head. - Para processos multi-thread, use
pidstat -t -p <PID> 2para analisar threads individuais. - Investigue a causa: código ineficiente (loops infinitos), alta demanda de processamento, ou falta de otimização.
Soluções podem incluir otimização de código, escalonamento horizontal (mais instâncias) ou alocação de mais recursos de CPU.
Vazamento de Memória
Sinais incluem uso de memória crescente ao longo do tempo e alta atividade de swap (si/so no vmstat).
- Use
sar -r -f <arquivo>para confirmar a tendência de crescimento. - Identifique o processo com
pmap -x <PID>ou analisando/proc/<PID>/status. - Para aplicações Java,
jmapevisualvmpodem ajudar. Para aplicações Python,tracemallocouobjgraphsão úteis.
Saturação de I/O
Disco com %util alto e tempos de await elevados causam lentidão generalizada.
- Use
iostatpara identificar o dispositivo sobrecarregado. - Use
iotop -aoPpara encontrar os processos responsáveis. - Avalie se a carga é de leitura ou escrita com
sar -b.
Soluções incluem: otimizar consultas de banco de dados, adicionar cache, migrar para SSDs, ou distribuir a carga em múltiplos discos (RAID, LVM).
Práticas Recomendadas e Armadilhas Comuns
- Correlacione Métricas: Alto uso de CPU combinado com alto
%wa(tempo de espera de I/O) indica que o disco, e não a CPU, é o gargalo real. - Mantenha Dados Históricos: Configure o
sysstat(viacron) para coletar dados automaticamente, permitindo análise retrospectiva. - Defina Limites Contextuais: Um servidor de banco de dados pode ter uso de CPU elevado de forma normal. Os limites devem refletir o perfil da carga de trabalho.
- Automatize Alertas: Integre ferramentas como
sarcom sistemas de alerta (Zabbix, Prometheus) para notificação proativa.