Monitoreo en Linux: nmon

Introducción

NMon (por Nigel’s MONitor) es un sistema de monitoreo para Linux y AIX. Nos permite ver en pantalla los diferentes indicadores de nuestro sistema, o hacerlo de forma no interactiva guardando todos los datos a un CVS para luego procesar y graficar los datos recabados.

No lo probé en AIX, pero en Linux corre sobre SLES9, SLES10, RHEL, Knoppix, Debian, Fedora, Ubuntu y hasta Gentoo con la versión anterior a la actual. Tiene soporte para las distribuciones x86, y para algunas distribuciones x86_64 y POWER.

Es gratis, muy simple de instalar (hay ejecutables para las diferentes distribuciones) y si bien no tiene soporte oficial por parte de IBM, está disponible para bajar desde la wiki de AIX de IBM.

Entre otros, tiene soporte para monitorear los siguientes datos de un sistema:

  • Uso de CPU
  • Uso de memoria
  • Estadísticas del kernel y de la cola de ejecución de procesos
  • I/O, transferencias, y tasas de lectura/escritura de los discos
  • Espacio libre en file systems
  • I/O, transferencias, y tasas de lectura/escritura de las interfaces de red
  • Paginado de memoria
  • Network File System (NFS)

Instalación

No tiene mayores dificultades, debemos bajar un archivo comprimido de aquí, dependiendo de nuestro hardware y versión del sistema operativo. Descomprimimos el archivo, damos permisos de ejecución (chmod +x) al ejecutable que concuerde con nuestra distribución de Linux/AIX y listo.

Uso interactivo

Si usamos NMon de forma interactiva, al ejecutarlo en una terminal veremos una pantalla similar a la siguiente:

+nmon-12a---------------------Hostname=server-vm----Refresh= 2secs ---09:45.39-+
¦                                                                              ¦
¦  ---------------------
---------       For help type H or ...                 ¦
¦  #    #  #    #   ####   #    #        nmon -?  - hint                       ¦
¦  ##   #  ##  ##  #    #  ##   #        nmon -h  - full                       ¦
¦  # #  #  # ## #  #    #  # #  #                                              ¦
¦  #  # #  #    #  #    #  #  # #       To start the same way every time       ¦
¦  #   ##  #    #  #    #  #   ##        set the NMON ksh variable             ¦
¦  #    #  #    #   ####   #    #                                              ¦
¦  ------------------------------                                              ¦
¦                                                                              ¦
¦  Use these keys to toggle statistics on/off:                                 ¦
¦     c = CPU        l = CPU Long-term   - = Faster screen updates             ¦
¦     m = Memory     j = Filesystems     + = Slower screen updates             ¦
¦     d = Disks      n = Network         V = Virtual Memory     
               ¦
¦     r = Resource   N = NFS             v = Verbose hints                     ¦
¦     k = kernel     t = Top-processes   . = only busy disks/procs             ¦
¦     h = more options                   q = Quit                              ¦
¦------------------------------------------------------------------------------¦

En la misma nos muestra las teclas de uso más comunes (con h nos muestra la lista completa):

¦ HELP ------------------------------------------------------------------------¦
¦     key  --- statistics which toggle on/off ---                              ¦
¦     h = This help information                                                ¦
¦     r = RS6000/pSeries CPU/cache/OS/kernel/hostname details + LPAR           ¦
¦     t = Top Process Stats 1=basic 3=CPU                                      ¦
¦         u = shows command arguments (hit twice to refresh)                   ¦
¦     c = CPU by processor           
  l = longer term CPU averages            ¦
¦     m = Memory and Swap  stats       j = JFS Usage Stats                     ¦
¦     n = Network stats                N = NFS                                 ¦
¦     d = Disk I/O Graphs D=Stats      o = Disks %Busy Map                     ¦
¦     k = Kernel stats & loadavg       V = Virtual Memory                      ¦
¦     g = User Defined Disk Groups [start nmon with -g <filename>]             ¦
¦     v = Verbose Simple Checks - OK/Warnings/Danger                           ¦
¦     b = black & white mode                                                   ¦
¦     --- controls ---                                                         ¦
¦     + and - = double or half the screen refresh time                         ¦
¦     q = quit                     space = refresh screen now                  ¦
¦     . = Minimum Mode =display only busy disks and processes                  ¦
¦     0 = reset peak counts to zero (peak = ">")  
                             ¦
