JBoss Data Gridを監視してみよう
はじめに
JBoss Data Grid(以降、JDG)を使ってみようという本連載も中盤にさしかかります。これまでの記事はJDGを使った開発方法に重きを置いてきましたが、今回はアプローチを変えて、JDGに格納されているキャッシュ情報を監視する方法を紹介したいと思います。
監視の仕組み
JDGではインスタンスの状態やキャッシュのデータを外部から監視するための仕組みとして、大きく3つの方式を提供しています。それぞれの方式をご紹介しますが、実際に動作確認をされる場合には、第3回の「JBoss Data Gridを使ってみる:インストール編」で紹介した方法でJDGのサーバインスタンスを起動しておく必要があります。
JConsole
1つめがJConsoleを利用した方式です。ご存知の通りJConsoleはJDKに付属されているツールで、JMX MBeanを利用して属性の取得/登録を行うことが出来ます。
また、JConsoleの起動パラメータにJDGで提供されている接続用のプラグインを追加することで、本製品に特化した機能を利用することが可能になっています。その場合には、jconsoleの起動オプションで以下のライブラリに対するクラスパスを追加する必要があります(以下は、JDG6.1.0の場合の設定)。
$JAVA_HOME/lib/jconsole.jar $JAVA_HOME/lib/tools.jar $JBOSS_HOME/modules/org/jboss/remoting3/remoting-jmx/main/remoting-jmx-1.0.4.Final-redhat-1.jar $JBOSS_HOME/modules/org/jboss/remoting3/main/jboss-remoting-3.2.13.GA-redhat-1.jar $JBOSS_HOME/modules/org/jboss/logging/main/jboss-logging-3.1.2.GA-redhat-1.jar $JBOSS_HOME/modules/org/jboss/xnio/main/xnio-api-3.0.7.GA-redhat-1.jar $JBOSS_HOME/modules/org/jboss/xnio/nio/xnio-nio-3.0.7.GA-redhat-1.jar $JBOSS_HOME/modules/org/jboss/sasl/main/jboss-sasl-1.0.3.Final-redhat-1.jar $JBOSS_HOME/modules/org/jboss/marshalling/main/jboss-marshalling-1.3.15.GA-redhat-1.jar $JBOSS_HOME/modules/org/jboss/marshalling/river/main/jboss-marshalling-river-1.3.15.GA-redhat-1.jar $JBOSS_HOME/modules/org/jboss/as/cli/main/jboss-as-cli-7.1.3.Final-redhat-4.jar $JBOSS_HOME/modules/org/jboss/as/controller/main/jboss-as-controller-7.1.3.Final-redhat-4.jar $JBOSS_HOME/modules/org/jboss/as/controller-client/main/jboss-as-controller-client-7.1.3.Final-redhat-4.jar $JBOSS_HOME/modules/org/jboss/as/protocol/main/jboss-as-protocol-7.1.3.Final-redhat-4.jar $JBOSS_HOME/modules/org/jboss/staxmapper/main/staxmapper-1.1.0.Final-redhat-2.jar $JBOSS_HOME/modules/org/jboss/dmr/main/jboss-dmr-1.1.1.Final-redhat-2.jar $JBOSS_HOME/modules/org/jboss/threads/main/jboss-threads-2.0.0.GA-redhat-2.jar
これらのクラスパス設定が面倒と思われる方は、JBoss EAP6に同梱されるjconsole.sh(bat)は上記の設定と同等のことを自動で行っているので、こちらを利用しても良いでしょう。
JConsoleを起動すると接続対象のJDGプロセスを選択する画面が現れます。
表示される画面で接続対象のJDGプロセスを選択してください。なお、ローカルプロセスの場合には気にする必要がありませんが、JConsoleからリモートプロセスに接続する場合には認証が必要になります。
(TIPS)管理ユーザーの追加方法
認証に必要なユーザーは、以下のステップで作成することが出来ます。
$ cd $JDG_HOME/bin $ ./add-user.sh どのようなユーザータイプを追加しますか? a) 管理ユーザー (mgmt-users.properties) b) アプリケーションユーザー (application-users.properties) (a): a 追加する新規ユーザーの詳細を入力します。 レルム (ManagementRealm) : ManagementRealm ユーザー名 : jboss パスワード : パスワードを再度入力してください。 : レルム 'ManagementRealm' にユーザー 'jboss' を追加します。 Is this correct yes/no? yes ユーザー 'jboss' をファイル'/opt/jboss-datagrid-server-6.1.0/standalone/configuration/mgmt-users.properties' に追加しました。 Is this new user going to be used for one AS process to connect to another AS process? e.g. for a slave host controller connecting to the master or for a Remoting connection for server to server EJB calls. yes/no? yes ユーザーを参照するには、server-identities 定義に以下を追加します。<secret value="cGFzc3dvcmQ=" />
上記スクリプトでの入力内容に関しては、下記1~6の操作内容を確認ください。
- 管理ユーザーとして、”a”を選択します。入力しなくてもOKです。
- 管理レルム “ManagementRealm” を選択します。入力しなくてもOKです。
- 適当なユーザー名(上記例では “jboss” )を入力します。
- 適当なパスワードを入力します。
- 入力内容に誤りが無ければ、”yes” を入力します。
- JBoss間で接続する場合の認証にこのユーザーを使うかですが、今回の要点と関係していないため、デフォルトの ”yes” としています。
これにより、$JDG_HOME/standalone/configuration/mgmt-users.propertiesファイルに入力したユーザー(上記の例ではjboss)とハッシュ化されたパスワードが認証用のユーザー情報として追加されます。
接続が完了すると、下記のような画面が表示されるはずです。
この方法ではお手軽に様々な属性を確認できる反面、ログ等を保存する仕組みが無いため、実運用時よりも試験等の際の簡易的な確認に向いていると言えます。