conexão JMX com o Tomcat em execução no Amazon EC2

3

Meu processo do Tomcat 7, que eu executo em um servidor no Amazon EC2, tem configurações como estas em CATALINA_OPTS , o que deve permitir que eu conecte remotamente o monitoramento do JMX:

-Dcom.sun.management.jmxremote.port=8086
-Dcom.sun.management.jmxremote.ssl=false
-Dcom.sun.management.jmxremote.authenticate=false

No entanto, conectando-se remotamente não funciona com jconsole ou jvisualvm . Apenas expira.

Verifiquei três vezes que o grupo de segurança do EC2 permite acesso à porta remota do JMX a partir do meu IP (e somente do meu IP).

Há alguma configuração ausente?

    
por Jonik 15.01.2012 / 10:32

4 respostas

3

Especifique também a opção java.rmi.server.hostname , para que aponte para o nome DNS público do seu servidor EC2:

-Djava.rmi.server.hostname=your.public.dns

Isso foi suficiente para fazê-lo funcionar para mim, mas para mais dicas, experimente este post: Monitoramento JMX no Amazon EC2

    
por 15.01.2012 / 10:36
3

Aqui está uma explicação mais completa de como fazer isso sem mexer na segurança do grupo (também conhecido como firewall):

Lado do servidor:

  1. faça download do link e coloque em tomcat / lib
  2. adicione o seguinte ouvinte ao server.xml:

    <listener classname="org.apache.catalina.mbeans.JmxRemoteLifecycleListener"
        rmiregistryportplatform="10001" 
        rmiserverportplatform="10002" 
        uselocalports="true" />
    
  3. adicione as seguintes configurações no tomcat / bin / setenv.sh:

CATALINA_OPTS="-Dcom.sun.management.jmxremote \
 -Dcom.sun.management.jmxremote.ssl=false \
 -Dcom.sun.management.jmxremote.authenticate=false"
export CATALINA_OPTS 

Reinicie o tomcat

Lado do cliente:

  1. faça download do mesmo catalina-jmx-remote.jar e coloque-o no JDK / JRE / lib / ext (o mesmo arquivo descarregado na etapa 1 do servidor)
  2. inicie o túnel ssh com:

    ssh user@aws-host -L10001:127.0.0.1:10001 -L10002:127.0.0.1:10002

  3. Inicie o JConsole e digite o seguinte URL de serviço remoto:

    service:jmx:rmi://127.0.0.1:10002/jndi/rmi://127.0.0.1:10001/jmxrmi

Você conectou o JConsole por SSH ao seu tomcat em execução na AWS.

Como postado em: link

    
por 20.08.2012 / 13:39
3

Se você estiver com problemas para definir o nome de host correto para java.rmi.server.hostname , tente o seguinte:

-Djava.rmi.server.hostname=$(/usr/bin/curl -s --connect-timeout 2 instance-data.ec2.internal/latest/meta-data/public-hostname)

Isso é conveniente para usar em um ambiente do Elastic Beanstalk onde as instâncias vão e vêm.

    
por 24.03.2015 / 17:18
0

Eu também tentei usar o JmxRemoteLifecycleListener e não funcionou para mim.

Isso é o que funcionou para mim:

  1. Eu escolho 1005 como porta JMX e meu setenve.sh é como:

    CATALINA_OPTS="$CATALINA_OPTS -Dcom.sun.management.jmxremote -Dcom.sun.management.jmxremote.port=10005 -Dcom.sun.management.jmxremote.ssl=false -Dcom.sun.management.jmxremote.authenticate=false -Dcom.sun.management.jmxremote.local.only=false -Djava.rmi.server.hostname=localhost"
    
  2. Redirecionar usando SSH a porta JMX e o RMI

  3. Execute visualvm usando o seguinte URI:

    service:jmx:rmi:///jndi/rmi://localhost:10005/jmxrmi
    

Se precisar de mais informações, veja este post: link

    
por 07.09.2016 / 16:28