GNU/Linux >> Tutoriales Linux >  >> Linux

Solucionar problemas y monitorear el rendimiento del sistema Linux con nmon

Monitor de Nigel (nmon ) es una herramienta de supervisión del rendimiento del sistema desarrollada originalmente por IBM para el sistema operativo AIX y luego adaptada para Linux en varias arquitecturas de CPU.

El principal beneficio de nmon es que le permite monitorear diferentes aspectos de su sistema, como la utilización de la CPU, la memoria, el disco ocupado, la utilización de la red y más, en una vista única y concisa. Sin nmon , debe usar herramientas de monitoreo especializadas como top para procesos, iostat para discos y ifstat para que la red monitoree varios recursos. Cada uno de ellos presenta los datos de manera diferente.

Usé nmon por primera vez hace unos 10 años como administrador de sistemas de AIX. Usando nmon , pude solucionar algunos problemas difíciles de detectar, incluido uno que inicialmente parecía un cuello de botella en la red. Al inspeccionar varios recursos simultáneamente usando nmon , descubrí que era un problema de la aplicación causado por abrir demasiados archivos.

Además de monitorear su sistema de forma interactiva, también puede usar nmon en modo por lotes para recopilar y guardar datos de rendimiento para su análisis. Para más información sobre nmon para Linux, consulte la página oficial del proyecto.

Este artículo analiza esta poderosa herramienta de monitoreo. Comience por instalarlo.

Instalar nmon

nmon está disponible en el repositorio predeterminado de muchas distribuciones de Linux. Por ejemplo, use DNF para instalarlo en Fedora 35:

$ sudo dnf -y install nmon

Para Red Hat Enterprise Linux o CentOS, nmon está disponible en el repositorio Extra Packages for Enterprise Linux (EPEL).

Para instalar nmon , primero habilite EPEL:

$ sudo dnf -y install \
https://dl.fedoraproject.org/pub/epel/epel-release-latest-8.noarch.rpm

$ sudo dnf repolist

Luego instala nmon usando dnf :

$ sudo dnf -y install nmon

Ahora que ha instalado nmon , utilícelo para monitorear su sistema.

Usar nmon de forma interactiva

Con las aplicaciones instaladas, puede monitorear su sistema de forma interactiva ejecutando nmon . Se le presenta una pantalla inicial que contiene información del sistema y un pequeño menú de ayuda, que muestra qué teclas puede presionar para alternar entre diferentes métricas:

$ nmon

