Dez Comandos Essenciais para Monitoramento de Sistema Linux

Aprenda dez comandos de monitoramento Linux para verificar CPU, memória, disco, sockets de rede, carga e atividade histórica do sistema.

Dez Comandos Essenciais para Monitoramento de Sistema Linux

Quando um servidor Linux parece lento, você precisa de comandos que indiquem se a pressão está na CPU, memória, disco, rede ou carga. Estes comandos de monitoramento Linux ajudam você a passar de "o servidor está lento" para um próximo passo específico.

As dez ferramentas abaixo fornecem instantâneos rápidos, visualizações interativas e dados históricos. Use-as juntas em vez de confiar em um único número isoladamente.

1. top - Atividade de Processos em Tempo Real

O comando top fornece uma visão dinâmica e em tempo real de um sistema Linux em execução. Ele exibe um resumo das informações do sistema e uma lista de processos ou threads atualmente gerenciados pelo kernel Linux. Geralmente é a primeira ferramenta que os administradores usam para uma visão geral rápida da atividade do sistema.

Métricas Principais:

  • Uso da CPU: us (usuário), sy (sistema), ni (nice), id (ocioso), wa (espera de E/S), hi (IRQ de hardware), si (IRQ de software), st (tempo roubado).
  • Uso de memória: Total, livre, usada, buffers/cache.
  • Uso de swap: Total, livre, usado.
  • Lista de processos: PID, Usuário, PR (prioridade), NI (valor nice), VIRT (memória virtual), RES (memória residente), SHR (memória compartilhada), S (status), %CPU, %MEM, TIME+, COMANDO.

Uso Básico:

top

Exemplos Práticos:

  • Ordenar por uso de CPU: Enquanto estiver no top, pressione P.
  • Ordenar por uso de memória: Enquanto estiver no top, pressione M.
  • Mostrar processos de um usuário específico: Enquanto estiver no top, pressione u e digite o nome do usuário.
  • Matar um processo: Enquanto estiver no top, pressione k e digite o PID.

Dicas:

  • Pressione 1 para alternar a exibição de núcleos de CPU individuais.
  • Pressione q para sair do top.
  • Use top -bn1 para obter um único instantâneo (útil para scripts).

2. htop - Visualizador Interativo de Processos

htop é um visualizador de processos aprimorado, interativo e amigável que oferece muitas vantagens sobre o comando tradicional top. Ele apresenta uma interface mais atraente visualmente e navegável, facilitando o monitoramento e gerenciamento de processos.

Principais Vantagens:

  • Medidores visuais: O uso de CPU, memória e swap é exibido graficamente.
  • Lista rolável: Você pode rolar vertical e horizontalmente para ver todos os processos e suas linhas de comando completas.
  • Gerenciamento fácil de processos: Matar, renicear e outras ações podem ser realizadas diretamente usando teclas de função sem inserir PIDs.
  • Visualização em árvore: Os processos podem ser exibidos em formato de árvore para mostrar relacionamentos pai-filho.

Uso Básico:

# Pode exigir instalação:
# sudo apt install htop (Debian/Ubuntu)
# sudo yum install htop (RHEL/CentOS)
htop

Exemplos Práticos:

  • Filtrar processos: Pressione F4.
  • Matar um processo: Selecione o processo e pressione F9.
  • Ordenar por várias colunas: Use F6.

Dicas:

  • htop é geralmente preferido para monitoramento interativo devido à sua experiência de usuário superior.
  • Personalize as opções de exibição do htop (F2) para adequar ao seu fluxo de trabalho.

3. vmstat - Estatísticas de Memória Virtual

O comando vmstat relata informações sobre processos, memória, paginação, E/S de bloco, traps e atividade da CPU. É uma excelente ferramenta para identificar gargalos de memória ou alta E/S de disco.

Métricas Principais:

  • r: Número de processos esperando por tempo de execução.
  • b: Número de processos dormindo em sono ininterruptível (tipicamente E/S).
  • swpd: Quantidade de memória virtual usada.
  • free: Quantidade de memória ociosa.
  • si / so: Quantidade de memória trocada do disco / trocada para o disco.
  • bi / bo: Blocos recebidos de um dispositivo de bloco / blocos enviados para um dispositivo de bloco.
  • wa: Tempo gasto esperando pela conclusão de E/S.

Uso Básico:

vmstat 1 5 # Relatar a cada 1 segundo, 5 vezes

Exemplos Práticos:

  • Mostrar memória ativa/inativa: vmstat -a
  • Exibir slabinfo: vmstat -m
  • Mostrar estatísticas de disco: vmstat -d

Dicas:

  • Valores altos de si/so geralmente indicam pressão de memória e troca excessiva, o que pode degradar severamente o desempenho.
  • Uma porcentagem consistentemente alta de wa sugere um gargalo de E/S.

