なんとな~くしあわせ?の日記

「そしてそれゆえ、知識そのものが力である」 (Nam et ipsa scientia potestas est.) 〜 フランシス・ベーコン

EC2上でJettyにJMXを設定してjconsoleでメモリ使用量を確認する

JMX

仕事でアプリサーバの監視をする必要が出てきたので、Jettyにjmxを設定してみた。

JMXとは Java Management Extensions - Wikipedia の略らしい。

以下のサイトを参考にしました。
d.hatena.ne.jp
ameblo.jp

ハマりどころ

RMI Serverが利用するポートの開放ができておらず、jconsole側で接続がタイムアウトしてしまいました。全部で使用するオプションは5つでした。いずれもJavaの"-D"オプションで指定できるのでファイルはいじってません。

-Dcom.sun.management.jmxremote
-Dcom.sun.management.jmxremote.port=[ポート]
-Dcom.sun.management.jmxremote.authenticate=false
-Dcom.sun.management.jmxremote.ssl=false
-Dcom.sun.management.jmxremote.rmi.port=[ポート]

/etc/default/jetty の設定

  • Jettyをサービス化している前提
$ vim /etc/default/jetty
 
JETTY_HOME="/usr/local/jetty/"
JAVA_OPTIONS="-Dcom.sun.management.jmxremote -Dcom.sun.management.jmxremote.ssl=false -Dcom.sun.management.jmxremote.authenticate=false -Dcom.sun.management.jmxremote.port=1099 -Dcom.sun.management.jmxremote.rmi.port=1099 $JAVA_OPTIONS"

これでアプリを再起動してjconsoleでつなげばOK

  • ネットワーク疎通チェック

netcatでポートスキャンしとくと、1099ポートが開いているか気軽にチェックできます。

$ nc -vz x.x.x.x 1099
x.x.x.x 1099 open