Recientemente, gracias a un comentario que nos hizo Diego Brignardello a partir del artículo que escribimos sobre NMON, descubrimos a Nigel Griffiths (@mr_nmon). Esta persona, creador de NMON (Nigel Monitor), no solo nos introdujo a esta nueva utilidad llamada nmonchart, sino que también a una manera muy interesante de sacarle provecho. En este post, así como en el anterior donde ya hablamos de NMON, les comparto el análisis de la herramienta que hizo nuevamente Matías Fornara de Abstracta.
Como ya hablamos en el post anterior, existen distintas maneras de interpretar los archivos generados por NMON. NmonChart se suma como otra alternativa, que nos va a permitir generar reportes web con una interfaz gráfica muy similar a la de NMON Analyzer o NMON Visualizer.
Aquí podemos encontrar indicadores similares a los de las otras herramientas: utilización de CPU, consumo de memoria, tráfico de red, utilización de disco, etc.
Algo interesante de estas gráficas es que nos permiten utilizar el mouse para saber los valores en cada parte del gráfico que queramos, tal como se puede ver la imagen anterior. Esta funcionalidad no la permiten ninguna de las otras alternativas vistas anteriormente.
Otra característica interesante que aporta NmonChart es una nueva gráfica que nos permite ver el top 20 de los procesos que más consumen CPU, memoria e I/O de una manera muy visual.
Configuración
NmonChart no precisa instalación pero si requiere de otras herramientas para su funcionamiento. Vamos a suponer que partimos de una maquina con NMON instalado, por ende, lo primero es instalar Korn Shell (ksh). Korn Shell es un interprete de comando desarrollado por AT&T y que es utilizado por NmonChart. Para instalar Korn Shell, simplemente ejecutamos.
Debian/Ubuntu:
sudo apt-get install ksh
Fedora:
sudo dnf install ksh
CentOS/RHEL:
sudo yum install ksh
Una vez instalado Kron Shell, lo único que debemos hacer es descargarnos o clonarnos el repositorio de NmonChart desde aquí. Dentro del directorio de nmonchart tenemos ejemplos de archivos NMON y sus correspondientes HTML’s (samples) y otros archivos, pero el único que nos interesa es nmonchart:
Para mayor facilidad en el uso de la herramienta se recomienda agregar el directorio de nmonchart al PATH. Una vez hecho eso, la manera de utilizarlo es muy simple, ejecutando la siguiente línea
nmonchart archivoNmon.nmon reporteResultante.html
Por ejemplo:
nmonchart ./output_nmon-bd01_171201_1157.nmon ./result.html
Una vez ejecutado, habremos generado el reporte que mostramos anteriormente, pero como también mencionamos al principio, existe otra manera de sacarle más provecho a esta herramienta y es mediante un script que nos permita tener ¨monitorización en vivo¨ con NMON, es decir, que genere este reporte HTML con cierta periodicidad.
nmon -F stats.nmon -s 15 -c 9999 sleep 15 while true do nmonchart stats.nmon /opt/stats.html sleep 15 done
Esto fue tomado de este twitt y ajustado. En este script lo primero que se hace es ejecutar nmon de manera similar a como se explico en el post anterior, con la única diferencia que usamos la bandera F y no f, ya que con F le especificamos el nombre del archivo .nmon que se va generar. Luego se hace un sleep para esperar a que NMON esté corriendo y luego entra en un loop infinito donde ejecuta NmonChart de la misma manera que ya se explicó, para luego hacer un sleep del mismo tiempo que la periodicidad con la que se toman las muestras en NMON.
De esta manera, cada 15 segundos este script sobreescribirá el reporte HTML manteniendo así las métricas actualizadas. Es claro que tenemos que refrescar la pagina en nuestro navegador cada cierto tiempo o instalar un add-on que lo haga por nosotros.
Es importante que antes de ejecutar el script verifiquemos que el archivo .sh tiene los permisos de ejecución necesarios y de la misma manera que el usuario tenga permisos para realizar la acción. Por último, cuando se quiere detener todo este proceso lo único que se debe hacer es buscar el PID de este script (ps ax | grep nmon) y matarlo (kill -9 <PID nmon>), una vez hecho esto habremos generado el archivo .nmon y su correspondiente reporte HTML.