Cómo usar Top, Netstat, Du y otras herramientas para supervisar los recursos del servidor

Introducción

Todo sistema informático se beneficia de una administración y supervisión adecuadas. Supervisar el funcionamiento de su sistema le ayudará a detectar problemas y resolverlos rápidamente.

Existen numerosas utilidades de línea de comandos diseñadas para este propósito. Esta guía le presentará algunas de las aplicaciones más útiles que puede tener en su caja de herramientas.

Prerrequisitos

Para seguir esta guía, necesitará acceder a un ordenador con sistema operativo Linux. Puede ser un servidor privado virtual al que se haya conectado por SSH o su equipo local. Tenga en cuenta que este tutorial se validó con un servidor Linux con Ubuntu 20.04, pero los ejemplos proporcionados deberían funcionar en cualquier ordenador con cualquier versión de Linux.

Si planea usar un servidor remoto para seguir esta guía, le recomendamos que primero complete nuestra guía de configuración inicial del servidor . Esto le permitirá configurar un entorno de servidor seguro, que incluye un usuario no root con sudoprivilegios y un firewall configurado con UFW, que puede usar para mejorar sus habilidades con Linux.

Paso 1: Cómo ver los procesos en ejecución en Linux

Puede ver todos los procesos que se ejecutan en su servidor usando el topcomando:

top

Outputtop - 15:14:40 up 46 min,  1 user,  load average: 0.00, 0.01, 0.05
Tasks:  56 total,   1 running,  55 sleeping,   0 stopped,   0 zombie
Cpu(s):  0.0%us,  0.0%sy,  0.0%ni,100.0%id,  0.0%wa,  0.0%hi,  0.0%si,  0.0%st
Mem:   1019600k total,   316576k used,   703024k free,     7652k buffers
Swap:        0k total,        0k used,        0k free,   258976k cached

  PID USER      PR  NI  VIRT  RES  SHR S %CPU %MEM    TIME+  COMMAND           
    1 root      20   0 24188 2120 1300 S  0.0  0.2   0:00.56 init               
    2 root      20   0     0    0    0 S  0.0  0.0   0:00.00 kthreadd           
    3 root      20   0     0    0    0 S  0.0  0.0   0:00.07 ksoftirqd/0        
    6 root      RT   0     0    0    0 S  0.0  0.0   0:00.00 migration/0        
    7 root      RT   0     0    0    0 S  0.0  0.0   0:00.03 watchdog/0         
    8 root       0 -20     0    0    0 S  0.0  0.0   0:00.00 cpuset             
    9 root       0 -20     0    0    0 S  0.0  0.0   0:00.00 khelper            
   10 root      20   0     0    0    0 S  0.0  0.0   0:00.00 kdevtmpfs          

Las primeras líneas de salida proporcionan estadísticas del sistema, como la carga de CPU/memoria y el número total de tareas en ejecución.

Puedes ver que hay 1 proceso en ejecución y 55 procesos que se consideran inactivos porque no están usando ciclos de CPU de forma activa.

El resto de la salida mostrada muestra los procesos en ejecución y sus estadísticas de uso. De forma predeterminada, topse ordenan automáticamente por uso de CPU, para que pueda ver primero los procesos más activos. topContinuará ejecutándose en su shell hasta que lo detenga usando la combinación de teclas estándar Ctrl+Cpara salir de un proceso en ejecución. Esto envía una killseñal que indica al proceso que se detenga correctamente si puede hacerlo.

Una versión mejorada de top, llamada htop, está disponible en la mayoría de los repositorios de paquetes. En Ubuntu 20.04, puedes instalarla con apt:

sudo apt install htop

Después de esto, el htopcomando estará disponible:

htop

Output  Mem[|||||||||||           49/995MB]     Load average: 0.00 0.03 0.05
  CPU[                          0.0%]     Tasks: 21, 3 thr; 1 running
  Swp[                         0/0MB]     Uptime: 00:58:11

  PID USER      PRI  NI  VIRT   RES   SHR S CPU% MEM%   TIME+  Command
 1259 root       20   0 25660  1880  1368 R  0.0  0.2  0:00.06 htop
    1 root       20   0 24188  2120  1300 S  0.0  0.2  0:00.56 /sbin/init
  311 root       20   0 17224   636   440 S  0.0  0.1  0:00.07 upstart-udev-brid
  314 root       20   0 21592  1280   760 S  0.0  0.1  0:00.06 /sbin/udevd --dae
  389 messagebu  20   0 23808   688   444 S  0.0  0.1  0:00.01 dbus-daemon --sys
  407 syslog     20   0  243M  1404  1080 S  0.0  0.1  0:00.02 rsyslogd -c5
  408 syslog     20   0  243M  1404  1080 S  0.0  0.1  0:00.00 rsyslogd -c5
  409 syslog     20   0  243M  1404  1080 S  0.0  0.1  0:00.00 rsyslogd -c5
  406 syslog     20   0  243M  1404  1080 S  0.0  0.1  0:00.04 rsyslogd -c5
  553 root       20   0 15180   400   204 S  0.0  0.0  0:00.01 upstart-socket-br

