Lab 2.3 - Monitoreo Avanzado del Sistema
Objetivos
Al final de este laboratorio, usted será capaz de:
- Monitorear el rendimiento del sistema
- Analizar los recursos (CPU, RAM, disco, red)
- Utilizar herramientas de monitoreo avanzadas
- Crear scripts de monitoreo
- Configurar alertas
Requisitos previos
- Sistema Linux funcional
- Acceso root o sudo
- Herramientas: htop, iotop, nethogs (opcionales pero recomendadas)
Ejercicio 1: Instalación de Herramientas
Paso 1: Herramientas Básicas
# Mettre à jour
sudo apt update
# Installer outils monitoring
sudo apt install -y htop iotop nethogs sysstat
# Vérifier installation
which htop iotop nethogs sar
Ejercicio 2: Monitoreo de CPU
Paso 1: Información de CPU
# Informations CPU
lscpu
# Détails CPU
cat /proc/cpuinfo
# Nombre de CPUs
nproc
# Load average
uptime
cat /proc/loadavg
Paso 2: Uso de CPU
# Top processus CPU
top -bn1 | head -20
# Avec htop
htop
# Statistiques CPU
mpstat 1 5
# Par CPU
mpstat -P ALL 1 5
Paso 3: Script de CPU
# Script monitoring 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
Ejercicio 3: Monitoreo de Memoria
Paso 1: Vista General
# Mémoire
free -h
# Détails
vmstat -s
# Par processus
ps aux --sort=-%mem | head -10
Paso 2: Monitoreo Continuo
# Watch mémoire
watch -n 1 'free -h'
# Avec top processus
watch -n 1 'free -h && echo && ps aux --sort=-%mem | head -5'
Ejercicio 4: Monitoreo de Disco
Paso 1: Espacio en Disco
# Espace disponible
df -h
# Par répertoire
du -sh /* 2>/dev/null | sort -h
# Top 10 plus gros répertoires
du -h /home 2>/dev/null | sort -rh | head -10
Paso 2: I/O de Disco
# Statistiques I/O
iostat -x 1 5
# Par processus (iotop)
sudo iotop
# Statistiques détaillées
cat /proc/diskstats
Paso 3: Script de Disco
# Script monitoring disque
cat > disk-monitor.sh << 'EOF'
#!/bin/bash
echo "=== Espace Disque ==="
df -h
echo
echo "=== Top 10 Répertoires /home ==="
du -h /home 2>/dev/null | sort -rh | head -10
EOF
chmod +x disk-monitor.sh
./disk-monitor.sh
Ejercicio 5: Monitoreo de Red
Paso 1: Interfaces de Red
# Interfaces
ip addr show
# ou
ifconfig
# Statistiques
ip -s link show
# Par interface
cat /proc/net/dev
Paso 2: Conexiones
# Connexions actives
ss -tuln
# Écoute
ss -tulpn
# Par processus
sudo netstat -tulpn
Paso 3: Tráfico de Red
# nethogs (par processus)
sudo nethogs
# iftop (par connexion)
sudo iftop
# Statistiques
cat /proc/net/sockstat
Ejercicio 6: Monitoreo Completo
Paso 1: Script de Monitoreo
# Script complet
cat > system-monitor.sh << 'EOF'
#!/bin/bash
clear
echo "=== MONITORING SYSTÈME $(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 "=== MÉMOIRE ==="
free -h | grep -E 'Mem|Swap'
echo "Top Mémoire:"
ps aux --sort=-%mem | head -4 | tail -3
echo
echo "=== DISQUE ==="
df -h / | tail -1
echo
echo "=== RÉSEAU ==="
ss -tun | grep ESTAB | wc -l
echo "Connexions établies"
EOF
chmod +x system-monitor.sh
./system-monitor.sh
Paso 2: Monitoreo Continuo
# Watch toutes les 2 secondes
watch -n 2 ./system-monitor.sh
# Ou avec while
while true; do
clear
./system-monitor.sh
sleep 2
done
Ejercicio 7: Alertas Automáticas
Paso 1: Script de Alerta
# Script avec seuils
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 "ALERTE: CPU à ${CPU_USED}%"
fi
# Mémoire
MEM_USED=$(free | grep Mem | awk '{printf "%.0f", $3/$2 * 100}')
if [ "$MEM_USED" -gt "$THRESHOLD_MEM" ]; then
echo "ALERTE: Mémoire à ${MEM_USED}%"
fi
# Disque
DISK_USED=$(df -h / | tail -1 | awk '{print $5}' | sed 's/%//')
if [ "$DISK_USED" -gt "$THRESHOLD_DISK" ]; then
echo "ALERTE: Disque à ${DISK_USED}%"
fi
EOF
chmod +x system-alert.sh
./system-alert.sh
Paso 2: Cron para Monitoreo
# Ajouter au crontab
crontab -e
# Ajouter cette ligne (toutes les 5 minutes)
# */5 * * * * /chemin/vers/system-alert.sh >> /var/log/system-alerts.log 2>&1
Ejercicio 8: Informes
Paso 1: Informe Diario
# Script rapport
cat > daily-report.sh << 'EOF'
#!/bin/bash
REPORT="/var/log/daily-report-$(date +%Y%m%d).txt"
{
echo "=== RAPPORT SYSTÈME $(date) ==="
echo
echo "=== CPU ==="
lscpu | grep -E 'Model name|CPU\(s\)'
uptime
echo
echo "=== MÉMOIRE ==="
free -h
echo
echo "=== DISQUE ==="
df -h
echo
echo "=== TOP PROCESSUS ==="
ps aux --sort=-%cpu | head -6
echo
ps aux --sort=-%mem | head -6
} > "$REPORT"
echo "Rapport créé: $REPORT"
EOF
chmod +x daily-report.sh
sudo ./daily-report.sh
Verificación
Lista de Verificación
Verifique que usted puede:
- Monitorear CPU, memoria, disco, red
- Utilizar htop, iotop, nethogs
- Crear scripts de monitoreo
- Configurar alertas
- Generar informes
Preguntas de Reflexión
-
¿Qué herramienta usar para cada tipo de monitoreo?
- CPU: top, htop, mpstat
- Memoria: free, vmstat
- Disco: df, du, iotop
- Red: ss, netstat, nethogs
-
¿Por qué es importante monitorear regularmente?
- Detectar problemas antes de que se vuelvan críticos
- Planificar los recursos
- Optimizar el rendimiento
Próximos Pasos
- Módulo 3: Sistema de Archivos
- Módulo 4: Gestión de Procesos
- Módulo 11: Monitoreo y Logs (avanzado)
Laboratorio creado el: Diciembre 2024