ヘッダーをスキップ
Oracle® Fusion Middleware Oracle WebLogic Server診断フレームワークの構成と使用
11g リリース1(10.3.6)
B60994-04
  ドキュメント・ライブラリへ移動
ライブラリ
製品リストヘ移動
製品
目次へ移動
目次

前
 
次
 

C 式でのワイルドカードの使用

WLDFでは、<harvested-instance>要素内のインスタンス名にワイルドカードを使用できます。また、<harvested-attribute>要素の属性指定でドリルダウン機能とワイルドカード機能を使用できます。

ハーベスタの監視ルールではインスタンス名に同じワイルドカード機能を使用できるだけでなく、複合属性も指定できます。

これらの機能については、次の項で説明します。

ハーベスタ・インスタンス名でのワイルドカードの使用

<harvested-instance>要素内でインスタンス名を指定する場合、以下の処理が可能です。

例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」ストリングが含まれる場合のみであることを示します。

例C-4 複数のインスタンスのすべての属性の収集

<harvested-type>
  <name>coma.acme.CustomMBean</name>
  <harvested-instance>*Name=mybean*</harvested-instance>
  <known-type>true</known-type>
</harvested-type>

ハーベスタの複合属性およびネストされた属性の指定

ハーベスタは、MBeanの複合属性内にネストされたメトリック値にアクセスできます。複合属性とは、マップ、リスト・オブジェクト、単純なPOJO、またはこれらのオブジェクトが様々な形でネストされたものを指します。例:

さらに、リスト索引やマップ・キーにワイルドカードを使用して、これらの集合内の複数の要素を指定することができます。以下のワイルドカードを使用できます。

また、カンマ区切りのリストを使用して個々のキー値のセットを指定することもできます。

例:

最後の例では、リストの索引として、およびネストされたマップ・オブジェクトに対するキー値としてワイルドカード「*」が使用されており、ネストされた値の配列が返されます。

次のように、カンマ区切りのマップ・キー・リストにワイルドカード「*」を埋め込むこともできます。

  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