Cómo usar herramientas como Top, Netstat, Du y otras para monitorear recursos del servidor

Introducción

Cada sistema informático se beneficia de una administración y monitoreo adecuados. Vigilar cómo funciona su sistema le ayudará a descubrir problemas y resolverlos rápidamente.

Existen muchas utilidades de línea de comandos creadas con este propósito. Esta guía le presentará algunas de las aplicaciones más útiles para tener en su caja de herramientas.

Requisitos previos

Para seguir esta guía, necesitará acceso a una computadora con un sistema operativo basado en Linux. Esto puede ser un servidor privado virtual al que se haya conectado con SSH o su máquina local. Tenga en cuenta que este tutorial se validó utilizando un servidor Linux con Ubuntu 20.04, pero los ejemplos dados deberían funcionar en una computadora con cualquier versión de cualquier distribució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. Al hacerlo, configurará un entorno de servidor seguro, que incluye un usuario no root con privilegios sudo y un firewall configurado con UFW, que puede usar para mejorar sus habilidades en Linux.

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

Puedes ver todos los procesos en ejecución en tu servidor usando el comando top:

  1. top
Output
top - 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 durmientes porque no están utilizando activamente ciclos de CPU.

El resto de la salida mostrada muestra los procesos en ejecución y sus estadísticas de uso. Por defecto, top ordena automáticamente estos por uso de CPU, para que puedas ver los procesos más ocupados primero. top seguirá ejecutándose en tu terminal hasta que lo detengas usando la combinación estándar de teclas Ctrl+C para salir de un proceso en ejecución. Esto envía una señal de kill, instruyendo al proceso a detenerse graciosamente si es capaz.

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

  1. sudo apt install htop

Después de eso, el comando htop estará disponible:

  1. 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

htop proporciona una mejor visualización de múltiples hilos de CPU, una mejor conciencia del soporte de color en terminales modernos y más opciones de clasificación, entre otras características. A diferencia de top, no siempre está instalado por defecto, pero puede considerarse un reemplazo directo. Puedes salir de htop presionando Ctrl+C al igual que con top.

Aquí hay algunos atajos de teclado que te ayudarán a usar htop de manera más efectiva:

  • M: Sort processes by memory usage
  • P: Sort processes by processor usage
  • ?: Acceder a la ayuda
  • k: Kill current/tagged process
  • F2: Configurar htop. Puedes elegir opciones de visualización aquí.
  • /: Buscar procesos

Existen muchas otras opciones a las que puedes acceder a través de la ayuda o la configuración. Estos deberían ser tus primeros pasos para explorar la funcionalidad de htop. En el siguiente paso, aprenderás cómo monitorear el ancho de banda de tu red.

Paso 2: Cómo Monitorear el Ancho de Banda de tu Red

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

En Ubuntu, puedes instalar nethogs con el siguiente comando:

  1. sudo apt install nethogs

Después de eso, el comando nethogs estará disponible:

  1. nethogs
Output
NetHogs 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

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

Solo hay algunos comandos que puedes usar para controlar nethogs:

  • M: Change displays between “kb/s”, “kb”, “b”, and “mb”.
  • R: Sort by traffic received.
  • S: Sort by traffic sent.
  • Q: quit

iptraf-ng es otra forma de monitorear el tráfico de red. Proporciona varios interfaces de monitoreo interactivos diferentes.

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

En Ubuntu, puedes instalar iptraf-ng con el siguiente comando:

  1. sudo apt install iptraf-ng

iptraf-ng necesita ejecutarse con privilegios de root, así que debes precederlo con sudo:

  1. sudo iptraf-ng

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

Con este menú, puedes seleccionar qué interfaz te gustaría acceder.

Por ejemplo, para obtener una visión general de todo el tráfico de red, puedes seleccionar el primer menú y luego “Todas las interfaces”. Te dará una pantalla que se ve así:

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

Si deseas que esas direcciones IP se resuelvan en dominios, puedes habilitar la búsqueda inversa de DNS saliendo de la pantalla de tráfico, seleccionando Configurar y luego activando Búsqueda inversa de DNS.

También puedes habilitar Nombres de servicios TCP/UDP para ver los nombres de los servicios que se ejecutan en lugar de los números de puerto.

Con ambas opciones habilitadas, la visualización puede verse así:

