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.