Monitorizando procesos Java sin salir de la terminal con jvm-mon

por | abril 16, 2018

Tenemos ya unas cuantas herramientas para monitorizar procesos Java, desde el clásico jconsole, pasando por visualvm o soluciones de monitorización más complejas (Nagios, RHQ, etc…) Podemos añadir a la lista jvm-mon, herramienta que nos aporta una forma sencilla de monitorizar procesos Java desde la terminal dándonos de un vistazo información relativa a estado de memoria heap, GC, threads de proceso y uso de CPU.


Previamente a su utilización debemos tener instalada la JDK correspondiente. En mi caso estoy en una Debian y el paquete es openjdk-8-jdk. También necesitamos tener definida la variable JAVA_HOME, por ejemplo:

export JAVA_HOME=/usr/lib/jvm/java-8-openjdk-amd64

Ya podríamos utilizar la herramienta. Hacemos wget de la última release:

wget https://github.com/ajermakovics/jvm-mon/releases/download/0.3/jvm-mon-0.3.tar.gz

Desempaquetamos y lanzamos la utilidad:

tar -zxvf jvm-mon-0.3.tar.gz
cd jvm-mon-0.3/bin
./jvm-mon

También podemos lanzar jvm-mon.bat si nos encontramos en una máquina Windows.

Una vez lanzada veremos:

En la parte izquierda superior veremos los procesos Java que se están ejecutando en la máquina, con su PID, thread principal, CPU utilizada, Heap utilizado/Heap máximo (Xmx)… El resto de vistas son bastante descriptivas por sí mismas: uso de CPU del proceso en conjunto con los GC lanzados, threads del proceso e información un poco más detallada con una gráfica sobre el estado de la memoria de la JVM del proceso.

Tenéis el código con la documentación asociada en GitHub.