0

如果我打开jvisualvm并转到,系统会File >> Add Remote Host提示我创建一个新的远程服务器条目。我输入主机名myapp01.example.org,然后我看到该服务器显示在左侧树的Remote部分下方。Applications当我右键单击该服务器并单击Add JMX Connection时,我会看到以下对话框:

在此处输入图像描述

假设我有一个 Java 应用程序(WAR 部署到 Tomcat)在myapp01.example.org:8443. 要通过 SSH 连接到服务器,我使用用户名skroob和密码12345(嘿,这是我行李中的密码!):

ssh skroob@myapp01.example.org
skroob@myapp01.example.org's password: 12345

当我如下填写对话框时:

  • 联系:myapp01.example.org:8443
  • 用户名:skroob
  • 密码:12345

我收到以下错误:

无法使用服务连接到 skroob@myapp01.example.org:8443:jmxLrmi:///jndi/rmi://myapp01.example.org:8443/jmxrmi

我相信这可能是因为我没有将 JMX 配置为在 Tomcat 本身上公开。或者,也许我只是输入了错误的信息。也许两者兼而有之。无论哪种方式:

  • 我需要做什么才能使用正确的 JMX 信息进行配置?
  • 我需要做什么才能正确配置它jstatd
4

1 回答 1

3

这不是指定 JMX 连接的方式。对于 tomcat,最好的方法是创建一个 bin/setenv.sh 文件 这是最好的,因为 Apache 脚本已经设置为查找它并在存在时调用它。

这是您打算设置任何安装特定参数的地方。

您将通过以下方式走得更远:

#
# PORT for debug
export JPDA_ADDRESS='8000'

echo start with 'jpda start' parameters to enable debugging.  Tomcat will listen on $JPDA_ADDRESS

CATALINA_OPTS="\
-Dcom.sun.management.jmxremote \
-Dcom.sun.management.jmxremote.port=1299 \
-Dcom.sun.management.jmxremote.authenticate=true \
-Dcom.sun.management.jmxremote.password.file=../conf/jmxremote.password \
-Dcom.sun.management.jmxremote.access.file=../conf/jmxremote.access \
-Dcom.sun.management.jmxremote.ssl=false 

jmxremote.access:

monitorRole readonly
controlRole readwrite

jmxremote.password:此文件必须由启动 Tomcat 的 ID 只读,否则 JMX 将不起作用!即 chmod 400 jmxremote.password

monitorRole  readpass
controlRole  changepass

基本上,您正在设置 2 个 JMX 用户 ID。一种可以访问暴露的吸气剂的方法。另一个也可以访问 setter 和任意 mbean 方法。在实践中,您通常希望提供后者,因此您可以做的不仅仅是看。

SO.... 在您上面的对话框中,它变为

  • 连接:myapp01.example.org:1299
  • 用户名:controlRole
  • 密码:changepass
于 2015-01-14T19:26:32.380 回答