Saltar al contenido principal

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​

  1. ¿Qué herramienta usar para cada tipo de monitoreo?

    • CPU: top, htop, mpstat
    • Memoria: free, vmstat
    • Disco: df, du, iotop
    • Red: ss, netstat, nethogs
  2. ¿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