Os Dez Comandos Essenciais para Monitoramento de Sistemas Linux
Sistemas Linux são a espinha dorsal de inúmeras aplicações, serviços e componentes de infraestrutura em todo o mundo. Garantir sua estabilidade, desempenho e disponibilidade de recursos é uma responsabilidade crítica para qualquer administrador de sistema. O monitoramento proativo ajuda a identificar gargalos, antecipar problemas e manter a saúde ideal do sistema antes que os problemas aumentem.
Este artigo aprofunda-se nos dez comandos mais essenciais que todo administrador Linux deve dominar para análise de desempenho do sistema em tempo real e rastreamento de recursos. Essas ferramentas fornecem insights inestimáveis sobre vários aspectos do seu sistema, desde a utilização de CPU e memória até I/O de disco e atividade de rede. Ao compreender e usar regularmente esses comandos, você pode diagnosticar eficientemente problemas de desempenho, identificar consumidores de recursos e garantir que seus sistemas Linux funcionem sem problemas.
Seja para solucionar problemas em um servidor lento, otimizar a alocação de recursos ou simplesmente realizar verificações de saúde de rotina, os comandos abordados aqui formam a base para um monitoramento eficaz de sistemas Linux. Vamos explorar essas ferramentas indispensáveis e como aproveitá-las para um ambiente Linux mais saudável e com melhor desempenho.
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 rápida da atividade do sistema.
Métricas Chave:
- Uso de CPU:
us(usuário),sy(sistema),ni(nice),id(ocioso),wa(espera de I/O),hi(IRQ de hardware),si(IRQ de software),st(tempo de roubo). - Uso de memória: Total, livre, usado, 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+, COMMAND.
Uso Básico:
top
Exemplos Práticos:
- Ordenar por uso de CPU: Enquanto estiver no
top, pressioneP. - Ordenar por uso de memória: Enquanto estiver no
top, pressioneM. - Mostrar processos de usuário específico: Enquanto estiver no
top, pressioneue digite o nome de usuário. - Matar um processo: Enquanto estiver no
top, pressioneke digite o PID.
Dicas:
- Pressione
1para alternar a exibição de núcleos de CPU individuais. - Pressione
qpara sair dotop. - Use
top -bn1para obter um único instantâneo (útil para scripts).
2. htop - Visualizador Interativo de Processos
htop é um visualizador de processos aprimorado, interativo e fácil de usar que oferece muitas vantagens sobre o comando top tradicional. Ele apresenta uma interface mais visualmente atraente e navegável, tornando mais fácil monitorar e gerenciar processos.
Vantagens Chave:
- Medidores visuais: O uso de CPU, memória e swap são exibidos 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, renice 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 relações 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, então 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 se 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, I/O de bloco, traps e atividade da CPU. É uma excelente ferramenta para identificar gargalos de memória ou alto I/O de disco.
Métricas Chave:
r: Número de processos esperando por tempo de execução.b: Número de processos dormindo em sono ininterrupto (tipicamente I/O).swpd: Quantidade de memória virtual usada.free: Quantidade de memória ociosa.si/so: Quantidade de memória trocada para o disco / trocada do disco (swap in/out).bi/bo: Blocos recebidos de um dispositivo de bloco / blocos enviados para um dispositivo de bloco.wa: Tempo gasto esperando pela conclusão de I/O.
Uso Básico:
vmstat 1 5 # Relatar a cada 1 segundo, 5 vezes
Exemplos Práticos:
- Exibir todas as estatísticas em uma tabela:
vmstat -a - Mostrar memória ativa/inativa:
vmstat -a - Exibir slabinfo:
vmstat -m - Mostrar estatísticas de disco:
vmstat -d
Dicas:
- Valores altos de
si/sofrequentemente indicam pressão de memória e swapping excessivo, o que pode degradar severamente o desempenho. - Uma porcentagem
waconsistentemente alta sugere um gargalo de I/O.
4. iostat - Estatísticas de I/O
iostat faz parte do pacote sysstat e relata a utilização da CPU e estatísticas de I/O para dispositivos, partições e sistemas de arquivos de rede. É crucial para entender problemas de desempenho de disco.
Métricas Chave:
%user,%system,%iowait,%idle: Detalhamento da utilização da CPU.r/s/w/s: Leituras/escritas por segundo.rkB/s/wkB/s: Kilobytes lidos/escritos por segundo.await: Tempo médio (em milissegundos) para que as requisições de I/O emitidas ao dispositivo sejam atendidas.%util: Porcentagem do tempo da CPU durante o qual as requisições de I/O foram emitidas ao dispositivo.
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
%utilalto (próximo de 100%) combinado com um tempoawaitalto indica um gargalo de I/O nesse dispositivo. - Compare
rkB/sewkB/scomr/sew/spara entender o tamanho médio de I/O.
5. free - Uso de Memória
O comando free exibe a quantidade total de memória física e espaço de troca (swap) livre e usada no sistema, bem como os buffers e caches usados pelo kernel.
Métricas Chave:
total: Memória total instalada.used: Memória usada (inclui buffers/cache).free: Memória não usada.shared: Memória usada por tmpfs (segmentos de memória compartilhada).buff/cache: Memória usada por buffers do kernel e page cache.available: Uma estimativa de quanta memória está disponível para iniciar novas aplicações, sem swapping.
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
freebaixo é 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 nos sistemas de arquivos. É essencial para monitorar a capacidade de armazenamento e prevenir cenários de disco cheio.
Métricas Chave:
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 inode:
df -i(inodes são estruturas de metadados; esgotá-los 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 os sistemas de arquivos se encham, o que pode causar falhas de aplicação e instabilidade do sistema. - O alto uso de inode pode ser um problema com muitos arquivos pequenos.
7. du - Uso de Disco de Arquivos e Diretórios
O comando du estima o uso do espaço em arquivo. 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 Chave:
- Tamanho total dos 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/user - Encontrar os maiores arquivos/diretórios:
du -ah /path/to/check | sort -rh | head -n 10
Dicas:
- Combine
ducomsorteheadpara identificar rapidamente os grandes consumidores de espaço em disco. - Tenha cuidado ao executar
duem diretórios grandes, pois pode ser intensivo em 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.
Características Chave:
- Estatísticas da CPU:
%user,%nice,%system,%iowait,%steal,%idle. - Estatísticas de memória:
kbmemfree,kbmemused,kbbuffers,kbcached. - I/O 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:
- Ver a atividade da CPU de ontem:
sar -u -f /var/log/sysstat/saDD(substitua DD pelo dia do mês) - Exibir todos os dados coletados para hoje:
sar -A
Dicas:
- Certifique-se de que o pacote
sysstatesteja instalado e configurado para coletar dados regularmente para análise histórica. sarpode ser avassalador; concentre-se em flags específicas (-u,-r,-d,-n) relevantes para sua investigação.
9. ss (Estatísticas de Sockets) - Conexões de Rede
ss é um utilitário para investigar sockets. É um substituto mais rápido e eficiente para o comando netstat mais antigo, fornecendo informações mais detalhadas sobre TCP, UDP e outros tipos de sockets, incluindo seu estado, endereços locais/remotos e PIDs.
Métricas Chave:
- Estado:
ESTAB,LISTEN,TIME-WAIT,CLOSE-WAIT, etc. - Recv-Q / Send-Q: Os tamanhos das filas de recebimento e envio.
- Local Address:Port / Peer Address:Port: Os endpoints locais e remotos.
- Process Name: O processo associado ao socket.
Uso Básico:
ss -tuln # TCP, UDP, ouvindo, portas numéricas
Exemplos Práticos:
- Listar todas as conexões TCP:
ss -t - Listar todas as conexões UDP:
ss -u - Mostrar processos ouvindo em portas específicas:
ss -tulnp | grep 80 - Resumir estatísticas de socket:
ss -s
Dicas:
- Procure por um número incomumente alto de conexões
TIME-WAIT, o que pode indicar problemas do lado do cliente ou um servidor web mal configurado. - Monitore
Recv-QeSend-Qpara sinais de problemas de buffer de rede ou processamento lento da aplicação.
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 Chave:
- Hora atual: Autoexplicativo.
- Tempo de atividade: 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 estado executável ou ininterruptível. Isso inclui processos que estão sendo executados na CPU, esperando pela CPU ou esperando por I/O 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 rápida verificação 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 em seu sistema. Uma média de carga consistentemente maior que o número de núcleos de CPU frequentemente indica um gargalo de CPU ou I/O.
- 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.
Conclusão
Dominar esses dez comandos Linux essenciais é fundamental para qualquer administrador de sistema focado em monitorar e manter sistemas saudáveis e com bom desempenho. Desde a identificação rápida de picos de CPU com top e htop até o diagnóstico de gargalos de I/O de disco com iostat e pressão de memória com vmstat, essas ferramentas fornecem um kit de ferramentas abrangente para o gerenciamento proativo do sistema.
Incorporar regularmente esses comandos em sua rotina de monitoramento, entender sua saída e saber quando usar cada um deles o capacitará a solucionar problemas de forma eficiente, otimizar a utilização de recursos e garantir a confiabilidade de sua infraestrutura Linux. Continue explorando suas opções e integre-os em seus scripts para relatórios automatizados para elevar suas capacidades de administração de sistema. Feliz monitoramento!