Monitoramento de Desempenho em Linux: Guia para Diagnóstico de Saúde do Sistema

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:

  1. Identifique os processos consomem mais CPU com top ou ps aux --sort=-%cpu | head.
  2. Para processos multi-thread, use pidstat -t -p <PID> 2 para analisar threads individuais.
  3. 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).

  1. Use sar -r -f <arquivo> para confirmar a tendência de crescimento.
  2. Identifique o processo com pmap -x <PID> ou analisando /proc/<PID>/status.
  3. Para aplicações Java, jmap e visualvm podem ajudar. Para aplicações Python, tracemalloc ou objgraph são úteis.

Saturação de I/O

Disco com %util alto e tempos de await elevados causam lentidão generalizada.

  1. Use iostat para identificar o dispositivo sobrecarregado.
  2. Use iotop -aoP para encontrar os processos responsáveis.
  3. 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 (via cron) 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 sar com sistemas de alerta (Zabbix, Prometheus) para notificação proativa.

Tags: Linux Monitoramento de Desempenho top htop sar

Publicado em 7-9 05:48