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