htopProporciona una mejor visualización de múltiples hilos de CPU, mayor comprensión de la compatibilidad de colores en terminales modernas y más opciones de ordenación, entre otras funciones. A diferencia de [Nombre topdel programa], no siempre se instala por defecto, pero puede considerarse un reemplazo directo. Puedes salir htoppulsando [Nombre del programa] Ctrl+Ccon [Nombre del programa top].

A continuación se muestran algunos atajos de teclado que le ayudarán a utilizar htop de forma más efectiva:

  • M : Ordenar procesos por uso de memoria
  • P : Ordenar procesos por uso del procesador
  • ? : Ayuda de acceso
  • k : Matar el proceso actual/etiquetado
  • F2 : Configurar htop. Aquí puede elegir las opciones de visualización.
  • / :: Procesos de búsqueda

Hay muchas otras opciones a las que puede acceder mediante la ayuda o la configuración. Estas deberían ser sus primeras opciones para explorar las funciones de htop. A continuación, aprenderá a monitorizar el ancho de banda de su red.

Paso 2: Cómo monitorear el ancho de banda de su red

Si su conexión de red parece estar sobreutilizada y no está seguro de qué aplicación es la culpable, un programa llamado nethogses una buena opción para averiguarlo.

En Ubuntu, puedes instalar nethogs con el siguiente comando:

sudo apt install nethogs

Después de esto, el nethogscomando estará disponible:

nethogs

OutputNetHogs version 0.8.0

  PID USER     PROGRAM                      DEV        SENT      RECEIVED       
3379  root     /usr/sbin/sshd               eth0       0.485       0.182 KB/sec
820   root     sshd: root@pts/0             eth0       0.427       0.052 KB/sec
?     root     unknown TCP                             0.000       0.000 KB/sec

  TOTAL                                                0.912       0.233 KB/sec

nethogsasocia cada aplicación con su tráfico de red.

Solo hay unos pocos comandos que puedes usar para controlar nethogs:

  • M : Cambia las visualizaciones entre “kb/s”, “kb”, “b” y “mb”.
  • R : Ordenar por tráfico recibido.
  • S : Ordenar por tráfico enviado.
  • Q : dejar de fumar

iptraf-ngEs otra forma de monitorear el tráfico de red. Ofrece diversas interfaces de monitoreo interactivas.

Nota : IPTraf requiere un tamaño de pantalla de al menos 80 columnas por 24 líneas.

En Ubuntu, puedes instalarlo iptraf-ngcon el siguiente comando:

sudo apt install iptraf-ng

iptraf-ngdebe ejecutarse con privilegios de root, por lo que debe precederlo con sudo:

sudo iptraf-ng

Se le presentará un menú que utiliza un marco de interfaz de línea de comandos popular llamado ncurses.

Interfaz principal de iptraf-ng

Con este menú, puede seleccionar a qué interfaz desea acceder.

Por ejemplo, para obtener una visión general de todo el tráfico de red, puede seleccionar el primer menú y luego “Todas las interfaces”. Aparecerá una pantalla similar a esta:

Vista de tráfico de iptraf-ng

Aquí puedes ver qué direcciones IP estás comunicando en todas tus interfaces de red.

Si desea que esas direcciones IP se resuelvan en dominios, puede habilitar la búsqueda DNS inversa saliendo de la pantalla de tráfico, seleccionando Configurey luego activando Reverse DNS lookups.

También puede habilitar TCP/UDP service namesla visualización de los nombres de los servicios que se están ejecutando en lugar de los números de puerto.

Con ambas opciones habilitadas, la pantalla podría verse así:

Vista de tráfico con nombre de iptraf-ng

El netstatcomando es otra herramienta versátil para recopilar información de la red.

netstatSe instala por defecto en la mayoría de los sistemas modernos, pero puede instalarlo usted mismo descargándolo de los repositorios de paquetes predeterminados de su servidor. En la mayoría de los sistemas Linux, incluido Ubuntu, el paquete que contiene netstates net-tools:

