Linuxで起動したTomcatにJMXで接続できない問題
(0)
(0)
(0)
(0)
Total: 0

今、JMXでキャッシュをコントロールする仕組みを開発しているのですが、Linux上でtomcatを起動して、JMXを接続しようとするのですが、なぜか接続できなくて数時間悩みました。
色々調べて分かったのですが、Linux側で「hostname -i」と叩いて「127.0.0.1」と返ってくるとダメなようで、LANのIPなりグローバルIPなりが返答されないといけないようです。
あと、Java6以降では、com.sun.management.jmxremote.port=(ポート番号) を
指定するだけで良いという記事が多く見られましたが、私の環境では「com.sun.management.jmxremote=true」をVMオプションに指定しないと接続できませんでした(telnetはできたのでポートは開いているようです)
Linux上で起動したTomcatにJMXを利用するための詳細な手順は以下の通り。
前提:Java6とTomcatがインストール済み
1.$JRE_HOME/lib/management/ に移動
2.jmxremote.access の最終行付近の「ユーザ名」と「権限」を設定 (そのままでもOK)
3.jmxremote.password.template を jmxremote.password というファイル名でコピー
4.jmxremote.password の最終行に(2)で指定した「ユーザ名」に「パスワード」を設定 (テストなら最後2行の#を消すだけでもOK)
5.jmxremote.password の所有者をTomcatの実行者に変更
6.jmxremote.password の権限を所有者のみが読める(400)ように設定
7.環境変数 JAVA_OPTS に-Dcom.sun.management.jmxremote=true -Dcom.sun.management.jmxremote.port=(好きなポート番号) -Dcom.sun.management.jmxremote.authenticate=false -Dcom.sun.management.jmxremote.ssl=false
8.Tomcatを起動
9.(7)で指定したポートが外部から接続できるようにファイアーウォールを設定 (↓のような感じ)
「/usr/sbin/iptables -I INPUT -s (接続元のHOSTやIP) -p tcp –destination-port (7で指定したポート番号) -j ACCEPT」
10.Java6をインストールしたリモート環境で、$JDK_HOME/bin/jconsoleを起動
11.リモートプロセスに接続

最初の画像のような画面が表示されれば成功です!


メールで購読