ページ

2010年12月8日水曜日

JMX経由でTomcatサーバを監視する

JMX経由でTomcatサーバを監視する

■ 概要
jconsoleで Windows PC から Linux サーバ上で稼動している Tomcat サーバに対して接続し、
リソース使用状態を監視する方法についてまとめた。

このjconsole、「接続しようとしても接続できない」という問題に結構出会う。

jconsoleとは
Sun JDK 6 の中には、コンパイラ javac の他にも、いくつか役に立つツールが含まれている。
jconsole は、Java プログラムに対し、次のような情報を得ることができる。

・パフォーマンス情報
・メモリの使用状態
・稼働中のスレッドに関する情報
・JMX


■ 設定方法に関する注意点

1.hostname -i を実行して、127.0.0.1 が返ってきた場合、まずこれを解決する必要がある。

------------------------------------------
# hostname -i
127.0.0.1
------------------------------------------

/etc/hosts を修正する
127.0.0.1 が返ってくる場合、/etc/hosts を見ると、
おそらく次のように記述されていると思う。

------------------------------------------
# cat /etc/hosts
127.0.0.1 localhost dev.ise-web.com
------------------------------------------

これを、次のように修正する。dev.ise-web.com に対し、このホストのIPアドレスを記述する。

------------------------------------------
# cat /etc/hosts
127.0.0.1 localhost
192.168.11.6 dev.ise-web.com
------------------------------------------

再度、hostname -i を実行して確認し、ホストのIPアドレスが返ってきたらOK。

# hostname -i
192.168.11.6

ホストに複数のIPアドレスが設定されている場合は?
例えば1つのホストにローカルIPとグローバルIPのように2つが設定されているようなケースでは、
「管理用PCから接続するときの IPアドレス」が hostname -i で返ってこなければならない。
Javaサーバの起動スクリプトの修正
tomcat を起動するときの Java のパラメータに、次のオプションを追加する。

------------------------------------------
-Dcom.sun.management.jmxremote
-Dcom.sun.management.jmxremote.port=7900
-Dcom.sun.management.jmxremote.ssl=false
-Dcom.sun.management.jmxremote.authenticate=false
------------------------------------------

設定後、tomcat を起動する。

# /etc/init.d/tomcat start

ファイアウォールに穴をあける
例えば、Java サーバに iptables でパケット・フィルタリングを実施している場合、
「管理PCから jmx ポートへのアクセスを許可」の設定を行う必要がある。

ここで注意しなければならないのが、この機能では次の2つのポートを空ける必要があること。

・com.sun.management.jmxremote.port で指定したポート (上記例では 7900)
・そのポート~65535

したがって、例えば管理PC 192.168.11.10 が tomcat サーバのホスト
192.168.11.6 に jconsole で接続する場合、 192.168.11.6 上の /etc/sysconfig/iptables に次のような記述を加える。

改行せず、1行につなげる
-A RH-Firewall-1-INPUT -m state --state NEW
-m tcp -p tcp -s 192.168.11.10 --dport 7900:65535 -j ACCEPT

これで準備完了!


0 件のコメント:

コメントを投稿