今天弄出来了jconsole监控jvm,分享给大家,如果有需要的话,很有用处,主要的精华在于红体的地方,是灵光一现想到的办法,与大家共勉之^_^
内网配置jconsole 并通过外网连接:
内网192.168.0.37上:
JAVA_HOME=/home/jdk
mkdir $JAVA_HOME/jconsole
cp $JAVA_HOME/jre/lib/management/jmxremote.password.template $JAVA_HOME/jconsole/jmxremote.password
chmod 600 $JAVA_HOME/jconsole/jmxremote.password
vi jmxremote.password
去掉#monitorRole RED前的注释并将RED修改为你要设置的密码。(安全起见,只开放有只读权限的用户)
修改 $RESIN_HOME/bin/start.sh,添加以下参数:
-J-Dcom.sun.management.jmxremote.port=8858 -J-Dcom.sun.management.jmxremote.password.file=$JAVA_HOME/jconsole/jmxremote.password -J-Dcom.sun.management.jmxremote.ssl=false
在内网37上执行:hostname -->执行结果为:bj37.sina.com,则需要修改/etc/hosts文件,增加以下一行:
212.10.4.25 bj37.sina.com
212.10.4.25是从外网连接jconsole的服务器ip,(如果resin服务器有外网,直接写外网真实ip即可)
外网212.10.4.25上的iptables设置DNAT,以便转发请求给后台的resin:
iptables -F
iptables -t nat -F
MY_SERVER_IP=212.10.4.25
echo 1 >/proc/sys/net/ipv4/ip_forward
iptables -t nat -A POSTROUTING -d 0/0 -j MASQUERADE
iptables -t nat -A PREROUTING -p tcp -d $MY_SERVER_IP -j DNAT --to-destination 192.168.0.37
注意如果这个外网需要给不同的后台做DNAT的话,需要指定目的端口,如:
iptables -F
iptables -t nat -F
MY_SERVER_IP=212.10.4.25
echo 1 >/proc/sys/net/ipv4/ip_forward
iptables -t nat -A POSTROUTING -d 0/0 -j MASQUERADE
iptables -t nat -A PREROUTING -p tcp -d $MY_SERVER_IP --dport 520 -j DNAT --to-destination 192.168.0.37:88
iptables -t nat -A PREROUTING -p tcp -d $MY_SERVER_IP --dport 39959 -j DNAT --to-destination 192.168.0.37:39959
注:
520--外面的客户连接37的jconsole的端口
39959--37上启动jmx以后随机分配的端口,这个需要继续研究,看能否让jmx固定地分配某个端口,否则的话,对iptables防火墙的规则是个小麻烦。
阅读(1364) | 评论(1) | 转发(0) |