当前位置:  开发笔记 > 编程语言 > 正文

使用jConsole连接远程tomcat JMX实例

如何解决《使用jConsole连接远程tomcatJMX实例》经验,为你挑选了4个好方法。

我正在尝试使用jConsole连接到远程tomcat JMX实例.但无法成功连接.任何的想法?

我在远程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"

waxwing.. 63

我有一个类似的,如果不是相同的问题.如果我在机器上本地启动jconsole,我可以连接到JMX服务器.

看来RMI服务器没有正在侦听正确的ip.因此,正如在这个相关问题中所建议的那样,我添加了以下内容:

-Djava.rmi.server.hostname=

JAVA_OPTS为好,然后它的工作.



1> waxwing..:

我有一个类似的,如果不是相同的问题.如果我在机器上本地启动jconsole,我可以连接到JMX服务器.

看来RMI服务器没有正在侦听正确的ip.因此,正如在这个相关问题中所建议的那样,我添加了以下内容:

-Djava.rmi.server.hostname=

JAVA_OPTS为好,然后它的工作.



2> Hajo Thelen..:

我收集了通过网络传播的信息,并附有其他成员的提示.

由JMX引起的大多数痛苦是(imo)JMX打开第二个动态分配的网络端口的事实.防火墙(如iptables)将阻止此操作.

linux上tomcat的解决方案:

使用tomcat 6.0.24或更新的从apache tomcat extras下载catalina-jmx-remote.jar(在tomcat下载页面上使用browse)将它复制到$ CTALINA_HOME\lib中

这允许您设置JMX使用的两个端口

编辑server.xml中的Server部分


  ...
  

设置一些环境变量(例如在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"

这会激活JMX的访问控制

jmxremote.access看起来像

monitorRole readonly
controlRole readwrite

结束jmxremote.password将

monitorRole tomcat
controlRole tomcat

(只是简单的空间)

重启tomcat.

现在在服务器上配置防火墙(例如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

和/ 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

重启iptables

完成!

现在在工作站上使用VisualVM或JConsole建立与我们样本中的rmiRegistryPortPlatform,9840的连接.

如果工作站和服务器之间没有防火墙,它应该可以工作.


+1谢谢!工作得很好!我只需要添加另一行:`-Djava.rmi.server.hostname = `.

3> freedev..:
试过Java 8 1.将其添加到java tomcat启动脚本中:
-Dcom.sun.management.jmxremote.port=1616
-Dcom.sun.management.jmxremote.rmi.port=1616
-Dcom.sun.management.jmxremote.ssl=false
-Dcom.sun.management.jmxremote.authenticate=false
-Dcom.sun.management.jmxremote.local.only=false
-Djava.rmi.server.hostname=localhost

例如,添加到bin/setenv.sh中:

export CATALINA_OPTS="$CATALINA_OPTS \
-Dcom.sun.management.jmxremote.port=1616 \
-Dcom.sun.management.jmxremote.rmi.port=1616 \
-Dcom.sun.management.jmxremote.local.only=true \
-Dcom.sun.management.jmxremote.authenticate=false \
-Dcom.sun.management.jmxremote.ssl=false "
2.在您的计算机上执行此操作.

Windows用户:

putty.exe -ssh user@remote-host -L 1616:remote-host:1616

Linux和Mac用户:

ssh user@remote-host -L 1616:remote-host:1616

3. jconsole在计算机上启动

jconsole localhost:1616
4.玩得开心!

PS:在步骤2中,使用ssh-L指定将本地(客户端)主机上的端口1616转发到远程端.

PS2.:您可以为JMX和RMI对话指定相同的端口



4> 小智..:

您使用什么字符串作为JMX连接URL.我并不是要指出明显但JConsole有一个糟糕的界面,对我来说需要一个过于复杂的URL才能连接到远程jmx应用程序.我看起来像这样:

service:jmx:rmi:///jndi/rmi://(hostname):(jmxport)/jmxrmi

推荐阅读
Gbom2402851125
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有