Saltar al contenido principal

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