sudo apt install net-tools

De forma predeterminada, el netstatcomando por sí solo imprime una lista de sockets abiertos:

netstat

OutputActive Internet connections (w/o servers)
Proto Recv-Q Send-Q Local Address           Foreign Address         State      
tcp        0      0 192.241.187.204:ssh     ip223.hichina.com:50324 ESTABLISHED
tcp        0      0 192.241.187.204:ssh     rrcs-72-43-115-18:50615 ESTABLISHED
Active UNIX domain sockets (w/o servers)
Proto RefCnt Flags       Type       State         I-Node   Path
unix  5      [ ]         DGRAM                    6559     /dev/log
unix  3      [ ]         STREAM     CONNECTED     9386     
unix  3      [ ]         STREAM     CONNECTED     9385     
. . .

Si agrega una -aopción, enumerará todos los puertos, de escucha y de no escucha:

netstat -a

OutputActive Internet connections (servers and established)
Proto Recv-Q Send-Q Local Address           Foreign Address         State      
tcp        0      0 *:ssh                   *:*                     LISTEN     
tcp        0      0 192.241.187.204:ssh     rrcs-72-43-115-18:50615 ESTABLISHED
tcp6       0      0 [::]:ssh                [::]:*                  LISTEN     
Active UNIX domain sockets (servers and established)
Proto RefCnt Flags       Type       State         I-Node   Path
unix  2      [ ACC ]     STREAM     LISTENING     6195     @/com/ubuntu/upstart
unix  2      [ ACC ]     STREAM     LISTENING     7762     /var/run/acpid.socket
unix  2      [ ACC ]     STREAM     LISTENING     6503     /var/run/dbus/system_bus_socket
. . .

Si desea filtrar para ver solo las conexiones TCP o UDP, utilice los indicadores -to respectivamente:-u

netstat -at

OutputActive Internet connections (servers and established)
Proto Recv-Q Send-Q Local Address           Foreign Address         State      
tcp        0      0 *:ssh                   *:*                     LISTEN     
tcp        0      0 192.241.187.204:ssh     rrcs-72-43-115-18:50615 ESTABLISHED
tcp6       0      0 [::]:ssh                [::]:*                  LISTEN

Vea las estadísticas pasando la bandera “-s”:

netstat -s

OutputIp:
    13500 total packets received
    0 forwarded
    0 incoming packets discarded
    13500 incoming packets delivered
    3078 requests sent out
    16 dropped because of missing route
Icmp:
    41 ICMP messages received
    0 input ICMP message failed.
    ICMP input histogram:
        echo requests: 1
        echo replies: 40
. . .

Si desea actualizar la salida continuamente, puede usar la -cbandera. Hay muchas otras opciones disponibles para netstat, que puede consultar en su página del manual .

En el siguiente paso, aprenderá algunas formas útiles de monitorear el uso del disco.

Paso 3: Cómo supervisar el uso del disco

Para obtener una descripción general rápida de cuánto espacio en disco queda en las unidades conectadas, puede utilizar el dfprograma.

Sin ninguna opción, su salida se ve así:

df

OutputFilesystem     1K-blocks    Used Available Use% Mounted on
/dev/vda        31383196 1228936  28581396   5% /
udev              505152       4    505148   1% /dev
tmpfs             203920     204    203716   1% /run
none                5120       0      5120   0% /run/lock
none              509800       0    509800   0% /run/shm

Esto muestra el uso del disco en bytes, lo que puede ser un poco difícil de leer.

Para solucionar este problema, puede especificar la salida en un formato legible para humanos:

df -h

OutputFilesystem      Size  Used Avail Use% Mounted on
/dev/vda         30G  1.2G   28G   5% /
udev            494M  4.0K  494M   1% /dev
tmpfs           200M  204K  199M   1% /run
none            5.0M     0  5.0M   0% /run/lock
none            498M     0  498M   0% /run/shm

Si desea ver el espacio total en disco disponible en todos los sistemas de archivos, puede pasar la --totalopción. Esto agregará una fila al final con información resumida:

df -h --total

OutputFilesystem      Size  Used Avail Use% Mounted on
/dev/vda         30G  1.2G   28G   5% /
udev            494M  4.0K  494M   1% /dev
tmpfs           200M  204K  199M   1% /run
none            5.0M     0  5.0M   0% /run/lock
none            498M     0  498M   0% /run/shm
total            32G  1.2G   29G   4%

dfPuede proporcionar una visión general útil. Otro comando duofrece un desglose por directorio.

