jconsole で JBoss7 をモニタリングするには、ユーザ登録が必要です。JBoss7の場合はデフォルトでモニタリングをするための設定がありますから、Tomcatほど手順は必要ありません。
準備
ここでは、ファイアウォールを越えたりする場合のことも考えて、リモートから接続するにあたっては SSH ポートフォワードで接続する方法を使ってみます。
- jboss.localdomainというホストでtomcatを稼働しているとします。
- jboss.localdomainのマシンでは、/usr/java/jdk1.7.0_17 に JDK7 をインストールし、JBoss7 を $HOME/applications/jboss-as-7.1.1.Final へインストールしておきます。
- クライアントマシンでは、JDK7は$HOME/applications/java/jdk1.7.0_17 にインストールし、JBoss7 を $HOME/applications/jboss-as-7.1.1.Final へインストールしておきます。
ローカルマシンで確認
まずは、同じマシンで JBoss7 と jconsole を使ってみましょう。
あらかじめJBoss7を起動しておきます。ここではスタンドアロンで起動していますから、ポート9999で接続をします。ドメインモードで起動した場合の接続ではポートは4447になります。
$ JAVA_HOME=/usr/java/jdk1.7.0_17 $HOME/applications/jboss-as-7.1.1.Final/bin/standalone.sh
モニタリングするには、JBoss7に付属している jconsole.sh を使います。このスクリプトでは必要なクラスをCLASSPATHへ設定して、内部的に JDK の jconsole を利用しています。
$ JAVA_HOME=/usr/java/jdk1.7.0_17 $HOME/applications/jboss-as-7.1.1.Final/bin/jconsole.sh
起動した画面で、プロセスへ接続すると、JBoss7のモニタができます。
リモートマシンで確認
次にリモートマシンで動作するJBoss7へクライアントマシンから接続をする場合の設定についてみてみましょう。
jboss.localdomain上で、管理ユーザを登録しておく必要があります。管理ユーザを追加するには下記コマンドを実行します。
$ JAVA_HOME=/usr/java/jdk1.7.0_17 $HOME/applications/jboss-as-7.1.1.Final/bin/add-user.sh
下記のような手順で user001 を管理ユーザとして登録したとします。「Password:」に対してはパスワードを入力します。
What type of user do you wish to add? a) Management User (mgmt-users.properties) b) Application User (application-users.properties) (a): a Enter the details of the new user to add. Realm (ManagementRealm) : Username : user001 Password : Re-enter Password : About to add user 'user001' for realm 'ManagementRealm' Is this correct yes/no? yes
これで、user001 の認証情報が $JBOSS_HOME(ここでは$HOME/applications/jboss-as-7.1.1.Final)の standalone/configuration/mgmt-users.properties と mgmt-users.properties とに保存されます。
次のようにして確認できます。
$ cat $HOME/applications/jboss-as-7.1.1.Final/standalone/configuration/mgmt-users.properties $ cat $HOME/applications/jboss-as-7.1.1.Final/domain/configuration/mgmt-users.properties
これで準備ができました。JBoss7を起動します(すでに起動しているなら再起動をします)。ここではスタンドアロンで起動していますから、ポート9999で接続をします。ドメインモードで起動した場合の接続ではポートは4447になります。
$ JAVA_HOME=/usr/java/jdk1.7.0_17 $HOME/applications/jboss-as-7.1.1.Final/bin/standalone.sh
クライアントマシンでは次のようなスクリプトを用意すると良いでしょう。SSHポートフォワードを停止するスクリプトも用意するといいかもしれません。そちらは自分で考えてみてください。
#!/bin/sh JDK_HOME=$HOME/applications/java/jdk1.7.0_17 #for mac #JDK_HOME=`/usr/libexec/java_home -v 1.7` JBOSS_HOME=$HOME/applications/jboss-as-7.1.1.Final ssh -f -N -L4447:localhost:4447 -L9999:localhost:9999 jboss.localdomain JAVA_HOME=$JDK_HOME $JBOSS_HOME/bin/jconsole.sh
表示される画面で、RemoteProcess へ「service:jmx:remoting-jmx://localhost:9999」、Username へ「user001」、Password へ登録したパスワードを指定して OK をクリックすると接続して JBoss7 のモニタリングができます。
Java7 でのモニタリングについては、「Monitoring and Management Using JMX Technology – Java SE Monitoring and Management Guide」が参考になります。Apache Tomcat7 でのモニタリングについては「Apache Tomcat 7 Configuration Reference (7.0.37) – The LifeCycle Listener Component」が参考になります。