En capítulos anteriores has aprendido a monitorizar procesos (Capítulo 14), gestionar servicios (Capítulo 7), configurar redes (Capítulos 29 y 32) y trabajar con almacenamiento (Capítulos 4, 11, 26).
27.1. Introducción
Este nuevo capítulo unifica todas esas habilidades para que puedas evaluar el estado global de un sistema Linux, identificar cuellos de botella, analizar patrones de uso y aplicar un método sistemático de resolución de problemas.
Un administrador eficaz no solo reacciona ante fallos, sino que previene mediante la observación constante y el análisis de tendencias. Aquí verás herramientas integradas y metodologías para:
- Obtener una visión completa del sistema (CPU, memoria, E/S, red, procesos, logs).
- Detectar anomalías y correlacionar eventos.
- Aplicar un enfoque estructurado de diagnóstico y solución.
- Documentar y aprender de los incidentes.
Este capítulo es eminentemente práctico y se apoya en todo lo anterior; te servirá tanto para el examen LFCS como para tu día a día profesional.
27.2. Visión global del sistema
27.2.1. Primer vistazo con uptime, w, who y last
Antes de profundizar, conviene saber cuánto tiempo lleva encendido el sistema, cuántos usuarios hay conectados y la carga media.
uptime
# 14:23:45 up 10 days, 3:15, 2 users, load average: 0.18, 0.25, 0.30
Load average: promedio de procesos en cola de ejecución (o esperando E/S) en los últimos 1, 5 y 15 minutos. Un valor superior al número de CPUs lógicas indica sobrecarga.
wmuestra quién está conectado y qué está ejecutando.wholista sesiones activas.lastmuestra últimos inicios de sesión y reinicios.
27.2.2. Estado general con top o htop
Ya vistos en el Capítulo 14, pero aquí los usamos como punto de partida. top interactivo ofrece:
- Resumen de CPU, memoria, swap.
- Lista de procesos ordenados por consumo.
- Comandos para matar, renicear, filtrar.
El comando htop (si está instalado) es más amigable y permite navegar con el ratón. Recomendado para diagnóstico rápido.
27.2.3. Memoria y swap con free
free -h
total used free shared buff/cache available
Mem: 15Gi 4.2Gi 6.1Gi 123Mi 5.0Gi 10Gi
Swap: 2.0Gi 0.0Gi 2.0Gi
- available es la cifra clave: cuánta memoria queda realmente para nuevas aplicaciones (incluye caché liberable).
- Un uso elevado de swap con mucha memoria disponible indica un ajuste de
vm.swappinessinadecuado.
27.2.4. E/S con iostat, vmstat y iotop
iostat -xz 1muestra utilización de discos, tiempos de espera y saturación.vmstat 1combina CPU, memoria y E/S.iotop(requiere root) muestra E/S por proceso en tiempo real, comotoppara discos.
27.2.5. Red con ss, sar -n y iftop
ss -tulnppara ver sockets y procesos.sar -n DEV 1para tasas de transferencia por interfaz.iftoppara conexiones en vivo.
27.3. Análisis de procesos y recursos
27.3.1. Procesos que más consumen
Ya conoces ps y top, pero para reportes rápidos:
ps aux --sort=-%cpu | head
ps aux --sort=-%mem | head
También se puede usar pidstat:
pidstat -u 1 5 # CPU por proceso
pidstat -r 1 5 # memoria
pidstat -d 1 5 # E/S
27.3.2. Estados de procesos y zombies
Un proceso en estado Z (zombie) ha terminado pero su padre no ha leído su estado de salida. No consume recursos, pero muchos zombies indican un bug.
ps -eo stat,pid,comm | grep Z
Para eliminarlos, hay que finalizar al proceso padre o hacer que lea el estado (SIGCHLD).
27.3.3. Archivos abiertos y límites
lsof -p PIDlista archivos abiertos por un proceso.lsof +D /rutamuestra qué procesos usan un directorio (útil para saber por qué no se puede desmontar).cat /proc/PID/limitsmuestra los límites de recursos (archivos abiertos, memoria, etc.).
Si un proceso falla con “too many open files”, se debe aumentar el límite con ulimit -n (temporal) o en /etc/security/limits.conf (persistente), además del valor global fs.file-max.
27.4. Diagnóstico de cuellos de botella
27.4.1. CPU saturada
Síntomas: load average alta, %us o %sy cercanos al 100%, procesos lentos.
Herramientas: top, mpstat -P ALL, pidstat -u.
Causas y soluciones:
- Proceso legítimo consumiendo demasiado: renicear o investigar.
- Proceso zombi o mal programado: reiniciar servicio, aplicar parche.
- Interrupciones o kernel: revisar
%hi/%sientop, actualizar drivers.
27.4.2. Memoria insuficiente
Síntomas: uso de swap, páginas de memoria liberadas con frecuencia (si/so en vmstat), OOM killer activándose.
Herramientas: free -h, vmstat 1, sar -r, dmesg | grep -i oom.
Soluciones: añadir memoria, reducir caché de aplicaciones, ajustar vm.swappiness, limitar memoria con cgroups.
27.4.3. E/S de disco lenta
Síntomas: %iowait alto, procesos en estado D (espera de E/S), colas de disco (avgqu-sz) elevadas.
Herramientas: iostat -xz, iotop, pidstat -d, sar -d.
Soluciones: mover datos a discos más rápidos, distribuir carga, usar RAID, optimizar aplicaciones (índices en BD), revisar dirty_ratio.
27.4.4. Red saturada o con errores
Síntomas: pérdida de paquetes, latencia alta, rx/tx al límite.
Herramientas: ping, mtr, iperf3, sar -n DEV, ethtool -S, tcpdump.
Soluciones: aumentar ancho de banda, balancear tráfico, revisar cables/switch, ajustar buffers (net.core.rmem_max), calidad de servicio.
27.5. Resolución sistemática de problemas
27.5.1. Metodología de 6 pasos
- Identificar el problema: ¿qué falla exactamente? ¿desde cuándo?
- Recopilar información: logs, estado de servicios, configuración, monitorización.
- Formular hipótesis: posibles causas basadas en la evidencia.
- Probar hipótesis: cambiar una variable a la vez, usar entornos de prueba si es posible.
- Aplicar la solución: implementar de forma controlada y documentada.
- Verificar y prevenir: comprobar que se resuelve y establecer medidas para que no se repita.
27.5.2. Fuentes de información clave
- Logs del sistema:
/var/log/syslogo/var/log/messages/var/log/auth.logo/var/log/securejournalctl -u <servicio> -b
- Estado de servicios:
systemctl status,systemctl list-units --failed - Cambios recientes: historial de paquetes (
yum history,apt history), archivos modificados (find /etc -mtime -1) - Red: configuración, rutas, sockets, capturas.
27.5.3. Uso de logs para diagnóstico
journalctl es la herramienta central en systemd:
journalctl -xe # últimas entradas con explicación
journalctl -u sshd --since "1 hour ago"
journalctl -b -1 # logs del arranque anterior
journalctl -p err # solo errores
Los logs tradicionales se pueden examinar con tail -f, grep, awk, y logrotate los gestiona.
27.5.4. Herramientas de depuración avanzada
strace -p PID: rastrea llamadas al sistema de un proceso en vivo.ltrace: similar para bibliotecas.gdb: depurador para binarios.perf top: perfilado de rendimiento del kernel y aplicaciones.tcpdump/tshark: análisis de red.
27.6. Optimización y ajuste proactivo
27.6.1. Ajustes de sysctl relevantes
Ya vistos en el Capítulo 15, recordamos los más útiles:
vm.swappinessvm.vfs_cache_pressurevm.dirty_ratio,vm.dirty_background_rationet.core.somaxconn,net.ipv4.tcp_tw_reusefs.file-max
27.6.2. Límites de recursos con systemd
Se pueden limitar recursos por servicio en el archivo de unidad:
[Service]
MemoryLimit=512M
CPUQuota=200%
O usar systemctl set-property servicio MemoryMax=1G.
27.6.3. Programación de tareas de mantenimiento
logrotatepara rotar y comprimir logs.tmpwatchosystemd-tmpfilespara limpiar temporales.cronosystemd-timerspara tareas periódicas (backups, actualizaciones, informes).
27.7. Ejercicios prácticos
Diagnóstico general: ejecuta
uptime,free -h,vmstat 1 5,iostat -xz 1 5yss -tuln. Anota valores normales y posibles anomalías.Proceso problemático: lanza un proceso que consuma CPU (ej.
yes > /dev/null &). Localízalo contop,ps,pidstat. Cambia su prioridad conrenicey observa el efecto. Mátalo.Simular saturación de memoria: usa
stress-ng --vm 2 --vm-bytes 1G --timeout 60(instálalo si es necesario). Observa confree,vmstatydmesg | grep -i oom. Experimenta convm.swappiness.Archivos abiertos: abre un archivo con
tail -fy trata de desmontar el sistema de archivos que lo contiene. Usalsofpara identificar el proceso y soluciona.Análisis de logs: genera un error en un servicio (detén SSH, intenta conectar). Busca en
journalctly en logs tradicionales. Corrige y verifica.Cuello de botella de red: con
iperf3entre dos equipos, mide el ancho de banda. Limita la velocidad en un extremo (si puedes) y vuelve a medir.
27.8. Resumen y consejos para LFCS
- La monitorización y el diagnóstico son habilidades transversales: aparecen en casi todos los dominios del examen.
- Acostúmbrate a usar
journalctl,systemctl status,top,free,iostat,vmstatyssde forma natural. - La resolución de problemas es un proceso metódico: no adivines, investiga.
- Documenta los incidentes y las soluciones; te servirá para el futuro y para tus compañeros.
- En el examen, mantén la calma y utiliza el flujo: verificar servicio, logs, recursos, configuración, red.
Descubre más desde CIBERED
Suscríbete y recibe las últimas entradas en tu correo electrónico.