4. iostat - Estatísticas de E/S

iostat faz parte do pacote sysstat e relata utilização da CPU e estatísticas de E/S para dispositivos, partições e sistemas de arquivos de rede. É crucial para entender problemas de desempenho de disco.

Métricas Principais:

  • %user, %system, %iowait, %idle: Detalhamentos da utilização da CPU.
  • r/s / w/s: Leituras/gravações por segundo.
  • rkB/s / wkB/s: Kilobytes lidos/gravados por segundo.
  • await: Tempo médio (em milissegundos) para que as solicitações de E/S emitidas para o dispositivo sejam atendidas.
  • %util: Porcentagem do tempo decorrido durante o qual o dispositivo teve solicitações de E/S em andamento.

Uso Básico:

# Pode exigir instalação:
# sudo apt install sysstat (Debian/Ubuntu)
# sudo yum install sysstat (RHEL/CentOS)
iostat -xz 1 5 # Estatísticas estendidas, a cada 1 segundo, 5 vezes

Exemplos Práticos:

  • Monitoramento de dispositivo específico: iostat -xz /dev/sda 1
  • Exibir apenas utilização da CPU: iostat -c
  • Exibir apenas utilização do dispositivo: iostat -d

Dicas:

  • Um %util alto combinado com um tempo await alto geralmente aponta para um gargalo de E/S naquele dispositivo. Em SSDs modernos e armazenamento virtualizado, confirme com a latência da aplicação antes de assumir que o disco está saturado.
  • Compare rkB/s e wkB/s com r/s e w/s para entender o tamanho médio de E/S.

5. free - Uso de Memória

O comando free exibe a quantidade total de memória física livre e usada e espaço de swap no sistema, bem como os buffers e caches usados pelo kernel.

Métricas Principais:

  • total: Memória total instalada.
  • used: Memória usada (inclui buffers/cache).
  • free: Memória não utilizada.
  • shared: Memória usada por tmpfs (segmentos de memória compartilhada).
  • buff/cache: Memória usada por buffers do kernel e cache de página.
  • available: Uma estimativa de quanta memória está disponível para iniciar novos aplicativos, sem usar swap.

Uso Básico:

free -h # Saída legível para humanos

Exemplos Práticos:

  • Exibir memória em megabytes: free -m
  • Atualizar continuamente a cada 5 segundos: watch -n 5 free -h

Dicas:

  • A coluna available é a métrica mais importante para entender quanta memória está genuinamente livre para novos processos.
  • O Linux usa agressivamente a memória disponível para cache de disco, então um valor baixo de free é normal e muitas vezes desejável.

6. df - Uso de Espaço em Disco

O comando df relata a quantidade de espaço em disco usado e disponível em sistemas de arquivos. É essencial para monitorar a capacidade de armazenamento e prevenir cenários de disco cheio.

Métricas Principais:

  • Filesystem: O nome do sistema de arquivos.
  • Size: Tamanho total do sistema de arquivos.
  • Used: Quantidade de espaço em disco usado.
  • Avail: Quantidade de espaço em disco disponível.
  • Use%: Porcentagem de espaço em disco usado.
  • Mounted on: O ponto de montagem do sistema de arquivos.

Uso Básico:

df -h # Saída legível para humanos

Exemplos Práticos:

  • Mostrar uso de inodes: df -i (inodes são estruturas de metadados; ficar sem eles pode impedir a criação de arquivos mesmo com espaço livre).
  • Mostrar tipo de sistema de arquivos específico: df -hT -t ext4

Dicas:

  • Verifique regularmente Use% para evitar que sistemas de arquivos fiquem cheios, o que pode causar falhas de aplicativos e instabilidade do sistema.
  • O alto uso de inodes pode ser um problema com muitos arquivos pequenos.

7. du - Uso de Disco de Arquivos e Diretórios

O comando du estima o uso de espaço em arquivos. Enquanto df verifica o uso total do sistema de arquivos, du é usado para descobrir o tamanho de arquivos ou diretórios específicos, o que é crítico para identificar o que está consumindo espaço em disco.

Métricas Principais:

  • Tamanho total de arquivos ou diretórios especificados.

Uso Básico:

du -sh /var/log # Resumo, legível para humanos para o diretório /var/log

Exemplos Práticos:

  • Mostrar tamanhos de todos os subdiretórios (um nível de profundidade): du -h --max-depth=1 /home/usuario
  • Encontrar os maiores arquivos/diretórios: du -ah /caminho/para/verificar | sort -rh | head -n 10

Dicas:

  • Combine du com sort e head para identificar rapidamente os consumidores de espaço em disco.
  • Tenha cuidado ao executar du em diretórios grandes, pois pode consumir muitos recursos.

8. sar - Relator de Atividade do Sistema