¦     Developer Nigel Griffiths                                                ¦
¦------------------------------------------------------------------------------¦

A continuación veremos la salida de las opciones que a mi entender resultan más útiles:

Estadísticas del kernel (tecla k)

¦ Kernel Stats ----------------------------------------------------------------¦
¦ RunQueue             -1   Load Average    CPU use since boot time            ¦
¦ ContextSwitch       0.0    1 mins  0.71    Uptime Days=  0 Hours= 6 Mins=57  ¦
¦ Forks               0.0    5 mins  0.34    Idle   Days=  0 Hours= 6 Mins=45  ¦
¦ Interrupts        713.0   15 mins  0.16    Average CPU use=  2.83%           ¦
¦------------------------------------------------------------------------------¦

Uso de CPU (tecla c)

En esta gráfica con forma de barras horizontales, las U representan el tiempo de usuario, las s el tiempo de sistema y
las w el wait time. Los > registran los picos de CPU.

¦ CPU Utilisation -------------------------------------------------------------¦
¦                           +-------------------------------------------------+¦
¦CPU  User%  Sys% Wait% Idle|0          |25         |50          |75       100|¦
¦ 1  53.6  31.4   0.0   14.9|UUUUUUUUUUUUUUUUUUUUUUUUUUsssssssssssssss >      |¦
¦ 2  54.0  19.5   0.0   26.5|UUUUUUUUUUUUUUUUUUUUUUUUUUUsssssssss >           |¦
¦                           +-------------------------------------------------+¦
¦Avg 53.8  25.3   0.0   21.0|UUUUUUUUUUUUUUUUUUUUUUUUUUssssssssssss >         |¦
¦                           +-------------------------------------------------+¦
¦------------------------------------------------------------------------------¦

Uso de memoria (tecla m)

¦ Memory Stats ----------------------------------------------------------------¦
¦                RAM     
High      Low     Swap                                ¦
¦ Total MB      3012.8     -0.0     -0.0   2055.1                              ¦
¦ Free  MB        19.1     -0.0     -0.0   2055.1                              ¦
¦ Free Percent     0.6%   100.0%   100.0%   100.0%                             ¦
¦             MB                  MB                  MB                       ¦
¦                      Cached=  2301.9     Active=  1717.3                     ¦
¦ Buffers=   141.9 Swapcached=     0.0  Inactive =   962.1                     ¦
¦ Dirty  =     3.6 Writeback =     0.0  Mapped   =  1346.4                     ¦
¦ Slab   =    89.7 Commit_AS =   906.5 PageTables=    19.2                     ¦
¦------------------------------------------------------------------------------¦

Estadísticas de red (tecla n)

¦ Network I/O -----------------------------------------------------------------¦
¦I/F Name Recv=KB/s Trans=KB/s packin packout insize outsize Peak->
Recv Trans  ¦
¦    lo     8.6     8.6      37.0     37.0   238.6  238.6     1234.6  1234.6   ¦
¦  eth0    44.3  1420.2     613.9   1140.8    73.8 1274.8       44.3  1420.2   ¦
¦vmnet1     0.0     0.0       0.0      0.0     0.0    0.0        0.0     0.0   ¦
¦vmnet8     0.0     0.0       0.0      0.0     0.0    0.0        0.0     0.0   ¦
¦------------------------------------------------------------------------------¦

Estadísticas de disco (teclas D y d)

Con la tecla d nos presenta la información de forma tabular:

