Pular para o conteúdo principal

Lab 2.3 - Monitoramento Avançado de Sistema

Objetivos​

Ao final deste lab, você será capaz de:

  • Monitorar o desempenho do sistema
  • Analisar os recursos (CPU, RAM, disco, rede)
  • Utilizar ferramentas de monitoramento avançadas
  • Criar scripts de monitoramento
  • Configurar alertas

Pré-requisitos​

  • Sistema Linux funcional
  • Acesso root ou sudo
  • Ferramentas: htop, iotop, nethogs (opcionais, mas recomendadas)

Exercício 1: Instalação das Ferramentas​

Etapa 1: Ferramentas Básicas​

# Atualizar
sudo apt update

# Instalar ferramentas de monitoramento
sudo apt install -y htop iotop nethogs sysstat

# Verificar instalação
which htop iotop nethogs sar

Exercício 2: Monitoramento de CPU​

Etapa 1: Informações da CPU​

# Informações da CPU
lscpu

# Detalhes da CPU
cat /proc/cpuinfo

# Número de CPUs
nproc

# Load average
uptime
cat /proc/loadavg

Etapa 2: Utilização da CPU​

# Top processos de CPU
top -bn1 | head -20

# Com htop
htop

# Estatísticas da CPU
mpstat 1 5

# Por CPU
mpstat -P ALL 1 5

Etapa 3: Script de CPU​

# Script de monitoramento de CPU
cat > cpu-monitor.sh << 'EOF'
#!/bin/bash
echo "=== CPU Info ==="
lscpu | grep -E 'Model name|CPU\(s\)|Thread|Core'
echo
echo "=== Load Average ==="
uptime
echo
echo "=== Top 5 CPU ==="
ps aux --sort=-%cpu | head -6
EOF

chmod +x cpu-monitor.sh
./cpu-monitor.sh

Exercício 3: Monitoramento de Memória​

Etapa 1: Visão Geral​

# Memória
free -h

# Detalhes
vmstat -s

# Por processo
ps aux --sort=-%mem | head -10

Etapa 2: Monitoramento Contínuo​

# Watch memória
watch -n 1 'free -h'

# Com top processos
watch -n 1 'free -h && echo && ps aux --sort=-%mem | head -5'

Exercício 4: Monitoramento de Disco​

Etapa 1: Espaço em Disco​

# Espaço disponível
df -h

# Por diretório
du -sh /* 2>/dev/null | sort -h

# Top 10 maiores diretórios
du -h /home 2>/dev/null | sort -rh | head -10

Etapa 2: I/O de Disco​

# Estatísticas de I/O
iostat -x 1 5

# Por processo (iotop)
sudo iotop

# Estatísticas detalhadas
cat /proc/diskstats

Etapa 3: Script de Disco​

# Script de monitoramento de disco
cat > disk-monitor.sh << 'EOF'
#!/bin/bash
echo "=== Espaço em Disco ==="
df -h
echo
echo "=== Top 10 Diretórios /home ==="
du -h /home 2>/dev/null | sort -rh | head -10
EOF

chmod +x disk-monitor.sh
./disk-monitor.sh

Exercício 5: Monitoramento de Rede​

Etapa 1: Interfaces de Rede​

# Interfaces
ip addr show
# ou
ifconfig

# Estatísticas
ip -s link show

# Por interface
cat /proc/net/dev

Etapa 2: Conexões​

# Conexões ativas
ss -tuln

# Escuta
ss -tulpn

# Por processo
sudo netstat -tulpn

Etapa 3: Tráfego de Rede​

# nethogs (por processo)
sudo nethogs

# iftop (por conexão)
sudo iftop

# Estatísticas
cat /proc/net/sockstat

Exercício 6: Monitoramento Completo​

Etapa 1: Script de Monitoramento​

# Script completo
cat > system-monitor.sh << 'EOF'
#!/bin/bash
clear
echo "=== MONITORAMENTO DE SISTEMA $(date) ==="
echo

echo "=== CPU ==="
echo "Load: $(uptime | awk -F'load average:' '{print $2}')"
echo "Top CPU:"
ps aux --sort=-%cpu | head -4 | tail -3
echo

echo "=== MEMÓRIA ==="
free -h | grep -E 'Mem|Swap'
echo "Top Memória:"
ps aux --sort=-%mem | head -4 | tail -3
echo

echo "=== DISCO ==="
df -h / | tail -1
echo

echo "=== REDE ==="
ss -tun | grep ESTAB | wc -l
echo "Conexões estabelecidas"
EOF

chmod +x system-monitor.sh
./system-monitor.sh

Etapa 2: Monitoramento Contínuo​

# Watch a cada 2 segundos
watch -n 2 ./system-monitor.sh

# Ou com while
while true; do
clear
./system-monitor.sh
sleep 2
done

Exercício 7: Alertas Automáticos​

Etapa 1: Script de Alerta​

# Script com limites
cat > system-alert.sh << 'EOF'
#!/bin/bash
THRESHOLD_CPU=80
THRESHOLD_MEM=80
THRESHOLD_DISK=80

# CPU
CPU_IDLE=$(mpstat 1 1 | tail -1 | awk '{print $NF}')
CPU_USED=$(echo "100 - $CPU_IDLE" | bc)
if (( $(echo "$CPU_USED > $THRESHOLD_CPU" | bc -l) )); then
echo "ALERTA: CPU em ${CPU_USED}%"
fi

# Memória
MEM_USED=$(free | grep Mem | awk '{printf "%.0f", $3/$2 * 100}')
if [ "$MEM_USED" -gt "$THRESHOLD_MEM" ]; then
echo "ALERTA: Memória em ${MEM_USED}%"
fi

# Disco
DISK_USED=$(df -h / | tail -1 | awk '{print $5}' | sed 's/%//')
if [ "$DISK_USED" -gt "$THRESHOLD_DISK" ]; then
echo "ALERTA: Disco em ${DISK_USED}%"
fi
EOF

chmod +x system-alert.sh
./system-alert.sh

Etapa 2: Cron para Monitoramento​

# Adicionar ao crontab
crontab -e

# Adicionar esta linha (a cada 5 minutos)
# */5 * * * * /caminho/para/system-alert.sh >> /var/log/system-alerts.log 2>&1

Exercício 8: Relatórios​

Etapa 1: Relatório Diário​

# Script de relatório
cat > daily-report.sh << 'EOF'
#!/bin/bash
REPORT="/var/log/daily-report-$(date +%Y%m%d).txt"

{
echo "=== RELATÓRIO DE SISTEMA $(date) ==="
echo
echo "=== CPU ==="
lscpu | grep -E 'Model name|CPU\(s\)'
uptime
echo
echo "=== MEMÓRIA ==="
free -h
echo
echo "=== DISCO ==="
df -h
echo
echo "=== TOP PROCESSOS ==="
ps aux --sort=-%cpu | head -6
echo
ps aux --sort=-%mem | head -6
} > "$REPORT"

echo "Relatório criado: $REPORT"
EOF

chmod +x daily-report.sh
sudo ./daily-report.sh

Verificação​

Checklist​

Verifique se você consegue:

  • Monitorar CPU, memória, disco, rede
  • Utilizar htop, iotop, nethogs
  • Criar scripts de monitoramento
  • Configurar alertas
  • Gerar relatórios

Perguntas para Reflexão​

  1. Qual ferramenta usar para cada tipo de monitoramento?

    • CPU: top, htop, mpstat
    • Memória: free, vmstat
    • Disco: df, du, iotop
    • Rede: ss, netstat, nethogs
  2. Por que é importante monitorar regularmente?

    • Detectar problemas antes que se tornem críticos
    • Planejar recursos
    • Otimizar o desempenho

Próximos Passos​

  • Módulo 3: Sistema de Arquivos
  • Módulo 4: Gerenciamento de Processos
  • Módulo 11: Monitoramento e Logs (avançado)

Lab criado em: Dezembro 2024