JBoss Data Gridを監視してみよう

2013年9月11日(水)
高橋 丈

はじめに

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プロセスを選択する画面が現れます。

図1:JConsole接続プロセス選択画面(クリックで拡大)

表示される画面で接続対象の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の操作内容を確認ください。

  1. 管理ユーザーとして、”a”を選択します。入力しなくてもOKです。
  2. 管理レルム “ManagementRealm” を選択します。入力しなくてもOKです。
  3. 適当なユーザー名(上記例では “jboss” )を入力します。
  4. 適当なパスワードを入力します。
  5. 入力内容に誤りが無ければ、”yes” を入力します。
  6. JBoss間で接続する場合の認証にこのユーザーを使うかですが、今回の要点と関係していないため、デフォルトの ”yes” としています。

これにより、$JDG_HOME/standalone/configuration/mgmt-users.propertiesファイルに入力したユーザー(上記の例ではjboss)とハッシュ化されたパスワードが認証用のユーザー情報として追加されます。

接続が完了すると、下記のような画面が表示されるはずです。

図2:JConsole画面(クリックで拡大)

この方法ではお手軽に様々な属性を確認できる反面、ログ等を保存する仕組みが無いため、実運用時よりも試験等の際の簡易的な確認に向いていると言えます。

レッドハット株式会社
JBossサービス事業部 ソリューションアーキテクト
SIerでWeb系フレームワーク構築やコンサルティング業務に携わった後、日本BEAシステムズ、日本オラクル等の外資系ベンダでミドルウェアのプリセールスに従事。2011年より現職。自動車/自転車等のスピードが出るものが好き。

連載バックナンバー

Think ITメルマガ会員登録受付中

Think ITでは、技術情報が詰まったメールマガジン「Think IT Weekly」の配信サービスを提供しています。メルマガ会員登録を済ませれば、メルマガだけでなく、さまざまな限定特典を入手できるようになります。

Think ITメルマガ会員のサービス内容を見る

他にもこの記事が読まれています