┌─16k──[H for help]──Hostname=f35ks01─Refresh= 2secs ─18:04:27────┐
│                                                                 │
│------------------------------                                   │
│ _ __  _ __ ___   ___  _ __    For help type H or ...            │
│| '_ \| '_ ` _ \ / _ \| '_ \    nmon -?  - hint                  │
│| | | | | | | | | (_) | | | |   nmon -h  - full details          │
│|_| |_|_| |_| |_|\___/|_| |_|                                    │
│                               To stop nmon type q to Quit       │
│------------------------------                                   │
│                                                                 │
│Fedora release 35 (Thirty Five) VERSION="35 (Thirty Five)"       │
│Vendor=AuthenticAMD Model=AMD EPYC-Milan Processor               │
│MHz=1911.004 bogomips=3822.00     lscpu:CPU=4 Little Endian      │
│ProcessorChips=4 PhysicalCores=1        Sockets=4 Cores=1 Thrds=1│
│                 VirtualCPUs =4         MHz=0 max=0 min=0        │
│                                                                 │
│Use these keys to toggle statistics on/off:                      │
│  c = CPU         l = CPU Long-term     - = Faster screen updates│
│  C = " WideView  U = Utilisation       + = Slower screen updates│
│  m = Memory      V = Virtual memory    j = File Systems         │
│  d = Disks       n = Network           . = only busy disks/procs│
│  r = Resource    N = NFS               h = more options         │
│  k = Kernel      t = Top-processes     q = Quit                 │
│─────────────────────────────────────────────────────────────────│

Por ejemplo, presionando C alterna la visualización de la utilización de la CPU:

┌─16k──[H for help]──Hostname=f35ks01─Refresh= 2secs ─18:05:58─┐
│ CPU Utilisation ─────────────────────────────────────────────│
│---------------------------+---------------------------------+│
│CPU User%  Sys% Wait%  Idle|0          |25   |50 |75   100|   │
│  1   3.6  17.2   0.0  79.2|Ussssssss>                    |   │
│  2   2.1   6.2   0.0  91.7|Usss    >                     |   │
│  3   0.0   1.1   0.0  98.9| >                            |   │
│  4   6.1  17.2   0.0   0.5|UUUssssssss>                  |   │
│---------------------------+---------------------------------+│
│Avg   3.0  10.3   0.0  86.7|Usssss>                       |   │
│---------------------------+---------------------------------+│
│──────────────────────────────────────────────────────────────│

Presionando N alterna la visualización de la red y la apila automáticamente debajo de la visualización de la CPU:

┌─16k──[H for help]──Hostname=f35ks01─Refresh= 2secs ─18:17:01─┐
│ CPU Utilisation ─────────────────────────────────────────────│
│---------------------------+---------------------------------+│
│CPU User%  Sys% Wait%  Idle|0         |25    |50  |75  100|   │
│  1   2.6  10.3   0.0  87.1|Usssss     >                  |   │
│  2   0.0   2.2   0.0  97.8|s           >                 |   │
│  3   6.5  11.0   0.0  82.5|UUUsssss>                     |   │
│  4   0.0   0.5   0.0  99.5|               >              |   │
│---------------------------+---------------------------------+│
│Avg   2.4   5.9   0.0  91.6|Uss     >                     |   │
│---------------------------+---------------------------------+│
│ Network I/O ─────────────────────────────────────────────────│
│I/F Name Recv=KB/s Trans=KB/s p_in p_out in_sz out_sz Peak->..│
│      lo      0.0       0.0       0.0    0.0     0.0    0.0...│
│  enp1s0      0.0       0.0       0.5    0.0    52.0    0.0...│
│  enp7s0    218.6    5923.4    3335.5 9989.68   67.1  607.2...│
│ Network Error Counters ──────────────────────────────────────│
│I/F Name iErrors iDrop iOverrun iFrame oErrors   oDrop oOver..│
│      lo       0       0       0       0       0       0   ...│
│  enp1s0       0   34419       0       0       0       0   ...│
│  enp7s0       0   34419       0       0       0       0   ...│
│──────────────────────────────────────────────────────────────│

Continúe presionando otras teclas para apilar métricas adicionales en la misma vista. Por ejemplo, use D para E/S de disco, M para Memoria, y T para procesos principales.

Además de apilar nuevos monitores, también puede presionar la tecla de punto o punto (.) para mostrar solo las CPU y los discos ocupados, así como + y - para aumentar o disminuir el tiempo de actualización de la pantalla. Utilice H para mostrar ayuda.

Debido a que puede habilitar y deshabilitar diferentes monitores y métricas en cualquier momento, nmon es una herramienta altamente flexible que le ayuda a comprender el comportamiento de su sistema. También ayuda en la resolución de problemas al mostrar diferentes métricas simultáneamente, brindando una vista holística del sistema y mejorando su capacidad para comprender los problemas.

Cuando termines, presiona Q para salir y terminar la sesión de monitoreo.

Recopilar datos de rendimiento

Además de proporcionar una vista holística e interactiva de su sistema, también puede ejecutar nmon en modo por lotes para recopilar datos de rendimiento a largo plazo de su sistema para su posterior análisis.

Esta característica le permite comprender cómo se comporta su sistema durante un período más largo, además de las métricas en tiempo real proporcionadas por el modo interactivo. Es una característica poderosa que permite la planificación de la capacidad y la oportunidad de solucionar problemas esporádicos que son difíciles de detectar en vivo.

Para ejecutar nmon en lote, use la bandera -f al iniciar la aplicación. Tiene que ser el primer parámetro proporcionado. Por defecto, nmon recopila datos cada cinco minutos durante un día. Puede cambiar estos valores predeterminados especificando los parámetros -s para el intervalo de recolección y -c por el número de instantáneas.

Por ejemplo, para habilitar nmon en modo por lotes, recopilando datos cada minuto durante una hora, incluida la captura de los principales procesos -t , ejecuta este comando:

$ nmon -f -s60 -c60 -t

El indicador de su terminal regresa de inmediato, ya que la aplicación se ejecuta en segundo plano cuando ejecuta este comando. Puedes verlo funcionando usando ps :

$ ps -ef | grep nmon
ricardo 1849 1 0 12:27 pts/0 00:00:00 nmon -f -s60 -c60 -t

En modo por lotes, nmon guarda los datos recopilados utilizando el formato de valores separados por comas (CSV) con la extensión .nmon en el directorio actual:

$ ls -l
total 36
-rw-r--r--. 1 ricardo ricardo 36395 Feb 13 12:28 f35ks01_220213_1227.nmon

Dado que se trata de un archivo CSV, puede procesarlo con otras herramientas de línea de comandos de manipulación de texto de Linux o abrirlo con un software de hoja de cálculo para un análisis más detallado.

$ head f35ks01_220213_1227.nmon
AAA,progname,nmon
AAA,command,nmon -f -s60 -c60 -t
AAA,version,16k
AAA,disks_per_line,150
AAA,max_disks,256,set by -d option
AAA,disks,10,
AAA,host,f35ks01
AAA,user,ricardo
AAA,OS,Linux,5.16.8-200.fc35.x86_64,#1 SMP PREEMPT Tue Feb 8 20:58:59 UTC 2022,x86_64
AAA,runname,f35ks01

Además de estos métodos, el nmon El equipo de desarrollo proporciona un script para convertir estos datos en gráficos que puede visualizar utilizando su navegador web. Veré cómo hacerlo a continuación.

[ No sería Linux si no hubiera una docena de formas de realizar cualquier tarea. Para obtener información sobre las diversas formas de instalar software, descargue esta guía para instalar aplicaciones en Linux. ]

Generar gráficos

CSV es un formato flexible que le permite exportar, analizar y ver estos datos utilizando diferentes aplicaciones, como el software de procesamiento de hojas de cálculo. El nmon los desarrolladores crearon nmonchart para hacerlo un poco más fácil. Este script de shell convierte estos datos a HTML usando Google Charts JavaScript para visualizar e interactuar con los datos en un entorno gráfico.

Para usar nmoncart , descárgalo desde nmon página de inicio:

$ curl -LO http://sourceforge.net/projects/nmon/files/nmonchart40.tar

Luego extrae el contenido del paquete usando tar :

$ mkdir nmonchart

$ tar xvf nmonchart40.tar -C nmonchart

nmonchart utiliza el shell Korn (ksh), por lo que para crear gráficos, primero instale ksh en su sistema usando dnf :

$ sudo dnf install -y ksh

A continuación, convierta el .nmon archivo creado cuando ejecutó nmon en modo por lotes con este comando:

$ ./nmonchart/nmonchart f35ks01_220213_1227.nmon 

El script crea un archivo HTML con el mismo nombre que la fuente .nmon expediente. Opcionalmente, puede proporcionar el nombre del archivo de destino como segundo parámetro para nmonchart . Aquí hay un ejemplo:

$ ls -lg
total 4164
-rw-r--r--. 1 ricardo 113822 Feb 14 18:52 f35ks01_220213_1227.html
-rw-r--r--. 1 ricardo 93436 Feb 13 13:26 f35ks01_220213_1227.nmon
drwx------. 2 ricardo 4096 Aug 28 2020 nmonchart

Los gráficos de su sistema ya están listos. Tu próximo paso es verlos.

[ Obtenga la hoja de trucos de secuencias de comandos de shell Bash. ]

Visualizar gráficos de rendimiento

nmonchart crea un solo archivo HTML para cada .nmon archivo de origen que proporciona con las bibliotecas JavaScript de gráficos necesarias incrustadas. Si tiene el archivo HTML en su máquina local, visualícelo directamente en su navegador web.

También puede servir estos archivos usando un servidor web. Una de mis formas favoritas de hacer esto es usar Nginx en un contenedor Podman, como sugerí en 20 comandos Linux de una línea para agregar a su caja de herramientas.

Primero, cree un directorio y mueva los archivos HTML allí:

$ mkdir html

$ mv f35ks01_220213_1227.html html/

Luego use Podman para servir contenido desde el html directorio usando Nginx en el puerto 8080:

$ podman run --rm -v ./html:/usr/share/nginx/html:ro,Z -p 8080:80 -d nginx

Si es necesario, abra el puerto 8080 en el firewall de su servidor para permitir el tráfico:

$ sudo firewall-cmd --add-port 8080/tcp 

Luego dirija su navegador a su URL http://<YOUR_SERVER_IP_ADDR>:8080/f35ks01_220213_1227.html para ver los gráficos:

Haga clic en cualquiera de los botones en la parte superior de la pantalla para ver el gráfico correspondiente. Los gráficos son interactivos. Puede acercar y alejar para ver más datos granulares o pasar el mouse sobre el gráfico para ver datos detallados para un momento determinado.

Resumir

nmon es una aplicación de monitoreo del sistema flexible y poderosa que lo ayuda a comprender mejor su sistema y solucionarlo en caso de problemas. Sus capacidades combinadas de monitoreo y consolidación de datos en tiempo real de diferentes recursos del sistema con la recopilación y el análisis de datos de rendimiento a largo plazo lo convierten en una herramienta fantástica para tener en su cinturón de administrador de sistemas.


Linux
  1. Supervise su sistema Linux en su terminal con procps-ng

  2. Mejore el rendimiento del sistema Linux con noatime

  3. Cómo usar el comando de apagado y reinicio de Linux con ejemplos

  4. Uso de iostat para monitorear el rendimiento del sistema en Linux (Ejemplos incluidos)

  5. Cómo instalar y usar Glances para monitorear sistemas Linux

Administre y monitoree los módulos del kernel de Linux con Kmon

Monitoree el uso de recursos del sistema Linux con SysMonTask

Cómo hacer una copia de seguridad y restaurar el sistema Linux con Timeshift

Copia de seguridad y restauración de la configuración del sistema de escritorio de Linux con Dconf

Cómo instalar y usar el comando SAR (para monitorear el rendimiento del sistema) en Linux

Lea y analice los registros de su sistema Linux con Journalctl