Capítulo 11.1 - Monitoramento de Sistema
Objetivos de Aprendizagem
Ao final deste capítulo, você será capaz de:
- Monitorar CPU, memória, disco
- Utilizar top, htop, iotop
- Compreender as métricas do sistema
- Utilizar vmstat e iostat
- Configurar alertas básicos
Ferramentas de Monitoramento
top - Tempo Real
# Interface interativa
top
# Opções
top -u user1 # Por usuário
top -p 1234 # Processo específico
top -d 2 # Atualização a cada 2 segundos
Métricas exibidas:
- Load average
- Uso de CPU
- Memória (RAM, swap)
- Processos
htop - Versão Aprimorada
# Interface colorida
htop
# Instalar se necessário
sudo apt install htop
Vantagens:
- Interface intuitiva
- Navegação fácil
- Barras de progresso
- Filtragem
iotop - I/O por Processo
# Monitorar I/O de disco
sudo iotop
# Opções
sudo iotop -o # Somente ativos
sudo iotop -a # Acumulado
Métricas do Sistema
CPU
# Uso de CPU
top
htop
# Estatísticas de CPU
cat /proc/stat
mpstat # sysstat
# Load average
uptime
cat /proc/loadavg
# Interpretação:
# < número de CPUs: OK
# = número de CPUs: Uso total
# > número de CPUs: Sobrecarga
Memória
# Visão geral
free -h
# Detalhes
cat /proc/meminfo
# Por processo
ps aux --sort=-%mem | head
# Estatísticas
vmstat -s
Disco
# Espaço em disco
df -h
# Uso por diretório
du -sh /home/*
# Estatísticas de I/O
iostat -x 1
# Por processo
sudo iotop
Ferramentas Avançadas
vmstat - Estatísticas do Sistema
# Estatísticas a cada segundo
vmstat 1
# Colunas importantes:
# r: Processos aguardando CPU
# b: Processos bloqueados
# swpd: Swap utilizado
# free: Memória livre
# si/so: Swap in/out
# us/sy/id: CPU user/system/idle
iostat - Estatísticas de I/O
# Instalar
sudo apt install sysstat
# Estatísticas de I/O
iostat -x 1
# Colunas:
# %util: Utilização do disco
# r/s, w/s: Leituras/gravações por segundo
# rkB/s, wkB/s: KB/s
sar - System Activity Reporter
# Histórico de CPU
sar -u
# Histórico de memória
sar -r
# Histórico de I/O
sar -b
# Em tempo real
sar -u 1 10 # CPU, 1 segundo, 10 vezes
Scripts de Monitoramento
Monitoramento Básico
#!/bin/bash
# Script de monitoramento simples
echo "=== CPU ==="
top -bn1 | grep "Cpu(s)" | awk '{print $2}'
echo "=== Memória ==="
free -h | grep Mem
echo "=== Disco ==="
df -h / | tail -1
echo "=== Load Average ==="
uptime
Monitoramento com Alertas
#!/bin/bash
# Monitoramento com alertas
THRESHOLD_CPU=80
THRESHOLD_MEM=80
THRESHOLD_DISK=80
# CPU
CPU=$(top -bn1 | grep "Cpu(s)" | awk '{print $2}' | sed 's/%us,//')
if (( $(echo "$CPU > $THRESHOLD_CPU" | bc -l) )); then
echo "ALERTA: CPU em ${CPU}%"
fi
# Memória
MEM=$(free | grep Mem | awk '{printf "%.0f", $3/$2 * 100}')
if [ "$MEM" -gt "$THRESHOLD_MEM" ]; then
echo "ALERTA: Memória em ${MEM}%"
fi
# Disco
DISK=$(df -h / | tail -1 | awk '{print $5}' | sed 's/%//')
if [ "$DISK" -gt "$THRESHOLD_DISK" ]; then
echo "ALERTA: Disco em ${DISK}%"
fi
Monitoramento com Cron
Tarefa Agendada
# /etc/cron.d/monitoring
# Monitoramento a cada 5 minutos
*/5 * * * * root /usr/local/bin/monitor.sh >> /var/log/monitoring.log 2>&1
Script com Logging
#!/bin/bash
# /usr/local/bin/monitor.sh
LOG="/var/log/monitoring.log"
DATE=$(date '+%Y-%m-%d %H:%M:%S')
{
echo "=== $DATE ==="
echo "CPU: $(top -bn1 | grep 'Cpu(s)' | awk '{print $2}')"
echo "Memória: $(free -h | grep Mem | awk '{print $3"/"$2}')"
echo "Disco: $(df -h / | tail -1 | awk '{print $5}')"
echo "Load: $(uptime | awk -F'load average:' '{print $2}')"
echo "---"
} >> "$LOG"
Resumo
Neste capítulo, você aprendeu:
Ferramentas: top, htop, iotop, vmstat, iostat, sar
Métricas: CPU, memória, disco, load average
Monitoramento: Scripts automáticos, alertas
Cron: Agendamento de monitoramento regular
Prática: Monitoramento contínuo, detecção de problemas
Próximos Passos
Capítulo 11.2: Gestão de Logs
Capítulo 11.3: Monitoramento de Crons e Alertas
Capítulo criado em: Dezembro 2024