¦ Disk I/O -----(/proc/diskstats)--------all data is Kbytes per second---------¦
¦DiskName Busy    Read    Write       Xfers   Size  Peak%  Peak-RW    InFlight ¦
¦sda        0%      0.0     48.0KB/s    6.5   7.0KB   13%    1883.9KB/s   0   |¦
¦sda1       0%      0.0     48.0KB/s    6.5   7.0KB   12%    1883.9KB/s   0   |¦
¦sdb       39%  14864.6     24.0KB/s  115.9 128.0KB  100%  126938.8KB/s   1   |¦
¦sdb1       0%      0.0    
  0.0KB/s    0.0   0.0KB    0%       0.0KB/s   0   |¦
¦sdb2      33%  14652.7     24.0KB/s  101.4 144.0KB  100%  124939.1KB/s   1   |¦
¦sdb3       6%    211.9      0.0KB/s   14.5  14.0KB   13%    1999.6KB/s   0   |¦
¦fd0        0%      0.0      0.0KB/s    0.0   0.0KB    0%       0.0KB/s   0   |¦
¦------------------------------------------------------------------------------¦

Con la tecla D nos presenta la información en forma de gráfica de barras horizontal. De forma similar a la gráfica de uso de CPU, las W representan escrituras en disco, las R lecturas en disco y los > registran los picos de transferencia:

¦ Disk I/O -----(/proc/diskstats)--------all data is Kbytes per second---------¦
¦DiskName Busy  Read WriteKB|0          |25         |50          |75       100|¦
¦sda        0%    0.0    4.0|      >                                          |¦
¦sda1       0%    0.0    4.0|     >                                           
|¦
¦sdb       43% 1916.5  393.7|WWWWRRRRRRRRRRRRRRRRRRR                          |¦
¦sdb1       0%    0.0    0.0|>                                                |¦
¦sdb2      30% 1688.7  393.7|WWWRRRRRRRRRRRRR                                 |¦
¦sdb3      13%  227.8    0.0|RRRRRR>                                          |¦
¦fd0        0%    0.0    0.0|>                                                |¦
¦------------------------------------------------------------------------------¦

Verbose Simple Checks (tecla d)

+nmon-12a---------------------Hostname=server-vm----Refresh= 2secs ---23:46.50-+
¦ Verbose Mode ----------------------------------------------------------------¦
¦ Code    Resource            Stats   Now        Warn    Danger                ¦
¦     OK -> CPU               %busy   5.2%       >80%    >90%                  ¦
¦     OK -> Top Disk          %busy   0.0%       >40%    >60%                  ¦
¦------------
------------------------------------------------------------------¦

Capturar datos para análisis posterior

Si queremos capturar datos para posterior análisis, utilizamos la opción -f. La opción -s configura el período de muestreo, y la opción -c la cantidad de muestreos.

Por ejemplo, para obtener muestras cada 30 segundos durante una hora (120 muestras), ejecutamos:

nmon -f -s 30 -c 120

Esto genera un archivo con nombre hostname_date_time.nmon con formato CSV, que luego puede ser interpretado por el NMon analyser. Por más info, ver la wiki de NMon analyser y la ayuda de NMon.

Referencias

Wiki de NMon
Wiki de NMon analyser
nmon performance: A free tool to analyze AIX and Linux performance
NMon en Wikipedia

Etiquetado . Bookmark the permalink.

Una respuesta a Monitoreo en Linux: nmon

  1. JOSE RUGEL says:

    Hola, estoy instalando el NMON, mi version de Suse LE es 11 sp 3.
    Al momento de instalar el producto me da el error :
    JBG03DS03:~/rpm_nmon # rpm -ivh nmon-15g-4.2.x86_64.rpm
    warning: nmon-15g-4.2.x86_64.rpm: Header V3 RSA/SHA256 signature: NOKEY, key ID 3dbdc284
    error: Failed dependencies:
    libtinfo.so.5()(64bit) is needed by nmon-15g-4.2.x86_64

    Pero si tengo ese archivo instalado en /lib:
    lrwxrwxrwx 1 root root 19 Jan 14 17:08 libtinfo.so.5 -> ./libncurses.so.5.6

    Saludos.
    JR

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *