style="display:inline-block;width:728px;height:90px"
data-ad-client="ca-pub-5164839828746352"
data-ad-slot="7563230308">

Monitoreo de Java Virtual Machine con SNMP

La manera no intrusiva de monitorear parámetros de la máquina virtual de java, es habilitar la capacidad de emitir datos por SNMP (Simple Network Management Protocol) al agregar los siguientes parámetros en las opciones extra de la JVM:

JAVA_OPTS=$JAVA_OPTS ” -Dcom.sun.management.config.file=/path/to/file/jvm.management.properties

Contenido del archivo /path/to/file/jvm.management.properties

    # SNMP Management Settings
    com.sun.management.snmp.interface=0.0.0.0
    com.sun.management.snmp.port=8162
    com.sun.management.snmp.acl=false
    #com.sun.management.snmp.acl.file=filepath
    #com.sun.management.snmp.trap=<hostname:port>

Para comprobar que los parámetros fueron aceptados de manera exitosa, podemos buscar el puerto establecido, en este caso 8162, con estado Idle con netstat de la siguiente manera:

netstat -an | grep 8162
*.8162                              Idle

Finalmente, con el comando snmpwalk (linux) obtenemos los datos de la JVM:

snmpwalk -v2c -m all -c public <server>:8162 .1

.

JVM-MANAGEMENT-MIB::jvmThreadInstState.’……..’ = BITS: 01 00 waiting(7)
JVM-MANAGEMENT-MIB::jvmThreadInstState.’……..’ = BITS: 01 00 waiting(7)
JVM-MANAGEMENT-MIB::jvmThreadInstState.’……..’ = BITS: 01 00 waiting(7)
JVM-MANAGEMENT-MIB::jvmThreadInstState.’……..’ = BITS: 01 00 waiting(7)
JVM-MANAGEMENT-MIB::jvmThreadInstState.’……..’ = BITS: 01 00 waiting(7)
JVM-MANAGEMENT-MIB::jvmThreadInstState.’……..’ = BITS: 01 00 waiting(7)
JVM-MANAGEMENT-MIB::jvmThreadInstState.’……..’ = BITS: 01 00 waiting(7)
JVM-MANAGEMENT-MIB::jvmThreadInstState.’……..’ = BITS: 01 00 waiting(7)
JVM-MANAGEMENT-MIB::jvmThreadInstState.’…….$’ = BITS: 01 00 waiting(7)
JVM-MANAGEMENT-MIB::jvmThreadInstState.’…….%’ = BITS: 02 00 terminated(6)
JVM-MANAGEMENT-MIB::jvmThreadInstState.’…….&’ = BITS: 01 00 waiting(7)
JVM-MANAGEMENT-MIB::jvmThreadInstState.’…….(‘ = BITS: 01 00 waiting(7)
JVM-MANAGEMENT-MIB::jvmThreadInstState.’…….)’ = BITS: 01 00 waiting(7)
JVM-MANAGEMENT-MIB::jvmThreadInstState.’…….*’ = BITS: 01 00 waiting(7)
JVM-MANAGEMENT-MIB::jvmThreadInstState.’…….+’ = BITS: 01 00 waiting(7)
JVM-MANAGEMENT-MIB::jvmThreadInstState.’…….,’ = BITS: 01 00 waiting(7)
JVM-MANAGEMENT-MIB::jvmThreadInstState.’…….-’ = BITS: 01 00 waiting(7)
JVM-MANAGEMENT-MIB::jvmThreadInstState.’……..’ = BITS: 01 00 waiting(7)
JVM-MANAGEMENT-MIB::jvmThreadInstState.’…….0′ = BITS: 01 00 waiting(7)
JVM-MANAGEMENT-MIB::jvmThreadInstState.’…….1′ = BITS: 01 00 waiting(7)
JVM-MANAGEMENT-MIB::jvmThreadInstState.’…….2′ = BITS: 01 00 waiting(7)

Comentarios

Opciones de visualización de comentarios

Seleccione la forma que prefiera para mostrar los comentarios y haga clic en «Guardar las opciones» para activar los cambios.
Imagen de ezamudio

Info propia de la app?

Excelente información, para monitoreo básico de la JVM de una app en producción esto es muy bueno, sobre todo combinado con monitores SNMP como Cacti. Sería muy bueno también saber si hay manera de agregar info a lo que publica la JVM, para poner datos del status de la app, cosas mas específicas (número de usuarios o sesiones abiertas, conexiones a base de datos, etc). Sé que ese tipo de cosas es más fácil publicarlas con JMX pero el problema es la interfaz para monitoreo, ya que SNMP es más estándar y en muchos datacenters es lo que se utiliza para monitorear sistemas de todo tipo.

Imagen de Marko

Interesante tu aporte

Interesante tu aporte jmanuel_II

gracias

Imagen de jmanuel_ll

App.. completa

Así es, sabes lo que está pasando. Un problema interesante que tuvimos con una aplicación en el trabajo fue el famosísimo Garbage Collector (Full) y necesitábamos ubicar dónde estaba el problema, qué impacto tenía el cambiar de GC, es decir, de Paralelo a Concurrente, el número de threads que estaban involucrados, la memoria heap ocupada, etc. Precisamente utilizamos Cacti para interpretar las cadenas SNMP y mostrar datos muy interesantes como los que te comenté.

Mi primer contacto con estas prácticas fue por JMX, pero pasando el tiempo nos dimos cuenta que era un método intrusivo, ya que utilizaba una cantidad de threads que podían afectar con las mediciones que estábamos realizando.

Saludos,
jm

Imagen de jmanuel_ll

Gracias

Gracias y cualquier duda que tengas espero poder apoyarte.

Saludos,
jm

style="display:inline-block;width:728px;height:90px"
data-ad-client="ca-pub-5164839828746352"
data-ad-slot="7563230308">