WebLogic診断フレームワーク(WLDF)のハーベスタ・コンポーネントでは、実行中のサーバーでインスタンス化される修飾されたMBeanの属性からメトリックを収集します。ハーベスタは、WebLogic Server MBeanおよびカスタムMBeanからもメトリックを収集できます。
この章には、ハーベスタとその構成方法に関する次の項が含まれています。
データが収集可能な状態になるには、一定の条件が必要です。また、収集対象になるには、さらに条件が必要となります。
「収集可能データ」は、MBeanの型、インスタンス、属性など、「収集可能エンティティ」から収集できるデータです。収集可能な状態にするには、MBeanがローカルのWebLogic ServerランタイムMBeanサーバーに登録されている必要があります。MBeanの単純型の属性のみが収集可能です。
収集対象データは、現在収集されているデータです。収集対象の状態にするには、データが以下の条件をすべて満たしている必要があります。
データが収集可能な状態である必要があります。
データが収集対象になるように構成されている必要があります。
カスタムMBeanの場合は、MBeanがJMXサーバーに現在登録されている必要があります。
データの収集中に例外がスローしてはなりません。
WLDFHarvesterRuntimeMBeanによって獲得可能なデータと獲得済みのデータのセットが提供されます。このMBeanが戻す情報は変化可能な状態のスナップショットです。このMBeanが提供するデータに関する詳細情報は、Oracle WebLogic Server MBeanリファレンスのWLDFHarvesterRuntimeMBeanに関する項を参照してください。
WebLogic Server管理コンソール、WebLogic Scripting Tool (WLST)またはJMXを使用すると、サーバーMBeanおよびカスタムMBeanに格納されているメトリックを収集およびアーカイブするようにハーベスタを構成できます。
表8-1 様々な構成からの収集対象データのソース
収集対象として構成されているエンティティ | データの収集元 |
---|---|
型(のみ) |
指定した型のすべてのインスタンスの収集可能なすべての属性 |
型の属性 (型+属性) |
指定した型のすべてのインスタンスの指定した属性 |
型のインスタンス (型+インスタンス) |
指定した型の指定したインスタンスの収集可能なすべての属性 |
以下の型の1つのインスタンスの1つの属性 (型+インスタンス+属性) |
指定した型の指定したインスタンスの指定した属性 |
すべてのWebLogic ServerランタイムMBeanの型と属性は、起動時に認識されます。そのため、ハーベスタの構成がロードされる場合、WebLogic Serverの収集可能エンティティのセットは、WebLogic ServerランタイムMBeanの型と属性と同じです。型がインスタンス化されると、そのインスタンスも認識されて収集可能になります。
収集可能なカスタムMBeanの型のセットは変動します。カスタムMBeanは、その型が認識される前にインスタンス化する必要があります(型が存在するようになるのは、少なくとも1つのインスタンスが作成されたときからです)。したがって、カスタムMBeanがMBeanサーバーに登録されたり、MBeanサーバーから削除されたりするとともに、カスタムMBeanの収集可能な型のセットは大きくなったり小さくなったりします。新しいMBeanの登録に基づいて新しい型を検出するこのプロセスを、型検出と呼びます。
WebLogic Server管理コンソールを使用してハーベスタを構成する場合は、コンソールによって構成できる獲得可能なエンティティのリストが提供されます。このリストはWebLogic Server MBeanのためにいつも完全なものですが、カスタムMBeanのためのリストには現在に発見されたタイプのみ含まれます。Oracle WebLogic Server管理コンソール・オンライン・ヘルプの診断システム・モジュールで収集するメトリックの構成に関する項を参照してください。
ハーベスタが構成され、メトリックが収集されるのは、1つまたは複数のサーバー・インスタンスを対象にした診断モジュールの範囲内です。ハーベスタの構成には、サンプリング期間、収集するデータのタイプ、およびWebLogic Server MBeanとカスタムMBeanのタイプ名が含まれます。
例8-1に、WLDFシステム・リソース記述子ファイルmyWLDF.xml
のハーベスタ構成要素を示します。このサンプル構成では、ServerRuntimeMBean、WLDFHarvesterRuntimeMBeanおよびカスタム(つまり、非WebLogic Server) MBeanからデータが収集されます。リストに続いて、リスト内の各要素について説明します。
例8-1 ハーベスタ構成のサンプル(DIAG_MODULE.xml内)
<wldf-resource xmlns="http://xmlns.oracle.com/weblogic/weblogic-diagnostics" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> <name>myWLDF</name> <harvester> <enabled>true</enabled> <sample-period>5000</sample-period> <harvested-type> <name>weblogic.management.runtime.ServerRuntimeMBean</name> </harvested-type> <harvested-type> <name>weblogic.management.runtime.WLDFHarvesterRuntimeMBean</name> <harvested-attribute>TotalSamplingTime</harvested-attribute> <harvested-attribute>CurrentSnapshotElapsedTime </harvested-attribute> </harvested-type> <harvested-type> <name>myMBeans.MySimpleStandard</name> <harvested-instance>myCustomDomain:Name=myCustomMBean1 </harvested-instance> <harvested-instance>myCustomDomain:Name=myCustomMBean2 </harvested-instance> </harvested-type> </harvester> <!-- ----- Other elements ----- --> </wldf-resource>
<sample-period>要素は、ハーベスタのサンプル期間をミリ秒で設定します。たとえば:
<sample-period>5000</sample-period>
サンプル期間には、各サイクル間の時間を指定します。たとえば、ハーベスタがTで指定した時間に実行を開始し、サンプル期間がIの場合、次の収集サイクルはT + I に開始されます。サイクルが完了するまでA秒かかり、AがIを上回っている場合、次のサイクルはT+Aに開始されます。この場合ハーベスタは、平均間隔がIになるように、より早く次のサイクルを開始しようとします。
1つまたは複数の<harvested-type>要素で、収集するデータの種類を指定します。各<harvested-type>要素には、メトリックを収集するMBeanの型を指定します。下位要素では、収集されるその型のインスタンスと属性のどちらか、または両方を指定します(オプション)。各オプションを次のように設定します。
<harvested-instance>要素(オプション)では、指定した型のリストされているインスタンスからのみメトリックを収集するように指定します。通常、インスタンスを指定する場合は、そのJMX ObjectNameをJMXの標準書式で記述します。ただし、「ハーベスタ・インスタンス名でのワイルドカードの使用」で説明するように、パターン・マッチを使用すると非標準形式でインスタンス名を指定できます
<harvested-instance>の指定がない場合、各収集サイクルにおいて、そのときに存在するすべてのインスタンスが収集されます。
<harvested-attribute>要素(オプション)では、指定した型のリストされている属性からのみメトリックを収集するように指定します。通常、属性はその名前を記述して指定します。最初の文字は大文字にする必要があります。たとえば、ゲッター・メソッドgetFoo()
が定義されている属性の名前はFooです。
また、<harvested-attribute>要素は、リスト、マップ、単純なPOJO (Plain Old Java Object)、およびこれらが様々な形でネストされたものなど複合、または集約オブジェクトである属性に「ドリルダウン」するための式構文もサポートします。この構文の詳細は、「ハーベスタの複合属性およびネストされた属性の指定」,を参照してください。ただし、データを収集するには、これらの式の結果が組込みの単純型(int
、boolean
、String
など)でなければならない点に注意してください。
<harvested-attribute>の指定がない場合、その型に定義されているすべての属性が収集されます。
1つの型の中で属性とインスタンスのリストを組み合わせることができます。
ハーベスタは、WebLogic Server MBeanとカスタムMBeanをサポートしています。WebLogic Server MBeanは、WebLogic Serverの一部としてパッケージ化されているMBeanです。カスタムMBeanは、ローカル・ランタイムMBeanサーバーに登録されている間は収集可能です。
WebLogic Serverとカスタムの型では、その指定方法が異なります。WebLogic Server MBeanの型では、型名はそのMBeanを定義するJavaインタフェースの名前です。たとえば、サーバーのランタイムMBeanの型名はweblogic.management.runtime.ServerRuntimeMBeanです。
カスタムMBeanの場合、ハーベスタは次のルールに従います。
MBeanがModelMBeanでなければ、型名は実装クラス名です。(例8-1を参照。)
MBeanがModelMBeanの場合、型名はMBean記述子フィールドDiagnosticTypeNameの値。
これらの条件のどちらも満たされていない場合(MBeanがModelMBeanであり、MBean記述子フィールドDiagnosticTypeNameの値がない場合)、MBeanは収集できません。
<harvested-type>要素は、ドメイン・ラインタイムMBeanサーバーに登録されたMBeanからメトリックを収集することができる<namespace>属性をサポートします。ただし、この属性を使用した収集は、ServerLifeCycleRuntimeMBeanなど、Domain Runtime固有のMBeanのみに制限することをお薦めします。リモートの管理対象サーバーMBeanもドメイン・ランタイムMBeanサーバーを介して収集できますが、パフォーマンスに影響するため推奨されません。ベスト・プラクティスは、各管理対象サーバーで常駐ハーベスタを使用し、その管理対象サーバー・インスタンスに関連するメトリックをキャプチャすることです。
<namespace>属性は2つの値の1つを持つことができます。
ServerRuntime
DomainRuntime
<namespace>属性が省略される場合、それはServerRuntimeをデフォルトとします。
ノート:
Domain Runtime MBeanサーバーからの獲得は管理サーバーでのみ使用可能です。管理対象サーバーでDomain Runtime MBeanの収集ができません。例8-5を参照してください。
WLDFでは、できる限り速やかに構成を検証しようとします。ほとんどの構成は、サーバーの起動時および動的な変更がコミットされる度に検証されます。ただし、JMXの制限により、カスタムMBeanはそのインスタンスがMBeanサーバーに登録されるまでは検証されません。
例8-2では、DIAG_MODULE
.xml
構成ファイルの<harvested-type>の要素により、ServerRuntimeMBeanが収集対象として指定されています。<harvested-instance>の下位要素が存在しないので、タイプのすべてのインスタンスが集められます。ただし、サーバーのランタイムMBeanのインスタンスは常に1つだけなので、特定のインスタンスのリストを指定する必要はありません。そして、<harvested-attribute>のある下位要素もないため、MBeanのすべての利用可能な属性がそれぞれの2つのインスタンスに対して収集されます。
例8-2 型のすべてのインスタンスと属性を収集する構成のサンプル(DIAG_MODULE.xml内)
<harvested-type> <name>weblogic.management.runtime.ServerRuntimeMBean</name> </harvested-type>
例8-3では、DIAG_MODULE
.xml
構成ファイルの<harvested-type>要素により、WLDFHarvesterRuntimeMBeanが収集対象として指定されています。上記の例と同様に、存在するWLDFHarvesterRuntimeMBeanは1つだけなので、特定のインスタンスのリストを指定する必要がありません。下位要素<harvested-attribute>は、WLDFHarvesterRuntimeMBeanのTotalSamplingTimeとCurrentSnapshotElapsedTimeという2つの利用可能な属性を収集することを指定しています。
例8-3 型のすべてのインスタンスの指定した属性を収集する構成のサンプル(DIAG_MODULE.xml内)
<harvested-type> <name>weblogic.management.runtime.WLDFHarvesterRuntimeMBean</name> <harvested-attribute>TotalSamplingTime</harvested-attribute> <harvested-attribute>CurrentSnapshotElapsedTime </harvested-attribute> </harvested-type>
例8-4では、DIAG_MODULE
.xml
構成ファイルの<harvested-type>要素により、カスタムMBean型の1つのインスタンスが収集対象として指定されています。この場合、カスタムMBeanなので、型名は実装クラスです。この例では、2つの<harvested-instance>要素で、この型のインスタンスが2つだけ収集されるように指定しています。各インスタンスは、JMX ObjectNameの標準表現を使用することで指定されます。<harvested-attribute>のインスタンスは指定されていないので、すべての属性が収集の対象になります。
例8-4 型の指定したインスタンスの指定したすべての属性を収集する構成のサンプル(DIAG_MODULE.xml内)
<harvested-type> <name>myMBeans.MySimpleStandard</name> <harvested-instance>myCustomDomain:Name=myCustomMBean1 </harvested-instance> <harvested-instance>myCustomDomain:Name=myCustomMBean2 </harvested-instance> </harvested-type>
例8-5では、DIAG_MODULE
.xml
構成ファイルの<harvested-type>要素により、ServerLifeCycleRuntimeMBeanが収集対象として指定されています。<namespace>属性では、これがDomainRuntime MBeanであることを指定しているため、この構成が適用されるのは管理サーバーのみです(「DomainRuntime MBeanServerからの収集」の「ノート」を参照)。下位要素<harvested-attribute>は、StateVal属性のみを収集することを指定しています。
例8-5 ServerLifeCycleMBean型の指定したインスタンスの指定した属性を収集する構成のサンプル
<harvested-type> <name>weblogic.management.runtime.ServerLifeCycleRuntimeMBean</name> <namespace>DomainRuntime</namespace> <known-type>true</known-type> <harvested-attribute>StateVal</harvested-attribute> </harvested-type>
JMS接続が適切にキャッシュされない場合、システムが高負荷下で動作しているときには、数百の接続(およびその結果の対応する接続、プロデューサおよびコンシューマ・ランタイムMBean)が毎秒作成され、破棄されるというようにシナリオが発展する可能性があります。この状況では、ハーベスタとポリシーおよびアクション・システムの両方にストレスがかかる場合があります。
この問題を回避するには、Oracle WebLogic Serverのパフォーマンスのチューニングのクライアント・リソースのキャッシュおよび再使用に関する項で説明されているコーディングのベスト・プラクティスにJMSアプリケーションを準拠させる必要があります。この結果、WLDFのパフォーマンスが向上し、さらにJMSおよびサーバー全体のパフォーマンスも向上します。