LoginSignup
4
4

More than 5 years have passed since last update.

IBM WAS LibertyのJMX restConnectorを試してみる

Posted at

はじめに

WebSphere Application Server Liberty ProfileのJMX(Java Management Extensions)仕様に基づくサーバ管理情報をJMX REST APIで取得できるよう、restConnector-2.0を試してみたいと思います。

試した環境

  • IBM WebSphere Application Liberty Profile (Open Libertyでも同じように動作します)
    17.0.0.4(旧バージョンでもかまいません)
  • JDK 8
  • Linux版、Windows版およびEclipse上のMac環境で確認。 ホスト版は対象としていません。

LibertyにrestConnectorを組み込む

LibertyサーバでJMX(MBean/MXBean)管理情報をREST公開する方法は簡単で、restConnectorフィーチャをserver.xmlに組み込み、起動することで動作します。
これで、LibertyサーバのJMX管理BeanをREST経由で参照できます。

server.xml
  <featureManager>
      <feature>javaee-7.0</feature>
      <feature>monitor-1.0</feature>
      <feature>restConnector-2.0</feature>
  </featureManager>

restConnector-2.0フィーチャーの他にmonitor-1.0フィーチャも追加しています。monitor-1.0フィーチャーはLibertyサーバのJMX管理情報を広げてくれるますので、合わせて使用すると便利です。
monitor-1.0フィーチャの提供する管理情報はIBM Knowledge Centerの「Liberty Profileで提供されている MBean のリスト」を参照してください。

JMX REST APIは、httpsでアクセスする必要があるため、サーバ認証が行えるよう、認証ユーザも追加しておきます。

server.xml
    <basicRegistry id="basic" realm="BasicRealm"> 
        <user password="password" name="jmxuser"/>
    </basicRegistry>

JMXで取得できるMBeanデータはシステム管理情報のため、管理者権限をもつユーザからのみRESTアクセス可能となっています。そのため、作成したユーザには、合わせてLibertyサーバへの管理者ロールを与えておいてください。次のように記述します。

server.xml
    <administrator-role>
        <user>jmxuser</user>
    </administrator-role>

server.xmlの準備ができたら、Libertyサーバを開始します。
サーバ起動後、REST APIでJMXサーバ管理情報へアクセスが可能になります。

ブラウザでLibertyのサーバ管理情報を取得してみる

ウェブ・ブラウザからLibertyサーバへアクセスし、JMXサーバ管理情報をREST API経由で取得できるか確認してみます。restConnectorによって、次のアクセス・ポイントが公開されています。

https://xxxxxxxx/IBMJMXConnectorREST/

/IBMJMXConnectorREST/エントリ・ポイントを使用してJMX MBeanあるいはMXBeanの情報を取得してみます。
例えば、ObjectName=WebSphere:type=JvmStatsの管理するUsedMemoryの値を問い合わせるのであれば、次のようにパラメータを指定します。

https://xxxxxxxx/IBMJMXConnectorREST/mbeans/WebSphere%3Atype%3DJvmStats/attributes/UsedMemory

スクリーンショット 2018-01-19 15.12.53.png
結果がJSON形式で戻されますので、いろいろなプログラム言語やツールで情報を利用できます。

jconsoleからrestConnectorにリモート接続してみる

restConnector経由で、リモート端末のjconsoleからもREST APIによるJMXアクセスが可能ですので、こちらも試してみたいと思います。

jconsoleを起動(-J-Dオプション付き)

service:jmx:restプロトコルでjconsoleとLibertyサーバーをリモート接続するには、SSLでの接続を可能にする必要がありませにで、-J-Dオプションを使用し、次のようjconsoleをSSLアクセス用に起動します。
※自分のMacBook Airでは、何故かjconsoleでのREST接続がうまく出来ませんでした。
そのため、以降はWindows環境を前提にjconsoleを操作を記述しています。

jconsole 
-J-Djava.class.path=${JAVA_HOME}¥lib¥jconsole.jar:${WAS_DIR}¥clients¥restConnector.jar
-J-Djavax.net.ssl.trustStore=key.jks
-J-Djavax.net.ssl.trustStorePassword=password
-J-Djavax.net.ssl.trustStoreType=jks 

通常、jconsoleと打鍵するだけでコンソール画面は起動しますが、Liberty RESR APIでのjconsoleを利用するには、更にjconsole.jar、restConnector.jar、各実行ライブラリの指定が必要です。restConnector.jarは、Libertyサーバに付属するランタイム・プログラムで、JMX REST APIを使用する上で必要になるクライアント・ライブラリです。Libertyサーバを導入した、[インストール・ディレクトリ]/clientsディレクトリに格納されていますので、事前にコピーを入手しておいてください。

SSL通信を行うためのtrustStoreの設定も必要です。key.jksファイルはLibertyサーバで生成されたサーバ証明ファイルです。ファイル生成の際の指定したパスワードとも一致させます。こちらも、Libertyサーバから予め入手しておいてください。

jconsoleが起動したら、「リモート・プロセス」を使用して接続設定を行います。入力エリアに、”service:jmx:rest://(サーバアドレス):443/IBMJMXConnectorREST”と入力します。なお、IHSを経由していないのであれば、直接LibertyのSSLポート(例えば9443)を指定します。

jconsole_login.png

jconsoleのLibertyサーバ接続が成功した後は、普段どおりのjconsole機能がそのまま使えます。REST経由での接続でも、jconsole自体の使い勝手は同じです。

なお、montor-1.0フィーチャーを組み込んでいますので、"WebSphere"と言うキーワードのWAS独自のサーバ管理カテゴリーの情報も参照できます。
jconsole_logded.png

おわりに

WebSphere Application Server Liberty Profileのサーバ管理情報を、JMX REST APIで取得するrestConnectorフィーチャーを使用してみました。

出典・参考

4
4
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
4
4