monitoring jmx visualvm

monitoring - No se puede conectar un host remoto a VisualVM



jmx (5)

Soy nuevo en Java y tengo problemas para conectar un host remoto a JVisualVM .

Busqué en Internet y seguí todos los pasos mencionados allí, pero todavía no puedo resolver el problema. Los pasos que seguí son:

  1. Comencé jstatd en el servidor remoto creando primero un archivo jstatd.all.policy en $JAVA_HOME/bin . El archivo contenía: grant codebase "file:${java.home}/../lib/tools.jar" { permission java.security.AllPermission;};

  2. Comencé el Jstatd como jstatd -J-Djava.security.policy=jstatd.all.policy

  3. Comencé la aplicación Java en el host remoto como:

    java -Dcom.sun.management.jmxremote -Dcom.sun.management.jmxremote.port=9000 -Dcom.sun.management.jmxremote.ssl=false -Dcom.sun.management.jmxremote.authenticate=false application_name

  4. Luego comencé como instancia de JVisualVM en mi máquina local y, al agregar el host remoto, se conectó, pero no pude ver ninguno de los procesos de Java.

¿Alguien puede por favor ayudarme con esto?

Gracias.


Aquí están los pasos para hacer esto:

  1. Ejecute un ejstatd en su host remoto de esta manera (en la carpeta ejstatd): mvn exec:java -Djava.rmi.server.hostname=<remote_host_name> -Dexec.args="-pr 1099 -ph 1100 -pv 1101" (usado para conexión de tipo "jstatd") (solo especifique -Djava.rmi.server.hostname si el nombre de host de su host remoto no coincide con el que está viendo desde su red local)
  2. Inicie su aplicación Java con esos parámetros Java adicionales: -Dcom.sun.management.jmxremote -Dcom.sun.management.jmxremote.ssl=false -Dcom.sun.management.jmxremote.authenticate=false -Dcom.sun.management.jmxremote.port=1102 -Dcom.sun.management.jmxremote.rmi.port=1102 -Djava.rmi.server.hostname=<remote_host_name> (usado para la conexión de tipo "JMX") (la misma observación que el punto anterior para -Djava.rmi.server.hostname )
  3. Abra esos 4 puertos en su host remoto y haga que estén disponibles para su máquina local: 1099 , 1100 , 1101 y 1102
  4. Lanzar JVisualVM
    1. Haga clic con el botón derecho en "Remoto"> "Agregar host remoto ..." e ingrese su nombre de host remoto en "Nombre de host" (si no usa el puerto 1099 , puede cambiar esto en "Configuración avanzada")
    2. Haga clic con el botón derecho en el host remoto que acaba de crear> "Agregar conexión JMX ..." e ingrese " <remote_host_name>:1102 " en la entrada "Conexión", y marque "No requiere conexión SSL"
    3. El proceso de Java aparecerá dos veces: uno del tipo de conexión "jstatd" y otro del tipo de conexión "JMX".

Descargo de responsabilidad: soy el autor de la herramienta ejstatd código abierto.



Encontré problemas similares cuando me conecté al servidor de aplicaciones Glassfish. Mira las soluciones que funcionaron para mí, ya que pueden ser iguales para ti:

  • Intente configurar en su aplicación:

    -Djava.rmi.server.hostname = * Remote_Server_External_IP_Address *

La dirección IP mencionada debe ser una IP externa del servidor (puede parecer una tontería pero funcionó para mí). El principal problema en mi caso fue JMX que apunta al host local y al bucle. En los archivos de configuración, la dirección IP exacta debe establecerse en el host remoto. Lo describí como ''Problema 2'' en mi blog: manejo de problemas de conexión
  • Si el bloqueo del Firewall es un problema, entonces recomiendo probar XMing con el túnel SSH (que es fácil de configurar). Aquí hay instrucciones, si tiene problemas para configurarlo:
    Uso remoto de VisualVM con Xming (mi blog) La mayor ventaja de usar XMing es que funcionará casi siempre cuando SSH está habilitado. Solo tiene que colocar los archivos de VisualVM en el host remoto y ejecutarlo desde la línea de comandos. XWindow mostrará la ventana de VisualVM en su computadora local.

  • Existe la posibilidad de que sea un problema de VisualVM: intente usar alguna otra herramienta solo para verificar qué está mal. Recomiendo JConsole . Funciona de manera similar a VisualVM y también describí detalles en mi blog


Inicie jstatd en nohup en el servidor que se debe monitorear y conecte VisualVM al puerto jstatd, siguiendo los pasos a continuación:

Paso 1 : Cree start-jstatd.sh y copie el contenido a continuación:

nohup jstatd -p 1099 -J-Djava.security.policy=<(echo ''grant codebase "file:${java.home}/../lib/tools.jar" {permission java.security.AllPermission;};'') &

Paso 2: Dar permiso ejecutable al archivo:

$ chmod a+rwx start-jstatd.sh

Paso 3: Iniciar jstatd:

$ sh start-jstatd.sh

Paso 4: Agregar host remoto en VisualVM :

Paso 5: Agregue la conexión JMX al host remoto , como se muestra en la imagen de abajo y haga clic en el botón Aceptar:


Para conectarse a una máquina virtual remota , debe iniciar esa máquina virtual remota con opciones específicas :

java -Dcom.sun.management.jmxremote -Dcom.sun.management.jmxremote.port=9000 -Dcom.sun.management.jmxremote.ssl=false -Dcom.sun.management.jmxremote.authenticate=false class

Una vez iniciada la VM, vaya a su VisualVM y haga lo siguiente:

  1. Archivo -> Agregar conexión JMX
  2. Escriba: yourHostName: 9000 y haga clic en Aceptar
  3. A la izquierda tendrá la conexión JMX agregada, haga doble clic en ella y listo.

Más detalles sobre la Plataforma de Monitoreo y Administración de Java se pueden encontrar here .