如何使用Jconsole连接到EC2?

时间:2012-04-02 23:39:36

标签: java amazon-ec2 rmi jconsole

我在我的macbook上运行Jconsole并尝试连接到没有图形的ec2上的linux终端(仅限命令行访问)。

我像这样运行我的代码:

java -jar program.jar -Dcom.sun.management.jmxremote -Dcom.sun.management.jmxremote.port=9005 
-Dcom.sun.management.jmxremote.authenticate=false -Dcom.sun.management.remote.ssl=false

我读到here通过EC2访问时遇到问题(连接时遇到问题),解决方案似乎是“java.rmi.server.hostname to the public hostname of the instance

我对如何做到这一点感到有点困惑。我尝试了两件事,一件是将它直接放在我的代码中(在void static main部分中):

System.setProperty( "java.rmi.server.hostname" , "external_EC2_address" ); //in my real code I have the correct address here

系统接受了它(当我创建/上传runnable jar时没有错误)。我还在我的实例上打开防火墙以允许所有TCP流量。没运气。我也尝试将上述声明作为启动程序的标志,但仍然没有运气。

任何想法是怎么做到的?

更新:这将显示我在Java的绿色,我更进一步(仍然无法工作),但我意识到把java -jar filename.jar然后选项没有给我相同的结果把我的-jar放在命令的末尾。我试过了,程序尝试连接,然后说连接失败(之前它只是在登录界面说它)。

2 个答案:

答案 0 :(得分:2)

在VM启动之前设置hostname属性:

java -Dcom.sun.management.jmxremote \
     -Dcom.sun.management.jmxremote.port=9005 \
     -Dcom.sun.management.jmxremote.authenticate=false \
     -Dcom.sun.management.remote.ssl=false \
     -Djava.rmi.server.hostname=the.public.ip \
     -jar program.jar

将相关规则添加到您的安全组。

最后,确保iptables停止,因为这可能是您没有从外部世界获得连接的原因。作为root(或使用sudo ......):

# service iptables stop

答案 1 :(得分:1)

您需要在security group中为您的实例打开JMX远程端口(根据上面的示例为9005)。