5 EDQをモニターするためのJMX拡張の使用

この章では、EDQの運用にかかわる多数の詳細情報を監視および管理するために使用できる、EDQのJava Management Extensions (JMX)インタフェースについて説明します。JMXはJavaコンポーネントのリモート管理および監視用に設計されたJavaテクノロジです。

この章の内容は次のとおりです。

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です。このプロパティは、EDQコマンドライン・ツールによって使用される内部JMXサーバーとRMI APIへのアクセスをともに制御します。

JMXの構成を次のように変更できます。

  • コマンドライン・インタフェースを使用せず、EDQ JMX BeansがTomcatアプリケーション・サーバーのJMXツリー(内部JMXサーバーではありません)に表示されるようにする場合は、management.portプロパティを0に変更します。

    management.port=0

    management.portをゼロに設定した場合、RMIレジストリはどのポートもリスンしません。これは、内部JMXが使用されず、かつ、RMI APIも使用できないことを意味します。そのため、コマンドライン・ツールはmanagement.portが0に設定されていると動作しません。

  • Oracle WebLogic Serverを使用していて、コマンドライン・インタフェースを使用せず、EDQ JMX BeansがWebLogic ServerのJMXツリーに表示されるようにする場合は、構成ディレクトリのdirector.propertiesファイルに次のプロパティを追加します。コマンドライン・ツールでRMI APIを使用できるように、management.portの設定を8090のままにします。

    management.jndiname=java:comp/env/jmx/runtime

JMX Beanネーミングについて

EDQ JMX Beansで使用されるネーミング・スキーマは、Jconsoleで十分に機能するように設計されています。しかし、他のJMXクライアントが変更されたネーミング・スキームを必要とする場合があります。

EDQ JMX Beansで使用される名前は、適切なJavaScriptまたはGroovyファイルを作成して構成ディレクトリに配置し、director.propertiesmanagement.namemaker.scriptfileプロパティでそのファイルの存在を指定することにより、カスタマイズできます。

例の確認

この例は、デフォルトのEDQ JMX Beanネーミング・スキーマを変更して名前の末尾にタイプ属性を追加する方法を示しています。type属性はJava Beanクラスに基づきます。

  1. 構成ディレクトリにjmxnames.jsという名前のファイルを作成し、次のJavaScriptを追加します。
    /**	
    * Adds a type attribute to the name of a JMX Beans.	
    * 
    * @param beanclass The bean class name	
    * @param domain The domain name	
    * @param names The name strings 
    * 
    * @return The name string	
    */	
    function objectNameFor(beanclass, domain, names) 
    {	
    var type = beanclass == null ? "*" : beanclass.substring(beanclass.lastIndexOf('.') + 1); 
    var out;	
    /*	
    * The names array always has 2 elements.	
    */	
    out = domain + ":" + "component=" + escape(names[0]) + ",name=" + escape(names[1]);	
    for (var i = 2; i < names.length; i++)	
    {	
    var index = i-1	
    out += "," + "name" + index + "=" + escape(names[i]);	
    }	
    return out + ",type=" + type;	
    }	
    
  2. director.propertiesファイルに次の行を追加します。

    management.namemaker.scriptfile = jmxnames.js

  3. EDQアプリケーション・サーバーを再起動します。

    JMX Beansでは名前の最後に型修飾子が含まれるようになります。

リアルタイム・プロセスの監視

EDQには、その運用にかかわる様々な状態を監視するために使用できる組込みJMXサーバーが付属しています。EDQアプリケーションを構成する多くのオブジェクトとリソースは、リアルタイムWebサービスを含む、MBeansをJMXサーバーに提供します。

リアルタイム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ファイルで定義されます。

リアルタイムMBeansの監視

JConsoleなどの一般的なJMXコンソールを使用して、MBeansと対話できます。個々のMBeanは次を公開します。

  • その値を読み取ることができる属性。

  • 起動してMBeanでいくつかのアクションを実行できる操作。

  • クライアントがMBeanで発生するイベントの通知をサブスクライブできるインタフェース。

EDQリアルタイムWebサービスMBeansは次の属性を使用します。

属性 説明

closetime

バケットが最後に閉じられた時間。

concurrent

同期リクエストの現在の数。

maxConcurrent

バケットが開かれてからの同時同期リクエストの最大数。

maxConcurrentMax

起動時以降の同時同期リクエストの最大数。

messages

バケットが開かれてから処理されたメッセージ数。

open

バケットが開いているかまたは閉じているかを示します。

openCount

起動時以降のバケットが開かれた回数。

opentime

バケットが最後に開かれた時間。

processtime

最後のメッセージが処理された時間。

records

バケットが開かれてから処理されたレコード数。

threads

最後に開かれたときにバケットを使用したスレッドの数。

totalMessages

起動時以降に処理されたメッセージの数。

totalRecords

起動時以降に処理されたレコードの数。

EDQリアルタイムWebサービスMBeansは次の操作を公開します。

属性 説明

closedown

このバケットを使用してリーダーまたはライターを停止します。