Oracle® Fusion Middleware Oracle WebLogic Server 診断フレームワークのコンフィグレーションと使い方 11g リリース 1 (10.3.1) B55523-01 |
|
戻る |
次へ |
WLDF では、<harvested-instance> 要素内のインスタンス名にワイルドカードを使用できます。また、<harvested-attribute> 要素の属性指定でドリルダウン機能とワイルドカード機能を使用できます。
ハーベスタの監視ルールではインスタンス名に同じワイルドカード機能を使用できるだけでなく、複合属性も指定できます。
これらの機能については、以下の節で説明します。
<harvested-instance> 要素内でインスタンス名を指定する場合、以下の処理が可能です。
インスタンス名を非標準形式で表す。これによって、ObjectName のプロパティ リストを順不同で指定できます。
ObjectName を JMX ObjectName クエリ パターンとして表す。この際、プロパティ リストの順序を気にする必要はありません。
ObjectName のプロパティ リスト内の任意の値で 0 個以上の「*」ワイルドカードを使用する。Name=* などと指定します。
0 個以上の「*」ワイルドカードを使用して、標準形式の ObjectName 文字列内の任意の文字シーケンスを置換する。この場合、ワイルドカードで指定していない ObjectName のプロパティはすべて標準形式でなければなりません。
コード リスト C-1 におけるインスタンスの指定では、WorkManagerRuntimeMBean のすべてのインスタンスが収集されることを示しています。これは、<harvested-type> 宣言内でインスタンス名修飾を 1 つも指定しないのと同じです。
コード リスト C-1 MBean のすべてのインスタンスの収集
<harvested-type>
<name>weblogic.management.runtime.WorkManagerRuntimeMBean</name>
<harvested-instance>*<harvested-instance>
<known-type>true</known-type>
<harvested-attribute>PendingRequests</harvested-attribute>
</harvested-type>
コード リスト C-2 の例は <harvested-instance> の値として JMX ObjectName パターンを示しています。
コード リスト C-2 JMX ObjectName パターンの使用
<harvested-type>
<name>com.acme.CustomMBean</name>
<harvested-instance>adomain:Type=MyType,*</harvested-instance>
<known-type>false</known-type>
</harvested-type>
コード リスト C-3 の例では、ObjectName プロパティ リストの一部の値でワイルドカードが指定されています。
コード リスト C-3 プロパティ リストでのワイルドカードの使用
<harvested-type>
<name>com.acme.CustomMBean</name>
<harvested-instance>adomain:Type=My*,Name=*,*</harvested-instance>
<known-type>false</known-type>
</harvested-type>
コード リスト C-4 の例は、com.acme.CustomMBean のすべてのインスタンスのすべての収集可能な属性が、収集するが、インスタンス名が「Name=mybean」ストリングを含むところだけで命名することを示します。
ハーベスタは、MBean の複合属性内にネストされたメトリック値にアクセスできます。複合属性とは、マップ、リスト オブジェクト、単純な POJO、またはこれらのオブジェクトがさまざまな形でネストされたものを指します。次に例を示します。
anObject.anAttribute
arrayAttribute[1]
mapAttribute(akey)
aList[1](aKey)
さらに、リスト インデックスやマップ キーにワイルドカードを使用して、これらの集合内の複数の要素を指定することができます。以下のワイルドカードを使用できます。
* : このワイルドカードを使用すると、マップ属性のすべてのキー値を指定できます。
% : このワイルドカードを使用すると、マップ キー文字列の一部を置き換え、特定のパターンに一致するキーのグループを同一に扱うことができます。
また、カンマ区切りのリストを使用して個々のキー値のセットを指定することもできます。
次に例を示します。
aList[1](partial%Key%)
aList[*](key1,key3,keyN)
aList[*](*)
最後の例では、リストのインデックスとして、およびネストされたマップ オブジェクトに対するキー値としてワイルドカード「*」が使用されており、ネストされた値の配列が返されます。
次のように、カンマ区切りのマップ キー リストにワイルドカード「*」を埋め込むこともできます。
aList[*](key1,*,keyN)
これは、すべてのマップ キーを指定しているのと同じです。
aList[*](*)
注意 : 先頭または末尾のスペースは、マップ キーを二重引用符で囲まない限りマップ キーから取り除かれます。マップ キー パターンを使用すると、大量の要素がスキャンまたは返される場合があります。マップ内の要素数に応じて、パターン マッチがパフォーマンスに与える影響も大きくなります。 パターン マッチの複雑度に応じて、処理時間も長くなります。 |
ServerRuntime MBean で HealthState 属性のネストされた状態プロパティを収集するのにドリルダウン構文を使用するために、以下の診断記述子を使用します。
コード リスト C-5 ドリルダウン構文の使用
<harvester> <sample-period>10000</sample-period> <harvested-type> <name>weblogic.management.runtime.ServerRuntimeMBean</name> <harvested-attribute>HealthState.State</harvested-attribute> </harvested-type> </harvester>
配列またはリストの要素を収集するために、ハーベスタでは、配列またはリスト内のインデックス位置に基づいて値が参照される添え字表記法がサポートされています。たとえば、URLPatterns[0] を指定して、ServletRuntimeMBean の配列属性 URLPatterns における最初の要素を示してください。ワイルドカードを使用して URLPatterns のすべての要素を参照するには、次のように指定します。
コード リスト C-6 ワイルドカードによるすべての配列要素の参照
<harvester> <sample-period>10000</sample-period> <harvested-type> <name>weblogic.management.runtime.ServletRuntimeMBean</name> <harvested-attribute>URLPatterns[*]</harvested-attribute> </harvested-type> </harvester>
マップの要素を収集するには、キーを括弧で囲んで個々の値を参照します。複数のキーもカンマ区切りのリストで指定することができます。この場合、マップ内の指定したキーに対応する値が収集されます。
次のサンプル コードは、キー Foo を持つマップから値を収集します。
<harvested-attribute>MyMap(Foo)</harvested-attribute>
次の例は、キー Foo および Bar を持つマップから値を収集します。
<harvested-attribute>MyMap(Foo,Bar)</harvested-attribute>
次の例は、キーの指定で % 文字を使用し、先頭が Foo で末尾が Bar のキーを持つマップからすべての値を収集します。
<harvested-attribute>MyMap(Foo%Bar)</harvested-attribute>
次の例は、* 文字を使用してマップからすべての値を収集します。
<harvested-attribute>MyMap(*)</harvested-attribute>
次の例では、MBean はネストされたマップタイプ属性 MyMap がある JavaBean 属性 MyBean を持っています。このサンプル コードは、キーが Foo のマップからこの値を収集します。
<harvested-attribute>MyBeanMyMap(Foo)</harvested-attribute>
ハーベスタや監視および通知のコンフィグレーションでは、単一の式で多数の複合属性やネストされた属性を指定できますが、実際のメトリックは各メトリックが個別に収集されるように保持されます。
たとえば、次のような属性の指定を考えます。
mymap(*).(a,b,c)
これは、以下の実際のネストされた属性にマップされます。
mymap(key1).a mymap(key1).b mymap(key1).c mymap(key2).a mymap(key2).b mymap(key2).c
これらの 6 つの各メトリックは HarvestedDataArchive に個別のレコードとして格納され、ここに示した属性の名前が、対応する各レコードの ATTRNAME カラムに格納されます。アーカイブからレコードを取得する際は、この ATTRNAME カラム内の値をアクセサのクエリで指定する必要があります。
以下にサンプル クエリをいくつか示します。
NAME="foo:Name=MyMBean" ATTRNAME="mymap(key1).a" NAME="foo"Name=MyBean" ATTRNAME LIKE "mymap(%).a" NAME="fooName=MyMBean" ATTRNAME MATCHES "mymap\((.*?)\).a"
ハーベスタの監視ルールでは、「*」ワイルドカードを使用して ObjectName の一部を指定でき、複数の型の複数のインスタンスを監視することができます。
たとえば、名前が managed で始まる ServerRuntimeMBean のすべてのインスタンスの OpenSocketsCurrentCount 属性を指定するには、次の構文を使用します。
${com.bea:*Name=managed*Type=ServerRuntime*//OpenSocketCurrentCount}
または、次のように JMX ObjectName クエリ パターンを使用することもできます。
${mydomain:Key1=MyMBean,*//simpleAttribute}
注意 : ハーベスタでサポートされる ObjectName クエリ パターン構文は、基底の JMX 実装でサポートされているものになります。上記の例では、バージョン 5 以降の JDK でサポートされている構文を示しています。サポートされる完全な構文のためにサーバを実行するのに使用される特定の JDK バージョンのために javax.management.ObjectName について JavaDoc を参照してください。 |
ハーベスタの監視ルール式では複合属性 (集合、配列型、または組み込みの属性型がネストされているオブジェクト) を指定できます。複合属性は複数の方法で指定できます。
次の例では、複合型のネストされた属性へのドリルダウンを示しており、それが 0 より大きいかどうかを確認しています。
${somedomain:name=MyMbean//complexAttribute.nestedAttribute} > 0
ワイルドカードを使用すると、複数のマップ キーを指定することもできます。複合属性の指定には以下のワイルドカードを使用できます。
* : このワイルドカードを使用すると、マップ属性のすべてのキー値を指定できます。
% : このワイルドカードを使用すると、マップ キー文字列の一部を置き換え、特定のパターンに一致するキーのグループを同一に扱うことができます。
また、カンマ区切りのリストを使用すると、個々のキー値のセットを指定することができます。
次に例を示します。
${[com.bea.foo.BarClass]//aList[*].(some%partialKey%).(aValue,bValue)} > 0
ルールは com.bea.foo.BarClass のすべての例の aList 属性のすべての要素を調べて、some テキストから始めて、その後 partialKey テキストを含むすべてのキーのためにネストされたマップに選択します。戻り値は Map インスタンスであると思われます。キー aValue と bValue のための値は、それらが 0 以上であるかどうか確認するために例から比較されます。
WLDFInstrumentationRuntime タイプに MethodInvocationStatistics 属性を使用するとき、システムは、変数からタイプを決定する必要があります。属性式の評価時にこの型を特定できない場合、その式は機能しません。次のような式があるとします。
${ com.bea:Name=myScope, * //MethodInvocationStatistics.(...).(...)
この式は機能しません。この場合、次のサンプル コードに示すように、ネストされたマップ構造へドリルダウンする型を明示的に宣言する必要があります。
$(com.bea:Name=hello,Type=WLDFInstrumentationRuntime,*//MethodInvocationStatistics(*)(*)(*)(count)) >= 1