55 votos

Conexión remota tomcat JMX instancia con jConsole

Estoy tratando de conectar a un servidor tomcat JMX instancia con jConsole. Pero no se puede conectar correctamente. Alguna Idea?

He incluido la siguiente opción en remoto tomcat catalina.sh:

JAVA_OPTS="$JAVA_OPTS -Dcom.sun.management.jmxremote \
    -Dcom.sun.management.jmxremote.port=9004 \
    -Dcom.sun.management.jmxremote.ssl=false \
    -Dcom.sun.management.jmxremote.authenticate=false"

63voto

waxwing Puntos 10190

Tuve una similar, si no el mismo problema. Me podía conectar al servidor JMX si empecé jconsole localmente en la máquina.

Parece que el servidor RMI no estaba escuchando en la ip correcta. Así que, como se sugirió en esta cuestión, he añadido el siguiente:

-Djava.rmi.server.hostname=<host ip>

a JAVA_OPTS como bueno, y luego se trabajó.

36voto

Hajo Thelen Puntos 709

He recogido la información difundida a través de la red, se encontró con las sugerencias de otros miembros.

La mayoría de los dolores causados por JMX es (omi), el hecho de que JMX se abre una segunda asignación dinámica de puertos de la red. Un firewall (como iptables) bloque este.

Solución para tomcat en linux :

el uso de tomcat 6.0.24 o más reciente descargar catalina-jmx-remote.jar de apache tomcat extras (uso de navegar en tomcat en la página de descarga) de la copia en el $CTALINA_HOME\lib

Esto permite establecer tanto los puertos utilizados por JMX

editar sección Servidor en su server.xml

<Server port="8005" ..>
  ...
  <Listener className="org.apache.catalina.mbeans.JmxRemoteLifecycleListener" rmiRegistryPortPlatform="9840" rmiServerPortPlatform="9841"/>

establecer algunas variables de entorno (por ejemplo, en setenv.sh)

CATALINA_OPTS="
  -Djava.rmi.server.hostname=IP-TO-LISTEN
  -Dcom.sun.management.jmxremote.password.file=$CATALINA_BASE/conf/jmxremote.password 
  -Dcom.sun.management.jmxremote.access.file=$CATALINA_BASE/conf/jmxremote.access 
  -Dcom.sun.management.jmxremote.ssl=false"

esto activa el control de acceso para JMX

jmxremote.el acceso se verá como

monitorRole readonly
controlRole readwrite

final jmxremote.la contraseña será

monitorRole tomcat
controlRole tomcat

(sólo espacios simples)

reiniciar tomcat.

Ahora configurar el cortafuegos en el servidor (por ejemplo iptables)

/etc/sysconfig/iptables

-A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 9840 -j ACCEPT
-A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 9841 -j ACCEPT

y /etc/sysconfig/ip6tables

-A RH-Firewall-1-INPUT -m tcp -p tcp --dport 9840 -j ACCEPT
-A RH-Firewall-1-INPUT -m tcp -p tcp --dport 9841 -j ACCEPT

reinicie iptables

Hecho!

Ahora uso VisualVM o JConsole en su estación de trabajo para establecer una conexión a rmiRegistryPortPlatform, 9840 en nuestra muestra.

Si no hay más firewalls entre el servidor y estación de trabajo se debe trabajar.

8voto

Matt Puntos 81

lo que la cadena está utilizando como JMX url de conexión. No me refiero a señalar lo obvio, pero JConsole tiene un terrible interfaz y me exige demasiado complejo url antes de conectar a un servidor jmx aplicación. La mina se parece a esto:

servicio:jmx:rmi:///jndi/rmi://(nombre de host):(jmxport)/jmxrmi

2voto

joe p Puntos 224

Qué quieres decir exactamente cuando dices "Pero no se puede conectar correctamente."? Hay un mensaje de error? Intente encender el registro en jconsole y ver si eso ayuda a depurar.

Para activar jconsole registro, editar un archivo con el nombre de registro.propiedades en el directorio que va a ejecutar jconsole, añade:

handlers= java.util.logging.ConsoleHandler

.level=INFO

java.util.logging.FileHandler.pattern = %h/java%u.log
java.util.logging.FileHandler.limit = 50000
java.util.logging.FileHandler.count = 1
java.util.logging.FileHandler.formatter = java.util.logging.XMLFormatter

java.util.logging.ConsoleHandler.level = FINEST
java.util.logging.ConsoleHandler.formatter = java.util.logging.SimpleFormatter

javax.management.level=FINEST
javax.management.remote.level=FINEST

A continuación, inicie jconsole con:

jconsole -J-Djava.util.logging.config.file=logging.properties

2voto

andhdo Puntos 53

si usted está trabajando en linux, modificar el catalina.sh añadir archivos:

                CATALINA_OPTS="-Dcom.sun.management.jmxremote -Djava.rmi.server.hostname=<HOST_IP> -Dcom.sun.management.jmxremote.port=<HOST_PORT> -Dcom.sun.management.jmxremote.ssl=false -Dcom.sun.management.jmxremote.authenticate=false"
            export CATALINA_OPTS

o modificar el /etc/profile archivo como root y ejecutar el archivo (source /etc/profile)

si usted está trabajando en windows y está empezando tomcat desde la línea de comandos, utilice la variable de entorno CATALINA_OPTS

si usted está trabajando en windows y está empezando tomcat como servicio, usted necesitará utilizar el servicio de monitor de utilidad para configurar el servicio de parámetros de inicialización (ni setenv.bat, catalina.bat o env-vars). para ello se necesita el nombre del servicio que aparece en la lista de servicios.msc (por ejemplo jasperreportsTomcat). Después, tendrás que abrir una consola como administrador y ejecutar (por ejemplo): tomcat6w.exe //MS//jasperreportsTomcat

con este comando, aparecerá un icono en la bandeja donde se puede abrir un panel. En el "Java" ficha ahora puede modificar el jmx opciones. Tenga cuidado de no agregar tirados de espacios en blanco y el uso de la "[enter]" símbolo para separar cada una de las opciones de línea por línea.

-Dcom.sun.management.jmxremote
-Djava.rmi.server.hostname=192.168.61.101
-Dcom.sun.management.jmxremote.port=9999
-Dcom.sun.management.jmxremote.ssl=false
-Dcom.sun.management.jmxremote.authenticate=false

Espero que ayude

Iteramos.com

Iteramos es una comunidad de desarrolladores que busca expandir el conocimiento de la programación mas allá del inglés.
Tenemos una gran cantidad de contenido, y también puedes hacer tus propias preguntas o resolver las de los demás.

Powered by:

X