sar é uma ferramenta poderosa do pacote sysstat que coleta, relata ou salva informações de atividade do sistema. Ao contrário de top ou vmstat que mostram instantâneos em tempo real, sar se destaca por fornecer dados históricos, tornando-o inestimável para análise de desempenho de longo prazo e planejamento de capacidade.

Principais Recursos:

  • Estatísticas de CPU: %user, %nice, %system, %iowait, %steal, %idle.
  • Estatísticas de memória: kbmemfree, kbmemused, kbbuffers, kbcached.
  • E/S de disco: tps, rd_sec/s, wr_sec/s.
  • Estatísticas de rede: rxpck/s, txpck/s, rxbyt/s, txbyt/s.
  • Média de carga, atividade de swap, atividade do kernel e muito mais.

Uso Básico:

# Relatar utilização da CPU a cada 1 segundo, 5 vezes:
sar -u 1 5
# Relatar atividade de disco:
sar -d
# Relatar utilização de memória:
sar -r
# Relatar estatísticas de rede:
sar -n DEV

Exemplos Práticos:

  • Visualizar um arquivo de atividade de CPU salvo: sar -u -f /var/log/sysstat/saDD em muitos sistemas baseados em Debian, ou /var/log/sa/saDD em muitos sistemas baseados em RHEL. Substitua DD pelo dia do mês.
  • Exibir todos os dados coletados para hoje: sar -A

Dicas:

  • Certifique-se de que o pacote sysstat esteja instalado e configurado para coletar dados regularmente para análise histórica.
  • sar pode ser esmagador; concentre-se em flags específicas (-u, -r, -d, -n) relevantes para sua investigação.

9. ss (Estatísticas de Socket) - Conexões de Rede

ss é um utilitário para investigar sockets. É uma substituição mais rápida e eficiente para o comando netstat mais antigo, fornecendo informações mais detalhadas sobre TCP, UDP e outros tipos de socket, incluindo seu estado, endereços locais/remotos e IDs de processo.

Métricas Principais:

  • Estado: ESTAB, LISTEN, TIME-WAIT, CLOSE-WAIT, etc.
  • Recv-Q / Send-Q: Os tamanhos das filas de recebimento e envio.
  • Endereço Local:Porta / Endereço Parceiro:Porta: Os endpoints locais e remotos.
  • Nome do Processo: O processo associado ao socket.

Uso Básico:

ss -tuln # TCP, UDP, escuta, portas numéricas

Exemplos Práticos:

  • Listar todas as conexões TCP: ss -t
  • Listar todas as conexões UDP: ss -u
  • Mostrar processos escutando em portas específicas: ss -tulnp | grep 80
  • Resumir estatísticas de socket: ss -s

Dicas:

  • Um alto número de sockets TIME-WAIT não é automaticamente ruim; pode ser normal em serviços TCP ocupados. Combine com exaustão de porta, conexões falhadas ou crescimento de fila antes de tratar como um problema.
  • Monitore Recv-Q e Send-Q para sinais de problemas de buffer de rede ou processamento lento de aplicativos.

10. uptime - Tempo de Atividade do Sistema e Média de Carga

O comando uptime mostra há quanto tempo o sistema está em execução, a hora atual, quantos usuários estão logados e as médias de carga do sistema para os últimos 1, 5 e 15 minutos.

Métricas Principais:

  • Hora atual: Autoexplicativo.
  • Uptime: Há quanto tempo o sistema está em execução.
  • Usuários: Número de usuários atualmente logados.
  • Média de carga: O número médio de processos que estão em um estado executável ou ininterruptível. Isso inclui processos que estão rodando na CPU, esperando pela CPU ou esperando por E/S de disco.
    • Média de carga de 1 minuto
    • Média de carga de 5 minutos
    • Média de carga de 15 minutos

Uso Básico:

uptime

Exemplos Práticos:

  • Frequentemente usado como uma verificação rápida de saúde para a ocupação geral de um servidor.

Dicas:

  • Compare a média de carga com o número de núcleos de CPU no seu sistema. Uma média de carga consistentemente maior que o número de núcleos de CPU geralmente indica um gargalo de CPU ou E/S.
  • Uma média de carga crescente ao longo do tempo (por exemplo, 1 minuto > 5 minutos > 15 minutos) sugere que o sistema está ficando mais ocupado.

Um Fluxo Simples de Solução de Problemas

Para um servidor lento, comece com uptime para verificar a carga, depois use top ou htop para encontrar processos ocupados. Verifique free -h e vmstat 1 5 para pressão de memória, iostat -xz 1 5 para latência de disco e ss -tulnp para serviços em escuta ou sockets com backup. Se o problema ocorreu antes, use sar para comparar a janela ruim com uma normal.

A conclusão é simples: cada comando responde a uma parte da história. Seu trabalho é alinhar as evidências de CPU, memória, disco e rede antes de reiniciar serviços ou redimensionar a máquina.