¿Cómo monitorear el uso de recursos en un servidor Linux?

El monitoreo del uso de recursos en un servidor Linux es crucial para mantener el rendimiento y solucionar problemas. Existen diversas herramientas disponibles para ayudar a seguir el uso de la CPU, memoria, disco y red. A continuación se presentan algunos métodos y comandos comunes para monitorear los recursos del sistema.

1. Verificar el uso de la CPU

Usando top

El comando top proporciona una vista dinámica y en tiempo real de los procesos del sistema, incluido el uso de la CPU.

$ top

Verá una lista de procesos en ejecución y, en la parte superior de la pantalla, encontrará los detalles del uso de la CPU en la columna “%CPU”. El uso de la CPU se desglosa en procesos de usuario, procesos del sistema y tiempo inactivo.

Ejemplo de salida:

top - 15:25:01 up 3 days, 4:14, 1 user, load average: 0.13, 0.12, 0.10
Tasks: 204 total, 1 running, 203 sleeping, 0 stopped, 0 zombie %Cpu(s): 5.2 us, 2.1 sy, 0.0 ni, 92.7 id, 0.0 wa, 0.0 hi, 0.0 si, 0.0 st MiB Mem : 8032.8 total, 3094.0 free, 1634.4 used, 4304.4 buff/cache MiB Swap: 2048.0 total, 2048.0 free, 0.0 used. 6112.8 avail Mem

2. Monitorear el uso de memoria

Usando free

El comando free muestra el uso de memoria, incluyendo la memoria total, usada y libre, así como el uso de swap.

$ free -h

El flag -h asegura que la salida sea en un formato legible para humanos.

Ejemplo de salida:

total used free shared buff/cache available
Mem: 7.8Gi 1.6Gi 3.0Gi 155Mi 3.2Gi 5.7Gi Swap: 2.0Gi 0B 2.0Gi

3. Uso del disco

Usando df

El comando df muestra el espacio en disco usado y disponible en todos los sistemas de archivos montados.

$ df -h

El flag -h asegura que la salida sea legible (por ejemplo, en GiB o MiB).

Ejemplo de salida:

Filesystem Size Used Avail Use% Mounted on
/dev/sda1 50G 30G 18G 63% / tmpfs 16G 1.6G 15G 10% /dev/shm /dev/sdb1 100G 25G 70G 27% /data

4. Monitorear el uso de la red

Usando iftop

El comando iftop muestra el uso de la red para las conexiones activas en tiempo real.

$ sudo iftop

Esto mostrará una lista de conexiones de red activas y mostrará su ancho de banda entrante y saliente.

Ejemplo de salida:

TX: 15.3 KB 22.1 KB Total 60.1 KB
RX: 10.1 KB 12.3 KB IP address Port Pkts In Pkts Out Total In Total Out 192.168.1.2 22 200 150 25.5 KB 13.4 KB 192.168.1.5 80 85 120 5.2 KB 9.1 KB

Usando netstat

netstat muestra las conexiones de red, las tablas de enrutamiento y las estadísticas de la interfaz.

$ netstat -tuln

Esto muestra los puertos de escucha y los servicios correspondientes que los están utilizando.

Ejemplo de salida:

Proto Recv-Q Send-Q Local Address Foreign Address State
tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN tcp6 0 0 :::80 :::* LISTEN

5. Verificar la carga del sistema

Usando uptime

El comando uptime proporciona una visión rápida de las cargas promedio del sistema durante 1, 5 y 15 minutos.

$ uptime

Ejemplo de salida:

15:30:02 up 3 days, 4:21, 1 user, load average: 0.10, 0.12, 0.08

6. Monitorear los procesos

Usando ps

El comando ps permite verificar el uso de recursos de procesos específicos.

$ ps aux --sort=-%cpu | head

Este comando ordena los procesos por uso de CPU y muestra los procesos principales.

Ejemplo de salida:

USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND
root 1123 10.5 3.1 112340 31092 ? S 15:10 0:12 /usr/bin/python3 user 2345 7.8 1.8 82344 18640 ? S 15:15 0:09 /usr/bin/nginx

7. Herramientas avanzadas de monitoreo

Usando htop

htop es un visor de procesos interactivo que proporciona una forma más amigable de monitorear los recursos del sistema.

$ sudo htop

Permite ordenar los procesos por CPU, uso de memoria y más, con una visualización atractiva.