Los Diez Comandos Esenciales para la Monitorización de Sistemas Linux
Los sistemas Linux son la columna vertebral de innumerables aplicaciones, servicios y componentes de infraestructura en todo el mundo. Garantizar su estabilidad, rendimiento y disponibilidad de recursos es una responsabilidad crucial para cualquier administrador de sistemas. La monitorización proactiva ayuda a identificar cuellos de botella, anticipar problemas y mantener una salud óptima del sistema antes de que los problemas se agraven.
Este artículo profundiza en los diez comandos más esenciales que todo administrador de Linux debe dominar para el análisis del rendimiento del sistema en tiempo real y el seguimiento de recursos. Estas herramientas proporcionan información invaluable sobre diversos aspectos de su sistema, desde la utilización de la CPU y la memoria hasta la E/S de disco y la actividad de red. Al comprender y utilizar regularmente estos comandos, puede diagnosticar eficientemente problemas de rendimiento, identificar consumidores excesivos de recursos y asegurar que sus sistemas Linux funcionen sin problemas.
Ya sea que esté solucionando problemas de un servidor lento, optimizando la asignación de recursos o simplemente realizando comprobaciones de salud rutinarias, los comandos cubiertos aquí forman la base de una monitorización efectiva del sistema Linux. Exploremos estas herramientas indispensables y cómo aprovecharlas para un entorno Linux más saludable y con mejor rendimiento.
1. top - Actividad de Procesos en Tiempo Real
El comando top proporciona una vista dinámica y en tiempo real de un sistema Linux en ejecución. Muestra un resumen de la información del sistema y una lista de los procesos o hilos gestionados actualmente por el kernel de Linux. A menudo es la primera herramienta a la que recurren los administradores para obtener una visión general rápida de la actividad del sistema.
Métricas Clave:
- Uso de CPU:
us(usuario),sy(sistema),ni(nice),id(inactivo/idle),wa(espera de E/S),hi(IRQ de hardware),si(IRQ de software),st(tiempo robado). - Uso de memoria: Total, libre, utilizada, buffers/caché.
- Uso de Swap: Total, libre, utilizada.
- Lista de procesos: PID, User (Usuario), PR (prioridad), NI (valor nice), VIRT (memoria virtual), RES (memoria residente), SHR (memoria compartida), S (estado), %CPU, %MEM, TIME+, COMMAND (Comando).
Uso Básico:
top
Ejemplos Prácticos:
- Ordenar por uso de CPU: Estando en
top, presioneP. - Ordenar por uso de memoria: Estando en
top, presioneM. - Mostrar procesos de un usuario específico: Estando en
top, presioneuy luego escriba el nombre de usuario. - Terminar un proceso (Kill): Estando en
top, presioneke ingrese el PID.
Consejos:
- Presione
1para alternar la visualización de núcleos de CPU individuales. - Presione
qpara salir detop. - Use
top -bn1para obtener una única instantánea (útil para scripts).
2. htop - Visor de Procesos Interactivo
htop es un visor de procesos mejorado, interactivo y fácil de usar que ofrece muchas ventajas sobre el comando tradicional top. Presenta una interfaz más atractiva visualmente y navegable, lo que facilita la monitorización y gestión de procesos.
Ventajas Clave:
- Medidores visuales: El uso de CPU, memoria y swap se muestra gráficamente.
- Lista desplazable: Puede desplazarse vertical y horizontalmente para ver todos los procesos y sus líneas de comando completas.
- Fácil gestión de procesos: Las acciones de terminar (Kill), cambiar prioridad (renice) y otras se pueden realizar directamente usando teclas de función sin ingresar PIDs.
- Vista de árbol: Los procesos se pueden mostrar en formato de árbol para mostrar las relaciones padre-hijo.
Uso Básico:
# Puede requerir instalación:
# sudo apt install htop (Debian/Ubuntu)
# sudo yum install htop (RHEL/CentOS)
htop
Ejemplos Prácticos:
- Filtrar procesos: Presione
F4. - Terminar un proceso (Kill): Seleccione el proceso, luego presione
F9. - Ordenar por varias columnas: Use
F6.
Consejos:
- Generalmente se prefiere
htoppara la monitorización interactiva debido a su experiencia de usuario superior. - Personalice las opciones de visualización de
htop(F2) para adaptarlas a su flujo de trabajo.
3. vmstat - Estadísticas de Memoria Virtual
El comando vmstat informa sobre procesos, memoria, paginación, E/S de bloques, traps y actividad de CPU. Es una herramienta excelente para identificar cuellos de botella de memoria o alta E/S de disco.
Métricas Clave:
r: Número de procesos esperando tiempo de ejecución.b: Número de procesos durmiendo en suspensión ininterrumpible (típicamente E/S).swpd: Cantidad de memoria virtual utilizada.free: Cantidad de memoria inactiva.si/so: Cantidad de memoria intercambiada desde el disco (swapped in) / intercambiada hacia el disco (swapped out).bi/bo: Bloques recibidos de un dispositivo de bloques / bloques enviados a un dispositivo de bloques.wa: Tiempo dedicado a esperar la finalización de la E/S.
Uso Básico:
vmstat 1 5 # Informar cada 1 segundo, 5 veces
Ejemplos Prácticos:
- Mostrar todas las estadísticas en una tabla:
vmstat -a - Mostrar memoria activa/inactiva:
vmstat -a - Mostrar slabinfo:
vmstat -m - Mostrar estadísticas de disco:
vmstat -d
Consejos:
- Los valores altos de
si/soa menudo indican presión de memoria e intercambio excesivo (swapping), lo que puede degradar gravemente el rendimiento. - Un porcentaje
waconsistentemente alto sugiere un cuello de botella de E/S.
4. iostat - Estadísticas de E/S
iostat forma parte del paquete sysstat e informa sobre la utilización de la CPU y las estadísticas de E/S para dispositivos, particiones y sistemas de archivos de red. Es crucial para comprender los problemas de rendimiento del disco.
Métricas Clave:
%user,%system,%iowait,%idle: Desgloses de la utilización de la CPU.r/s/w/s: Lecturas/escrituras por segundo.rkB/s/wkB/s: Kilobytes leídos/escritos por segundo.await: Tiempo promedio (en milisegundos) que tardan en ser atendidas las solicitudes de E/S emitidas al dispositivo.%util: Porcentaje de tiempo de CPU durante el cual se emitieron solicitudes de E/S al dispositivo.
Uso Básico:
# Puede requerir instalación:
# sudo apt install sysstat (Debian/Ubuntu)
# sudo yum install sysstat (RHEL/CentOS)
iostat -xz 1 5 # Estadísticas extendidas, cada 1 segundo, 5 veces
Ejemplos Prácticos:
- Monitorización de dispositivo específico:
iostat -xz /dev/sda 1 - Mostrar solo la utilización de CPU:
iostat -c - Mostrar solo la utilización del dispositivo:
iostat -d
Consejos:
- Un
%utilalto (cercano al 100%) combinado con un tiempoawaitalto indica un cuello de botella de E/S en ese dispositivo. - Compare
rkB/sywkB/sconr/syw/spara comprender el tamaño promedio de E/S.
5. free - Uso de Memoria
El comando free muestra la cantidad total de memoria física libre y utilizada y el espacio de intercambio (swap) en el sistema, así como los buffers y cachés utilizados por el kernel.
Métricas Clave:
total: Memoria total instalada.used: Memoria utilizada (incluye buffers/caché).free: Memoria no utilizada (libre).shared: Memoria utilizada por tmpfs (segmentos de memoria compartida).buff/cache: Memoria utilizada por los buffers del kernel y la caché de páginas.available: Una estimación de cuánta memoria está disponible para iniciar nuevas aplicaciones, sin necesidad de swapping.
Uso Básico:
free -h # Salida legible para humanos
Ejemplos Prácticos:
- Mostrar memoria en megabytes:
free -m - Actualizar continuamente cada 5 segundos:
watch -n 5 free -h
Consejos:
- La columna
availablees la métrica más importante para comprender cuánta memoria está realmente libre para nuevos procesos. - Linux utiliza agresivamente la memoria disponible para el almacenamiento en caché de disco, por lo que un valor
freebajo es normal y a menudo deseable.
6. df - Uso de Espacio en Disco
El comando df informa la cantidad de espacio en disco utilizado y disponible en los sistemas de archivos. Es esencial para monitorizar la capacidad de almacenamiento y prevenir escenarios de disco lleno.
Métricas Clave:
Filesystem(Sistema de archivos): El nombre del sistema de archivos.Size(Tamaño): Tamaño total del sistema de archivos.Used(Usado): Cantidad de espacio en disco utilizado.Avail(Disp.): Cantidad de espacio en disco disponible.Use%(% Uso): Porcentaje de espacio en disco utilizado.Mounted on(Montado en): El punto de montaje del sistema de archivos.
Uso Básico:
df -h # Salida legible para humanos
Ejemplos Prácticos:
- Mostrar uso de inodos:
df -i(los inodos son estructuras de metadatos; agotarlos puede impedir la creación de archivos incluso con espacio libre). - Mostrar tipo de sistema de archivos específico:
df -hT -t ext4
Consejos:
- Verifique regularmente el
% Usopara evitar que los sistemas de archivos se llenen, lo que puede causar fallos en las aplicaciones e inestabilidad del sistema. - Un alto uso de inodos puede ser un problema cuando hay muchos archivos pequeños.
7. du - Uso de Disco de Archivos y Directorios
El comando du estima el uso de espacio de archivos. Mientras que df verifica el uso total del sistema de archivos, du se utiliza para determinar el tamaño de archivos o directorios específicos, lo cual es fundamental para identificar qué está consumiendo espacio en disco.
Métricas Clave:
- Tamaño total de los archivos o directorios especificados.
Uso Básico:
du -sh /var/log # Resumen, legible para humanos para el directorio /var/log
Ejemplos Prácticos:
- Mostrar tamaños de todos los subdirectorios (un nivel de profundidad):
du -h --max-depth=1 /home/user - Encontrar los archivos/directorios más grandes:
du -ah /path/to/check | sort -rh | head -n 10
Consejos:
- Combine
duconsortyheadpara localizar rápidamente los elementos que acaparan el espacio en disco. - Tenga cuidado al ejecutar
duen directorios grandes, ya que puede consumir muchos recursos.
8. sar - Reporte de Actividad del Sistema
sar es una herramienta poderosa del paquete sysstat que recopila, informa o guarda información sobre la actividad del sistema. A diferencia de top o vmstat, que muestran instantáneas en tiempo real, sar sobresale al proporcionar datos históricos, lo que lo hace invaluable para el análisis de rendimiento a largo plazo y la planificación de capacidad.
Características Clave:
- Estadísticas de CPU:
%user,%nice,%system,%iowait,%steal,%idle. - Estadísticas de Memoria:
kbmemfree,kbmemused,kbbuffers,kbcached. - E/S de Disco:
tps,rd_sec/s,wr_sec/s. - Estadísticas de Red:
rxpck/s,txpck/s,rxbyt/s,txbyt/s. - Carga promedio (Load average), actividad de swap, actividad del kernel y más.
Uso Básico:
# Informar la utilización de CPU cada 1 segundo, 5 veces:
sar -u 1 5
# Informar actividad de disco:
sar -d
# Informar utilización de memoria:
sar -r
# Informar estadísticas de red:
sar -n DEV
Ejemplos Prácticos:
- Ver la actividad de CPU de ayer:
sar -u -f /var/log/sysstat/saDD(reemplace DD por el día del mes) - Mostrar todos los datos recopilados para hoy:
sar -A
Consejos:
- Asegúrese de que el paquete
sysstatesté instalado y configurado para recopilar datos regularmente para el análisis histórico. sarpuede ser abrumador; céntrese en las banderas específicas (-u,-r,-d,-n) relevantes para su investigación.
9. ss (Estadísticas de Sockets) - Conexiones de Red
ss es una utilidad para investigar sockets. Es un reemplazo más rápido y eficiente para el comando antiguo netstat, que proporciona información más detallada sobre TCP, UDP y otros tipos de sockets, incluido su estado, direcciones locales/remotas e ID de proceso.
Métricas Clave:
- State (Estado):
ESTAB,LISTEN,TIME-WAIT,CLOSE-WAIT, etc. - Recv-Q / Send-Q (Cola Recibir / Cola Enviar): Los tamaños de las colas de recepción y envío.
- Local Address:Port / Peer Address:Port (Dirección Local:Puerto / Dirección Par:Puerto): Los puntos finales locales y remotos.
- Process Name (Nombre del Proceso): El proceso asociado con el socket.
Uso Básico:
ss -tuln # TCP, UDP, en escucha, puertos numéricos
Ejemplos Prácticos:
- Listar todas las conexiones TCP:
ss -t - Listar todas las conexiones UDP:
ss -u - Mostrar procesos escuchando en puertos específicos:
ss -tulnp | grep 80 - Resumir estadísticas de sockets:
ss -s
Consejos:
- Busque un número inusualmente alto de conexiones
TIME-WAIT, lo que puede indicar problemas del lado del cliente o un servidor web mal configurado. - Monitorice
Recv-QySend-Qen busca de signos de problemas de buffering de red o procesamiento lento de aplicaciones.
10. uptime - Tiempo de Actividad del Sistema y Carga Promedio
El comando uptime muestra cuánto tiempo lleva el sistema en funcionamiento, la hora actual, cuántos usuarios han iniciado sesión y el promedio de carga del sistema durante los últimos 1, 5 y 15 minutos.
Métricas Clave:
- Hora actual: Se explica por sí misma.
- Uptime (Tiempo de actividad): Cuánto tiempo ha estado funcionando el sistema.
- Users (Usuarios): Número de usuarios que han iniciado sesión actualmente.
- Load average (Carga promedio): El número promedio de procesos que se encuentran en un estado ejecutable o ininterrumpible. Esto incluye procesos que se están ejecutando en la CPU, esperando CPU o esperando E/S de disco.
- Carga promedio de 1 minuto
- Carga promedio de 5 minutos
- Carga promedio de 15 minutos
Uso Básico:
uptime
Ejemplos Prácticos:
- Se utiliza a menudo como una comprobación rápida de la salud para evaluar la ocupación general de un servidor.
Consejos:
- Compare la carga promedio con el número de núcleos de CPU en su sistema. Una carga promedio consistentemente superior al número de núcleos de CPU a menudo indica un cuello de botella de CPU o E/S.
- Una carga promedio creciente con el tiempo (por ejemplo, 1 minuto > 5 minutos > 15 minutos) sugiere que el sistema está cada vez más ocupado.
Conclusión
Dominar estos diez comandos esenciales de Linux es fundamental para cualquier administrador de sistemas centrado en la monitorización y el mantenimiento de sistemas saludables y de alto rendimiento. Desde la identificación rápida de picos de CPU con top y htop hasta el diagnóstico de cuellos de botella de E/S de disco con iostat y la presión de memoria con vmstat, estas herramientas proporcionan un conjunto completo para la gestión proactiva del sistema.
Incorporar regularmente estos comandos en su rutina de monitorización, comprender su salida y saber cuándo usar cada uno le permitirá solucionar problemas de manera eficiente, optimizar la utilización de recursos y garantizar la fiabilidad de su infraestructura Linux. Continúe explorando sus opciones e intégrelos en sus scripts para la generación de informes automatizados para elevar sus capacidades de administración de sistemas. ¡Feliz monitorización!