duAnalizará el uso del directorio actual y sus subdirectorios. El resultado predeterminado al duejecutarse en un directorio de inicio casi vacío es el siguiente:

du

Output4    ./.cache
8    ./.ssh
28    .

Una vez más, puedes especificar una salida legible para humanos pasándola -h:

du -h

Output4.0K    ./.cache
8.0K    ./.ssh
28K    .

Para ver el tamaño de los archivos y los directorios, escriba lo siguiente:

du -a

Output0    ./.cache/motd.legal-displayed
4    ./.cache
4    ./.ssh/authorized_keys
8    ./.ssh
4    ./.profile
4    ./.bashrc
4    ./.bash_history
28    .

Para obtener un total en la parte inferior, puede agregar la -copción:

du -c

Output4    ./.cache
8    ./.ssh
28    .
28    total

Si sólo le interesa el total y no los detalles, puede emitir:

du -s

Output28    .

También hay una ncursesinterfaz para du, apropiadamente llamada ncdu, que puedes instalar:

sudo apt install ncdu

Esto representará gráficamente el uso de su disco:

ncdu

Output--- /root ----------------------------------------------------------------------
    8.0KiB [##########] /.ssh                                                   
    4.0KiB [#####     ] /.cache
    4.0KiB [#####     ]  .bashrc
    4.0KiB [#####     ]  .profile
    4.0KiB [#####     ]  .bash_history

Puede recorrer el sistema de archivos utilizando las flechas hacia arriba y hacia abajo y presionando Enter en cualquier entrada de directorio.

En la última sección, aprenderá a monitorear el uso de memoria.

Paso 4: Cómo monitorear el uso de la memoria

Puede comprobar el uso actual de la memoria en su sistema utilizando el freecomando.

Cuando se usa sin opciones, la salida se ve así:

free

Output              total        used        free      shared  buff/cache   available
Mem:        1004896      390988      123484        3124      490424      313744
Swap:             0           0           0

Para mostrar en un formato más legible, puede pasar la -mopción para mostrar la salida en megabytes:

free -m

Output              total        used        free      shared  buff/cache   available
Mem:            981         382         120           3         478         306
Swap:             0           0           0

La Memlínea incluye la memoria utilizada para el almacenamiento en búfer y en caché, que se libera tan pronto como es necesaria para otros fines. Swapes la memoria que se ha escrito en un swapfiledisco para conservar la memoria activa.

Por último, el vmstatcomando puede generar información variada sobre su sistema, incluida la memoria, el intercambio, el disco IO y la información de la CPU.

Puede utilizar el comando para obtener otra vista del uso de la memoria:

vmstat

Outputprocs -----------memory---------- ---swap-- -----io---- -system-- ----cpu----
 r  b   swpd   free   buff  cache   si   so    bi    bo   in   cs us sy id wa
 1  0      0  99340 123712 248296    0    0     0     1    9    3  0  0 100  0

Puedes ver esto en megabytes especificando unidades con la -Sbandera:

vmstat -S M

Outputprocs -----------memory---------- ---swap-- -----io---- -system-- ----cpu----
 r  b   swpd   free   buff  cache   si   so    bi    bo   in   cs us sy id wa
 1  0      0     96    120    242    0    0     0     1    9    3  0  0 100  0

Para obtener algunas estadísticas generales sobre el uso de la memoria, escriba:

vmstat -s -S M

Output          495 M total memory
          398 M used memory
          252 M active memory
          119 M inactive memory
           96 M free memory
          120 M buffer memory
          242 M swap cache
            0 M total swap
            0 M used swap
            0 M free swap
. . .

Para obtener información sobre el uso de caché de los procesos individuales del sistema, escriba:

vmstat -m -S M

OutputCache                       Num  Total   Size  Pages
ext4_groupinfo_4k           195    195    104     39
UDPLITEv6                     0      0    768     10
UDPv6                        10     10    768     10
tw_sock_TCPv6                 0      0    256     16
TCPv6                        11     11   1408     11
kcopyd_job                    0      0   2344     13
dm_uevent                     0      0   2464     13
bsg_cmd                       0      0    288     14
. . .

Esto le brindará detalles sobre qué tipo de información se almacena en la memoria caché.

Conclusión

Con estas herramientas, debería poder empezar a supervisar su servidor desde la línea de comandos. Existen muchas otras utilidades de supervisión que se utilizan para diferentes fines, pero estas son un buen punto de partida.

A continuación, es posible que desee obtener más información sobre la gestión de procesos de Linux utilizando ps, kill y nice .

Leave a Reply

Your email address will not be published. Required fields are marked *

Related Post