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.