Capítulo 11.1 - Monitoreo del Sistema
Objetivos de Aprendizaje
Al final de este capítulo, usted será capaz de:
- Monitorear CPU, memoria, disco
- Utilizar top, htop, iotop
- Comprender las métricas del sistema
- Utilizar vmstat e iostat
- Configurar alertas básicas
Herramientas de Monitoreo
top - Tiempo Real
# Interfaz interactiva
top
# Opciones
top -u user1 # Por usuario
top -p 1234 # Proceso específico
top -d 2 # Actualización cada 2 segundos
Métricas mostradas:
- Load average
- Uso de CPU
- Memoria (RAM, swap)
- Procesos
htop - Versión Mejorada
# Interfaz con colores
htop
# Instalar si es necesario
sudo apt install htop
Ventajas:
- Interfaz intuitiva
- Navegación sencilla
- Barras de progreso
- Filtrado
iotop - I/O por Proceso
# Monitorear I/O de disco
sudo iotop
# Opciones
sudo iotop -o # Solo activos
sudo iotop -a # Acumulado
Métricas del Sistema
CPU
# Uso de CPU
top
htop
# Estadísticas de CPU
cat /proc/stat
mpstat # sysstat
# Load average
uptime
cat /proc/loadavg
# Interpretación:
# < número CPUs: OK
# = número CPUs: Uso completo
# > número CPUs: Sobrecarga
Memoria
# Vista general
free -h
# Detalles
cat /proc/meminfo
# Por proceso
ps aux --sort=-%mem | head
# Estadísticas
vmstat -s
Disco
# Espacio en disco
df -h
# Uso por directorio
du -sh /home/*
# Estadísticas de I/O
iostat -x 1
# Por proceso
sudo iotop
Herramientas Avanzadas
vmstat - Estadísticas del Sistema
# Estadísticas cada segundo
vmstat 1
# Columnas importantes:
# r: Procesos esperando CPU
# b: Procesos bloqueados
# swpd: Swap usado
# free: Memoria libre
# si/so: Swap in/out
# us/sy/id: CPU user/system/idle
iostat - Estadísticas de I/O
# Instalar
sudo apt install sysstat
# Estadísticas de I/O
iostat -x 1
# Columnas:
# %util: Uso de disco
# r/s, w/s: Lecturas/escrituras por segundo
# rkB/s, wkB/s: KB/s
sar - System Activity Reporter
# Historial de CPU
sar -u
# Historial de memoria
sar -r
# Historial de I/O
sar -b
# En tiempo real
sar -u 1 10 # CPU, 1 segundo, 10 veces
Scripts de Monitoreo
Monitoreo Básico
#!/bin/bash
# Script de monitoreo simple
echo "=== CPU ==="
top -bn1 | grep "Cpu(s)" | awk '{print $2}'
echo "=== Memoria ==="
free -h | grep Mem
echo "=== Disco ==="
df -h / | tail -1
echo "=== Load Average ==="
uptime
Monitoreo con Alertas
#!/bin/bash
# Monitoreo con 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 al ${CPU}%"
fi
# Memoria
MEM=$(free | grep Mem | awk '{printf "%.0f", $3/$2 * 100}')
if [ "$MEM" -gt "$THRESHOLD_MEM" ]; then
echo "ALERTA: Memoria al ${MEM}%"
fi
# Disco
DISK=$(df -h / | tail -1 | awk '{print $5}' | sed 's/%//')
if [ "$DISK" -gt "$THRESHOLD_DISK" ]; then
echo "ALERTA: Disco al ${DISK}%"
fi
Monitoreo con Cron
Tarea Programada
# /etc/cron.d/monitoring
# Monitoreo cada 5 minutos
*/5 * * * * root /usr/local/bin/monitor.sh >> /var/log/monitoring.log 2>&1
Script con 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 "Memoria: $(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"
Resumen
En este capítulo, usted ha aprendido:
Herramientas: top, htop, iotop, vmstat, iostat, sar
Métricas: CPU, memoria, disco, load average
Monitoreo: Scripts automáticos, alertas
Cron: Programación de monitoreo regular
Práctica: Supervisión continua, detección de problemas
Próximos Pasos
Capítulo 11.2: Gestión de Logs
Capítulo 11.3: Monitoreo de Crons y Alertas
Capítulo creado el: Diciembre 2024