El comando netstat es otra herramienta versátil para recopilar información de red.

netstat se instala por defecto en la mayoría de los sistemas modernos, pero puedes instalarlo tú mismo descargándolo de los repositorios de paquetes predeterminados de tu servidor. En la mayoría de los sistemas Linux, incluyendo Ubuntu, el paquete que contiene netstat es net-tools:

  1. sudo apt install net-tools

Por defecto, el comando netstat por sí solo imprime una lista de sockets abiertos:

  1. netstat
Output
Active 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 agregas la opción -a, listará todos los puertos, tanto los que están escuchando como los que no:

  1. netstat -a
Output
Active 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 deseas filtrar para ver solo conexiones TCP o UDP, utiliza las banderas -t o -u respectivamente:

  1. netstat -at
Output
Active 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

Ve estadísticas pasando la bandera “-s”:

  1. netstat -s
Output
Ip: 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 deseas actualizar continuamente la salida, puedes usar la bandera -c. Hay muchas otras opciones disponibles para netstat que puedes aprender revisando su manual de página.

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

Paso 3 – Cómo Monitorear el Uso de tu Disco

Para obtener una rápida visión general de cuánto espacio queda en tus unidades conectadas, puedes usar el programa df.

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

  1. df
Output
Filesystem 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 cual puede ser un poco difícil de leer.

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

  1. df -h
Output
Filesystem 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 disponible en todos los sistemas de archivos, puede pasar la opción --total. Esto agregará una fila en la parte inferior con información resumida:

  1. df -h --total
Output
Filesystem 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%

df puede proporcionar una visión general útil. Otro comando, du, proporciona un desglose por directorio.

du analizará el uso para el directorio actual y cualquier subdirectorio. La salida predeterminada de du ejecutándose en un directorio de inicio casi vacío se ve así:

  1. du
Output
4 ./.cache 8 ./.ssh 28 .

Nuevamente, puede especificar una salida legible para humanos pasando -h:

  1. du -h
Output
4.0K ./.cache 8.0K ./.ssh 28K .

Para ver tamaños de archivo así como directorios, escriba lo siguiente:

  1. du -a
Output
0 ./.cache/motd.legal-displayed 4 ./.cache 4 ./.ssh/authorized_keys 8 ./.ssh 4 ./.profile 4 ./.bashrc 4 ./.bash_history 28 .

Para un total en la parte inferior, puede agregar la opción -c:

  1. du -c
Output
4 ./.cache 8 ./.ssh 28 . 28 total

Si solo está interesado en el total y no en los detalles, puede emitir:

  1. du -s
Output
28 .

También hay una interfaz ncurses para du, apropiadamente llamada ncdu, que puede instalar:

  1. sudo apt install ncdu

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

  1. 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 usando las flechas hacia arriba y hacia abajo y presionando Enter en cualquier entrada de directorio.

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

Paso 4 – Cómo Monitorizar el Uso de Memoria

Puede verificar el uso de memoria actual en su sistema utilizando el comando free.

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

  1. 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, puedes pasar la opción -m para mostrar la salida en megabytes:

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

La línea Mem incluye la memoria utilizada para el almacenamiento en búfer y en caché, la cual se libera tan pronto como se necesita para otros fines. Swap es la memoria que se ha escrito en un archivo de intercambio en el disco para conservar la memoria activa.

Finalmente, el comando vmstat puede producir varios datos sobre su sistema, incluyendo memoria, intercambio, E/S de disco e información de CPU.

Puedes usar el comando para obtener otra vista del uso de memoria:

  1. vmstat
Output
procs -----------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 las unidades con la bandera -S:

  1. vmstat -S M
Output
procs -----------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 memoria, escribe:

  1. 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 procesos del sistema individual, escribe:

  1. vmstat -m -S M
Output
Cache 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 te dará detalles sobre qué tipo de información se almacena en la caché.

Conclusión

Usando estas herramientas, deberías comenzar a poder monitorear tu servidor desde la línea de comandos. Hay muchas otras utilidades de monitoreo que se utilizan para diferentes propósitos, pero estas son un buen punto de partida.

A continuación, es posible que desees aprender sobre la gestión de procesos en Linux utilizando ps, kill y nice.

Source:
https://www.digitalocean.com/community/tutorials/how-to-use-top-netstat-du-other-tools-to-monitor-server-resources