6 EDQをモニターするためのJMX拡張の使用
この章の内容は次のとおりです。
6.1 JMXバインドの理解
EDQは内部JMXサーバー、またはWebLogicかTomcatアプリケーション・サーバーで提供されたもののいずれかを使用できます。このトピックでは、どのJMXサーバーが使用されるかを制御する方法について説明します。
-
Apache TomcatでのEDQのデフォルトのインストールは、内部JMXサーバーを使用します。
-
Oracle WebLogic ServerでのEDQのデフォルトのインストールは、WebLogic Serverアプリケーション・サーバーのJMXツリーを使用します。
デフォルトの構成には、リモート・メソッド呼出し(RMI)レジストリが含まれ、これはJMXクライアントだけでなく、EDQコマンドライン・インタフェースにより使用されます。RMIリスニング・ポート番号は、director.properties
ファイルに定義される、management.port
プロパティで指定されます。デフォルトは8090です。このプロパティは内部JMXサーバーと、EDQコマンドライン・ツールで使用されるRMI APIの両方へのアクセスを制御します。
JMXの構成を次のように変更できます。
-
コマンドライン・インタフェースを使用せず、(内部JMXサーバーではなく)Tomcatアプリケーション・サーバーJMXツリーにEDQ JMX Beanを表示する場合、management.portプロパティを0に変更します。
management.port=0
management.port
をゼロに設定した場合、RMIレジストリはどのポートもリスンしません。これは、内部JMXが使用されず、かつ、RMI APIも使用できないことを意味します。そのため、コマンドライン・ツールはmanagement.port
が0に設定されていると動作しません。 -
Oracle WebLogic Serverを使用していて、コマンドライン・インタフェースを使用し、WebLogic ServerのJMXツリーにEDQ JMX Beanを表示する場合、構成ディレクトリの
director.properties
ファイルに次のプロパティを追加します。コマンドライン・ツールでRMI APIを使用できるように、management.port
の設定を8090のままにします。management.jndiname=java:comp/env/jmx/runtime
6.2 JMX Beanネーミングについて
EDQ JMX Beanで使用されるネーミング・スキーマは、Jconsoleで十分に機能するように設計されています。しかし、他のJMXクライアントが変更されたネーミング・スキームを必要とする場合があります。
EDQ JMX Beanで使用される名前は、適切なJavaScriptまたはGroovyファイルを作成して構成ディレクトリに配置し、director.properties
のmanagement.namemaker.scriptfile
プロパティでそのファイルの存在を指定することにより、カスタマイズできます
6.3 リアルタイム・プロセスの監視
EDQには、その運用にかかわる様々な状態を監視するために使用できる組込みJMXサーバーが付属しています。EDQアプリケーションを構成する多くのオブジェクトとリソースは、リアルタイムWebサービスを含む、MBeansをJMXサーバーに提供します。
6.3.1 リアルタイムWebサービスMBeansの監視
各リアルタイムWebサービスは、MBeanをそのリーダーと、JMXツリーのライターに登録します。
リーダーを次の場所に登録します。
Runtime/Data/Buckets/Realtime/Projects/Project Name/readers/Web service name
ライターを次の場所に登録します。
Runtime/Data/Buckets/Realtime/Projects/Project Name/writers/Web service name
いずれの場合も、MBeanへのパスには、それを所有するWebサービス、およびWebサービスを含むプロジェクトの名前が含まれます。
Global Webサービス(oedq_local_home/webservices
ディレクトリの.jar
ファイルにデプロイ済)には別のパス名があります。上のパスのProjects/
Project Name
を、単純にGlobal
に置き換えてください。
内部JMXサーバーのポートは、management.port
プロパティによって制御され、director.properties
ファイルで定義されます。
6.3.2 リアルタイムMBeansの監視
JConsoleなどの一般的なJMXコンソールを使用して、MBeansと対話できます。個々のMBeanは次を公開します。
-
その値を読み取ることができる属性。
-
起動してMBeanでいくつかのアクションを実行できる操作。
-
クライアントがMBeanで発生するイベントの通知をサブスクライブできるインタフェース。
EDQリアルタイムWebサービスMBeansは次の属性を使用します。
属性 | 説明 |
---|---|
|
バケットが最後に閉じられた時間。 |
|
同期リクエストの現在の数。 |
|
バケットが開かれてからの同時同期リクエストの最大数。 |
|
起動時以降の同時同期リクエストの最大数。 |
|
バケットが開かれてから処理されたメッセージ数。 |
|
バケットが開いているかまたは閉じているかを示します。 |
|
起動時以降のバケットが開かれた回数。 |
|
バケットが最後に開かれた時間。 |
|
最後のメッセージが処理された時間。 |
|
バケットが開かれてから処理されたレコード数。 |
|
最後に開かれたときにバケットを使用したスレッドの数。 |
|
起動時以降に処理されたメッセージの数。 |
|
起動時以降に処理されたレコードの数。 |
EDQリアルタイムWebサービスMBeansは次の操作を公開します。
属性 | 説明 |
---|---|
|
このバケットを使用してリーダーまたはライターを停止します。 |
6.4 REST APIを使用したMBeanへのアクセスおよび管理
EDQは、多数のJMX MBeanを定義しています。これらのサブセットは、通常、キー設定のモニターまたは変更に使用されます。これには次が含まれます:
- Webサービス・ステータスのモニターに使用されるバケットMBean。
- ロギング・レベルの制御に使用されるロギングMBean。
- Git統合で一般的に使用される、ソース・コード制御ワークスペースの再スキャンをトリガーする操作を含むSCCS MBean。
- ランタイム・スレッドを設定できるランタイムMBean。
JConsoleまたはスクリプトを使用してこれらのMBeanにアクセスできますが、これは効率的でなく、ファイアウォールで問題が発生する可能性があります。EDQ 14.1.2.0.0では、MBean属性の読取りと書込み、およびMBean操作の呼出しを可能にするREST APIが導入されています。
6.4.1 Web対応MBean
RESTインタフェースを持つMBeanには、MBean記述子に追加の属性が含まれます。これらはJConsoleで表示できます。次に、リアルタイム・リーダーMBeanの例を示します:
web.path属性は、MBeanにアクセスするためにhttp://server/edq
の後に使用されるパスです。web.permission属性は、MBeanへのアクセスに必要な権限を示しています。
次のMBeanは、14.1.2.0.0でWeb対応です:
MBean | 説明 | 必要な権限 | Webパス |
---|---|---|---|
ロガー制御 |
ロガー制御MBeanは、EDQに登録されている個々のロガーのロギング・レベルを問合せおよび設定する操作を提供します。 |
システム管理 |
Webパスは次のとおりです:
たとえば、
|
ランタイム・データ・ネクサス |
データ・ネクサスMBeanは、ランタイム・データの環境変数を設定および問合せする操作を提供します。主な使用例は、"randomator"バケットにレコード数を設定することです。たとえば、
|
システム管理 |
MBeanへのパスは次のとおりです
|
バケット・プロバイダおよびコンシューマ |
これらのMBeanは、リアルタイム・プロバイダおよびコンシューマのステータス情報を提供します。属性には、オープン状態とアクティブ状態、およびレコード数が含まれます。 |
「メッセージング・システムへの接続」および該当するプロジェクトへのアクセス権 |
Webパスは次のとおりです:
|
ランタイム・エンジン |
ランタイム・エンジンMBeanは、通常モードおよび間隔モードで使用されるスレッド数を制御する属性を提供します。更新後の値は、次回ジョブが開始されたときに有効になりますが、サーバーの再起動後は保持されません。 |
システム管理 |
MBeanへのパスは次のとおりです
|
ソース・コード制御 |
ソース・コード制御MBeanは、変更のためにワークスペースの場所を再スキャンする操作を提供します。主な使用例は、プル操作後のGit統合です。Webインタフェースは、EDQに付属する |
システム管理 |
MBeanへのパスは次のとおりです
|
ファイル・サーバー制御 |
このMBeanは、構成およびログ・ファイルへのWebアクセスを構成するために使用できます。 |
システム管理 |
「HTTPおよびHTPSサーバーを使用したEDQファイルへのアクセス」を参照してください。 |
6.4.2 MBean用のREST API
MBean用のREST APIを使用すると、次を実行できます:
- MBean属性の読取り
- MBean属性の設定
- MBean操作の呼出し
MBean属性の読取り
GET http://server:port/edq/mbeanpath[?attributes=attr1,attr2]
mbeanpath
コンポーネントは、「Web対応MBean」に記載されているMBean Webパスです。オプションのattributes
パラメータには、返される属性をリストします。省略すると、すべての属性が返されます。
結果は、属性値を含むJSONオブジェクトです。
たとえば、プロジェクトrt内のsummerというWebサービスのactiveおよびopen属性を取得する場合、URLはhttp://server:port/edq/management/mbeans/Runtime/Data/Buckets/realtime/Projects/rt/readers/summer?attributes=active,openになります
結果は次のようになります:
{ "active": 0,
"open": 0
}
MBean属性の設定
POST http://server:port/edq/mbeanpath/setattribute
ペイロードは、次の属性を含むJSONオブジェクトです:
属性 | タイプ | 説明 |
---|---|---|
attribute |
文字列 |
MBean属性名。 |
value |
属性のタイプと一致することが必要 |
属性の新しい値。 |
結果は、MBean属性の前の値に設定された属性previousvalueを含むJSONオブジェクトです。
たとえば、ランタイム・スレッド数を4に設定する場合、URLは次のようになります:
http://server:port/edq/management/mbeans/Runtime/Engine
ペイロードは次のようになります:
{ "attribute": "processThreads",
"value": 4
}
MBean操作の呼出し
POST http://server:port/edq/mbeanpath/invoke
ペイロードは、次の属性を含むJSONオブジェクトです:
属性 | タイプ | 説明 |
---|---|---|
operation |
文字列 |
MBean操作名。 |
arguments |
配列 |
呼出し引数。 |
結果は、コールの結果に設定された属性resultを含むJSONオブジェクトです。
たとえば、ケース管理検索のログ・レベルをFINESTに設定する場合、URLは次のようになります:
http://server:port/edq/management/mbeans/Logging/Case%20Management%20Filter%20Execution
ペイロードは次のようになります:
{ "operation": "setLevel",
"arguments": ["FINEST"]
}
これは、logging.properties
に次を追加することに対応します。
com.datanomic.director.casemanagement.search.level = finest
ロギングMBeanはパス内のロガーの表示名を使用しますが、logging.properties
は内部パッケージ名を使用します。MBean module属性でMBeanパッケージを参照するには、実行中のEDQサーバーでMBean JConsoleにアクセスします(edq | ロギング | ケース管理フィルタの実行)。