やること
環境
ローカルMac OS version
sw_vers ProductName: Mac OS X ProductVersion: 10.11.6 BuildVersion: 15G31
ローカルSSH version
ssh -V OpenSSH_6.9p1, LibreSSL 2.1.8
java version
java -version java version "1.8.0_102" Java(TM) SE Runtime Environment (build 1.8.0_102-b14) Java HotSpot(TM) 64-Bit Server VM (build 25.102-b14, mixed mode)
Javaアプリケーションの設定
Javaアプリケーションの起動シェルはこんなかんじ
#!/bin/sh JVM_OPS="-server -Xms128M -Xmx128M \ -Dcom.sun.management.jmxremote.rmi.port=18080 \ -Djava.rmi.server.hostname=10.x.x.x \ -Dcom.sun.management.jmxremote=true \ -Dcom.sun.management.jmxremote.port=18080 \ -Dcom.sun.management.jmxremote.authenticate=false \ -Dcom.sun.management.jmxremote.ssl=false" java ${JVM_OPS} -jar foo.jar >/dev/null 2>&1 & exit 0
これをたたく。
sshでsocks proxyをつくる
ssh configはこんなかんじ
Host fumidai HostName 10.x.x.x Port 22 IdentityFile ~/.ssh/foo.pem User user Host target HostName 10.x.x.x Port 22 IdentityFile ~/.ssh/foo.pem User user ProxyCommand ssh -F ~/.ssh/config -W %h:%p fumidai DynamicForward 10000
sshコマンド実行、proxyつくる
ssh -F ~/.ssh/config target
これでproxyがつくられる
VisualVM or JConsoleで接続する
VisualVM
jvisualvm -J-DsocksProxyHost=localhost -J-DsocksProxyPort=10000 -J-DsocksNonProxyHosts=
VisualVMが起動したら、上の例だと、127.0.0.1:18080に対して、JMX接続を追加すればOK
JConsole
jconsole -J-DsocksProxyHost=localhost -J-DsocksProxyPort=10000 -J-DsocksNonProxyHosts=
ここまで至るの長かったわー