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.