如何在JVM上激活JMX以便使用jconsole进行访问?
我似乎从来没有让这个工作过去.目前,我知道它不起作用.
但是我们启动了Java进程:
-Dcom.sun.management.jmxremote
-Dcom.sun.management.jmxremote.port=6002
-Dcom.sun.management.jmxremote.authenticate=false
-Dcom.sun.management.jmxremote.ssl=false
Run Code Online (Sandbox Code Playgroud)
我可以telnet到端口,"有东西"(也就是说,如果我不启动过程,没有任何答案,但如果我这样做,它确实),但我无法让JConsole工作填写IP和港口.
似乎它应该如此简单,但没有错误,没有噪音,没有任何东西.只是不起作用.
有人知道这个热门提示吗?
我正在尝试打开与远程计算机上运行的Java应用程序的JMX连接.
应用程序JVM配置有以下选项:
我可以localhost:1088使用jconsole或jvisualvm 进行连接.但是我无法使用xxx.xxx.xxx.xxx:1088远程计算机进行连接.
服务器之间或操作系统之间没有防火墙.但是为了消除这种可能性我telnet xxx.xxx.xxx.xxx 1088和我认为它连接起来,因为控制台屏幕变成了空白.
两台服务器都是Windows Server 2008 x64.尝试使用64位JVM和32位,都不起作用.
我正在尝试使用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"
Run Code Online (Sandbox Code Playgroud) 我应该使用JMX连接到localhost jvm上的java程序.换句话说,我想开发一个JMX客户端来在localhost上配置java程序.
不建议使用JConsole!JConsole不适用,因为它是一般的JMX客户端,对主程序性能有负面影响.
oracle站点上的示例使用RMIConnector和host:port params,但我不知道:应该在哪里设置jmx端口?
JConsole有一个通过PID连接到java进程的选项.但我没有在JMX api中找到任何具有PID作为输入参数的方法.
我目前正在使用它jconsole来监控我的Java应用程序的性能指标,并希望编写此数据采集的脚本.
有没有办法检索这些VM指标(堆内存使用情况,线程数,CPU使用率等)STDOUT?
数据top -p PID -b -n 1并没有完全削减它.
谢谢
我想使用JConsole来监视我的Websphere应用程序,但我不知道如何启用JMX.
我的具体问题与JDK 1.6中使用的JMX有关:如果我使用JRE 1.6运行Java进程
com.sun.management.jmxremote
Run Code Online (Sandbox Code Playgroud)
在命令行中,Java是否为远程JMX连接选择了一个默认端口?
背景故事:我目前正在尝试开发一个程序,让客户能够通过JMX从远程机器连接到我们的一个进程.目标是实现对实时显示控制台上发生的情况的远程调试.由于他们的服务级别协议,他们强烈有动力捕获尽可能多的数据,如果情况看起来太复杂,无法快速修复,重新启动显示控制台并允许它重新连接到服务器端.
我知道我可以在JDK 1.6进程上运行jconsole,在JDK 1.6.7进程上运行jvisualvm,同时可以访问控制台.但是,由于操作要求和涉及的人员问题,我们强烈要求远程获取我们需要的数据并重新启动和运行.
编辑:我知道命令行端口属性
com.sun.management.jmxremote.port=portNum
Run Code Online (Sandbox Code Playgroud)
我想回答的问题是,如果你没有在命令行设置该属性,Java是否会选择另一个端口进行远程监控?如果是这样,你怎么能确定它可能是什么?
我们在连接到在Amazon的EC2集群中运行的Java应用程序时遇到问题.我们肯定允许"JMX端口"(通常是RMI注册表端口)和服务器端口(完成大部分工作)到相关实例的安全组.Jconsole连接但似乎挂起并且从不显示任何信息.
我们正在运行我们的java,如下所示:
java -server -jar foo.jar other parameters here > java.log 2>&1
Run Code Online (Sandbox Code Playgroud)
我们尝试过:
jconsole在ssh上使用remote-X11在实例上运行,它可以连接并显示信息.因此JRE 是本地出口的.tcpdump以确保交通不会到其他端口.java -version 输出:
OpenJDK Runtime Environment (IcedTea6 1.11.5) (amazon-53.1.11.5.47.amzn1-x86_64)
OpenJDK 64-Bit Server VM (build 20.0-b12, mixed mode)
Run Code Online (Sandbox Code Playgroud)
顺便说一句,我们使用的是我的简单的JMX包,它允许我们设置两个 RMI注册表和服务器端口,一般是通过RMI注册表半随机选择的.您还可以使用以下JMX URI强制执行此操作:
service:jmx:rmi://localhost:" + serverPort + "/jndi/rmi://:" + registryPort + "/jmxrmi"
Run Code Online (Sandbox Code Playgroud)
这些天我们为服务器和注册表使用相同的端口.在过去,我们使用X注册表端口和X+1服务器端口来简化安全组规则.您连接到注册表端口jconsole或您正在使用的任何JMX客户端.
我正在使用JConsole访问正在运行的MBean.
MBean使用自定义Jaas登录模块,并使用以下命令运行:
java -classpath UserLGUGroupHandlingApplication.jar;MBeanSecure.jar
-com.sun.management.jmxremote.login.config=management.properties
-Djava.security.auth.login.config=./sample_jaas.config
com.test.running.RunningImplementation
Run Code Online (Sandbox Code Playgroud)
management.properties文件看起来像这样:
com.sun.management.jmxremote.access.file=jmxremote.access
com.sun.management.jmxremote=true
com.sun.management.jmxremote.authenticate=true
com.sun.management.jmxremote.port=1234
com.sun.management.jmxremote.login.config=Sample
com.sun.management.jmxremote.ssl=false
com.sun.management.jmxremote.ssl.need.client.auth=false
Run Code Online (Sandbox Code Playgroud)
和sample_jaas.config:
Sample {
test.module.AETTLoginModule required debug=true;
};
Run Code Online (Sandbox Code Playgroud)
然后,用户将通过命令行中的JConsole登录来访问此运行进程.
jconsole -debug //or just jconsole
Run Code Online (Sandbox Code Playgroud)
用户选择"远程连接",使用RemoteProcess'localhost:1234'
loginmodule根据当前登录到Windows的用户处理用户验证和主体设置,用于查询单独的授权逻辑以确定访问级别.
我想要发生什么:
问题:
要在jconsole窗口中访问jmx进程,我必须输入一个虚拟用户名和密码,例如U:a,P:a,否则我收到以下错误:
java.lang.SecurityException: Authentication failed! Credentials required
at com.sun.jmx.remote.security.JMXPluggableAuthenticator.authenticationFailure(JMXPluggableAuthenticator.java:193)
at com.sun.jmx.remote.security.JMXPluggableAuthenticator.authenticate(JMXPluggableAuthenticator.java:145)
at sun.management.jmxremote.ConnectorBootstrap$AccessFileCheckerAuthenticator.authenticate(ConnectorBootstrap.java:201)
at javax.management.remote.rmi.RMIServerImpl.doNewClient(RMIServerImpl.java:213)
at javax.management.remote.rmi.RMIServerImpl.newClient(RMIServerImpl.java:180)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:597)
at sun.rmi.server.UnicastServerRef.dispatch(UnicastServerRef.java:303)
at sun.rmi.transport.Transport$1.run(Transport.java:159)
at java.security.AccessController.doPrivileged(Native Method)
at sun.rmi.transport.Transport.serviceCall(Transport.java:155)
at sun.rmi.transport.tcp.TCPTransport.handleMessages(TCPTransport.java:535) …Run Code Online (Sandbox Code Playgroud) jconsole ×10
java ×9
jmx ×9
monitoring ×2
amazon-ec2 ×1
command-line ×1
jaas ×1
java-ee ×1
jvisualvm ×1
jvm ×1
localhost ×1
login ×1
performance ×1
rmi ×1
tomcat ×1
websphere ×1