8  Monitoreo del Sistema

Las herramientas de monitoreo te permiten supervisar el rendimiento, recursos y estado general del sistema en tiempo real con visualizaciones modernas.

8.1 htop - Monitor interactivo de procesos

htop es una versión mejorada de top con interfaz colorida e interactiva.

8.1.2 Funciones útiles

8.1.2.1 Gestión de procesos

  • Space: Marcar proceso
  • U: Mostrar solo procesos de un usuario
  • t: Vista de árbol de procesos
  • H: Mostrar/ocultar hilos de usuario
  • K: Mostrar/ocultar hilos del kernel

8.1.2.2 Filtros y búsqueda

# Dentro de htop:
# F4 + "python" - Filtrar solo procesos de Python
# F3 + "nginx" - Buscar proceso nginx
# \ - Filtro incremental

8.1.3 Configuración personalizada

Archivo ~/.config/htop/htoprc:

# Campos a mostrar
fields=0 48 17 18 38 39 40 2 46 47 49 1
# Opciones
hide_kernel_threads=1
hide_userland_threads=1
show_thread_names=0
show_program_path=1
highlight_base_name=1
tree_view=1

8.2 fastfetch - Información del sistema moderna

fastfetch es el sucesor oficial y moderno de neofetch, ofreciendo mejor rendimiento y más opciones de personalización.

⚠️ Migración desde neofetch

neofetch ha sido marcado como obsoleto y ya no recibe actualizaciones. fastfetch es el reemplazo oficial recomendado por la comunidad.

# Desinstalar neofetch si está instalado
brew uninstall neofetch 2>/dev/null || true

# Instalar fastfetch (el reemplazo moderno)
brew install fastfetch

8.2.1 Uso básico

# Información completa del sistema
fastfetch

# Solo información específica
fastfetch --disable packages shell resolution de wm theme icons cursor

# Con logo personalizado
fastfetch --logo /path/to/image.png

# ASCII distro específico
fastfetch --logo arch

8.2.2 Configuración personalizada

Archivo ~/.config/fastfetch/config.jsonc:

{
    "logo": {
        "source": "macos",
        "padding": {
            "top": 2,
            "left": 4
        }
    },
    "display": {
        "separator": " -> ",
        "key": {
            "width": 10
        }
    },
    "modules": [
        "title",
        "separator",
        "os",
        "host", 
        "kernel",
        "uptime",
        "packages",
        "shell",
        "terminal",
        "cpu",
        "gpu",
        "memory",
        "disk"
    ]
}

8.2.3 Comparación de rendimiento

Herramienta Estado Velocidad Memoria Mantenimiento
fastfetch ✅ Activo ~50ms Bajo Activo
neofetch ❌ Obsoleto ~200ms Alto Abandonado
screenfetch ⚠️ Inactivo ~150ms Medio Mínimo

8.2.4 Scripts con fastfetch

8.2.4.1 System info script moderno

#!/bin/bash
# system-report.sh

echo "=== SYSTEM REPORT $(date) ==="
fastfetch --format json > /tmp/system_info.json

# Extraer información específica con jq
OS=$(jq -r '.os.name' /tmp/system_info.json)
KERNEL=$(jq -r '.kernel.release' /tmp/system_info.json)
CPU=$(jq -r '.cpu.name' /tmp/system_info.json)
MEMORY=$(jq -r '.memory.used + " / " + .memory.total' /tmp/system_info.json)

echo "OS: $OS"
echo "Kernel: $KERNEL" 
echo "CPU: $CPU"
echo "Memory: $MEMORY"

echo -e "\n=== DISK USAGE ==="
df -h | grep -E '^(/dev/)'

echo -e "\n=== TOP PROCESSES ==="
ps aux --sort=-%cpu | head -6

echo -e "\n=== NETWORK INTERFACES ==="
ip addr show | grep -E '^[0-9]+:|inet '

echo -e "\n=== RECENT LOGINS ==="
last -n 5

echo -e "\n=== SYSTEM LOAD ==="
uptime

8.3 Herramientas complementarias

8.3.1 iotop - Monitor de I/O

# Monitorear I/O por proceso
sudo iotop

# Solo procesos activos
sudo iotop -o

# Acumulativo
sudo iotop -a

8.3.2 nethogs - Monitor de red por proceso

# Monitor de ancho de banda
sudo nethogs

# Interfaz específica
sudo nethogs eth0

8.3.3 Monitoring script completo

#!/bin/bash
# system-monitor.sh

LOG_FILE="/var/log/system-monitor.log"
ALERT_THRESHOLD_CPU=80
ALERT_THRESHOLD_MEM=85
ALERT_THRESHOLD_DISK=90

log_message() {
    echo "[$(date '+%Y-%m-%d %H:%M:%S')] $1" | tee -a "$LOG_FILE"
}

check_cpu() {
    cpu_usage=$(top -bn1 | grep "Cpu(s)" | awk '{print $2}' | awk -F'%' '{print $1}')
    cpu_usage=${cpu_usage%.*}  # Remove decimal
    
    if [ "$cpu_usage" -gt "$ALERT_THRESHOLD_CPU" ]; then
        log_message "ALERT: CPU usage is ${cpu_usage}%"
        return 1
    fi
    return 0
}

check_memory() {
    mem_usage=$(free | grep Mem | awk '{printf("%.0f", $3/$2 * 100.0)}')
    
    if [ "$mem_usage" -gt "$ALERT_THRESHOLD_MEM" ]; then
        log_message "ALERT: Memory usage is ${mem_usage}%"
        return 1
    fi
    return 0
}

check_disk() {
    disk_usage=$(df / | tail -1 | awk '{print $5}' | sed 's/%//')
    
    if [ "$disk_usage" -gt "$ALERT_THRESHOLD_DISK" ]; then
        log_message "ALERT: Disk usage is ${disk_usage}%"
        return 1
    fi
    return 0
}

# Ejecutar verificaciones
log_message "Starting system check..."

check_cpu && log_message "CPU: OK"
check_memory && log_message "Memory: OK"
check_disk && log_message "Disk: OK"

log_message "System check completed"
Tips de monitoreo
  • Usa htop para debugging de rendimiento en tiempo real
  • fastfetch es útil para screenshots y reportes de sistema (reemplaza neofetch)
  • Combina estas herramientas con scripts para monitoreo automatizado

En el próximo capítulo cubriremos herramientas de texto y documentos.