在公司微服务上开启JMX,同时通过ssh反向代理,开本地端口,把本地端口代理到服务器JMX端口(因为服务器无法直接在办公网络访问)。
#代理
ssh -fnNT -R 10011:127.0.0.1:10011 [email protected]
#JVM参数
-Djava.rmi.server.hostname=127.0.0.1 \\
-Dcom.sun.management.jmxremote.port=10011 \\
-Dcom.sun.management.jmxremote.rmi.port=10011 \\
-Dcom.sun.management.jmxremote.authenticate=false \\
-Dcom.sun.management.jmxremote.ssl=false \\
-Dcom.sun.management.jmxremote.port=10011 \\
-Dcom.sun.management.jmxremote.authenticate=false \\
-Dcom.sun.management.jmxremote.ssl=false \\
这么配置,本地telnet 10011可以,但是jconsole连不上。查资料,是说还有一个随机数据端口。
尝试再开一个ssh,代理该端口。依然失败。
-Dcom.sun.management.jmxremote.port=10011 \\
-Dcom.sun.management.jmxremote.rmi.port=10011 \\
-Dcom.sun.management.jmxremote.authenticate=false \\
-Dcom.sun.management.jmxremote.ssl=false \\
添加该端口,依然失败。
因为服务器有多个网络interface,猜测访问数据端口用的10.*网段的IP。
-Djava.rmi.server.hostname=127.0.0.1 \\
-Dcom.sun.management.jmxremote.port=10011 \\
-Dcom.sun.management.jmxremote.rmi.port=10011 \\
-Dcom.sun.management.jmxremote.authenticate=false \\
-Dcom.sun.management.jmxremote.ssl=false \\
成功。说明需要强制指定ip,否则,会使用10网段。