プライマリ・コンテンツに移動
Oracle® Fusion Middleware Oracle WebLogic Server診断フレームワークの構成と使用
12c (12.2.1.1.0)
E77393-01
目次へ移動
目次

前
次

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

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

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

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

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

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

  • インスタンス名を非標準形式で表します。これによって、ObjectNameのプロパティ・リストを順不同で指定できます。

  • ObjectNameをJMX ObjectName問合せパターンとして表します。この際、プロパティ・リストの順序を気にする必要はありません。

  • ObjectNameのプロパティ・リストの任意の値に対して、ゼロ個以上のアスタリスク・ワイルドカード文字(*)を使用します(例: Name=*)。

  • ゼロ個以上のアスタリスク・ワイルドカード文字(*)を使用して、標準のObjectName文字列内の任意の文字シーケンスを置換します。この場合、ワイルドカード文字で置き換えられないObjectNameのプロパティがすべて標準形式であることを確認する必要があります。

例E-1におけるインスタンスの指定では、WorkManagerRuntimeMBeanのすべてのインスタンスが収集されることを示しています。これは、<harvested-type>宣言内でインスタンス名修飾を1つも指定しないのと同じです。

例E-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>

例E-2は、<harvested-instance>の値としてJMX ObjectNameパターンを示しています。

例E-2 JMX ObjectNameパターンの使用

<harvested-type>
  <name>com.acme.CustomMBean</name>
  <harvested-instance>adomain:Type=MyType,*</harvested-instance>
  <known-type>false</known-type>
</harvested-type>

例E-3では、ObjectNameプロパティ・リストの一部の値にワイルドカード文字が含まれています。

例E-3 プロパティ・リストでのワイルドカードの使用

<harvested-type>
  <name>com.acme.CustomMBean</name>
  <harvested-instance>adomain:Type=My*,Name=*,*</harvested-instance>
  <known-type>false</known-type>
</harvested-type>

例E-4では、com.acme.CustomMBeanのすべてのインスタンスのすべての収集可能な属性が収集されますが、インスタンス名にName=mybean文字列が含まれる場合のみであることを示します。

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

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

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

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

  • anObject.anAttribute

  • arrayAttribute[1]

  • mapAttribute(akey)

  • aList[1](aKey)

さらに、ワイルドカード文字をリストの索引やマップ・キーに使用して、これらの一群のタイプ内の複数の要素を指定できます。次のワイルドカード文字を使用できます。

  • アスタリスク・ワイルドカード文字(*)を使用して、マップ属性のすべてのキー値を指定できます。

  • パーセント・ワイルドカード文字(%)を使用すると、マップ・キー文字列の一部を置き換え、特定のパターンに一致するキーのグループを同一に扱うことができます。

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

例:

  • aList[1](partial%Key%)

  • aList[*](key1,key3,keyN)

  • aList[*](*)

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

カンマ区切りのマップ・キー・リストにアスタリスク・ワイルドカード文字(*)を埋め込むと、すべてのマップ・キーを指定するのと同じになります。たとえば、次の2つの指定は同じです。

  • aList[*](key1,*,keyN)

  • aList[*](*)

注意:

先頭または末尾のスペースは、マップ・キーを二重引用符で囲まない限りマップ・キーから取り除かれます。

マップ・キー・パターンを使用すると、大量の要素がスキャンまたは返されたり、その両方が発生する場合があります。マップ内の要素数に応じて、パターン・マッチがパフォーマンスに与える影響も大きくなります。

パターン・マッチの複雑度に応じて、処理時間も長くなります。

ServerRuntime MBeanでHealthState属性のネストされた状態プロパティを収集するのにドリルダウン構文を使用するには、例E-5に示した診断記述子を使用します。

例E-5 ドリルダウン構文の使用

<harvester>
  <sample-period>10000</sample-period>
  <harvested-type>
    <name>weblogic.management.runtime.ServerRuntimeMBean</name>
    <harvested-attribute>HealthState.State</harvested-attribute>
  </harvested-type>
</harvester>

配列またはリストの要素を収集するために、ハーベスタでは、配列またはリスト内のインデックス位置に基づいて値が参照される添え字表記法がサポートされています。たとえば、ServletRuntimeMBeanのURLPatterns配列属性内の最初の要素を参照するには、URLPatterns[0]と指定します。例E-6は、ワイルドカード文字を使用してURLPatternsの全要素を参照する例を示しています。

例E-6 ワイルドカード文字によるすべての配列要素の参照

<harvester>
  <sample-period>10000</sample-period>
  <harvested-type>
    <name>weblogic.management.runtime.ServletRuntimeMBean</name>
    <harvested-attribute>URLPatterns[*]</harvested-attribute>
  </harvested-type>
</harvester>

マップの要素を収集するには、キーをカッコで囲んで個々の値を参照します。次の例に示すように、複数のキーもカンマ区切りのリストで指定できます。この場合、マップ内の指定したキーに対応する値が収集されます。

説明
<harvested-attribute>MyMap(Foo)</harvested-attribute>

キーFooを持つマップから値を収集します。

<harvested-attribute>MyMap(Foo,Bar)</harvested-attribute>

キーFooおよびBarを持つマップから値を収集します。

<harvested-attribute>MyMap(Foo%Bar)</harvested-attribute>

パーセント・ワイルドカード文字(%)を使用してキーを指定し、キーがFooから開始してBarで終了するすべての値をマップから収集します。

<harvested-attribute>MyMap(*)</harvested-attribute>

アスタリスク・ワイルドカード文字(*)を使用して、マップからすべての値を収集します。

<harvested-attribute>MyBeanMyMap(Foo)</harvested-attribute>

MBeanにJavaBean属性MyBeanがあり、この属性にマップ型属性MyMapがネストされています。この例は、キーがFooのマップからこの値を収集します。

収集された複合属性またはネストされた属性に関するアクセサの使用

ハーベスタやポリシーおよびアクションの構成では、単一の式で多数の複合属性やネストされた属性を指定できますが、実際のメトリックは各メトリックが個別に収集されるように保持されます。

たとえば、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の一部を指定できます。これにより、1つの型の複数のインスタンスを監視できます。

たとえば、名前がmanagedで始まるServerRuntimeMBeanのすべてのインスタンスのOpenSocketsCurrentCount属性を指定するには、次のようにします。

  • インスタンス-名前のパターンは有効なJMX ObjectNameパターンになります。この場合、プロパティ・リストの順番は重要ではありません。例:

    ${com.bea:Name=managed*,Type=ServerRuntime,*//OpenSocketCurrentCount} 
    

    この例は有効なJMX ObjectNameパターンで、次と一致します。

    • managedで始まる値を持つNameキーを含むObjectName

    • ServerRuntimeと完全に一致するTypeキー

    • その他の任意のプロパティのペア

    有効なJMX ObjectNameパターンのその他の例は、ObjectName APIドキュメント(http://docs.oracle.com/javase/8/docs/api/javax/management/ObjectName.html)を参照してください。

  • 名前がパターンではあるがJMX ObjectNameパターンではない場合、WebLogic Serverはパターンをそのままで使用してパターン・マッチを行います。例:

    ${com.bea:*Name=managed*,Type=ServerRuntime,*//OpenSocketCurrentCount} 
    

    この例は有効なJMX ObjectNameパターンではありません。このパターンは、任意のターゲットMBeanインスタンス用の正規形のObjectNameに対してそのままで一致する、単純な文字列置換を使用して一致します。

注意:

ハーベスタでサポートされるObjectName問合せパターン構文は、基底のJMX実装でサポートされているものになります。前述の例では、バージョン5以降のJDKでサポートされている構文を示しています。サポートされる完全な構文の詳細は、WebLogic Serverのインストールが構成されているJDKのバージョンに対応するjavax.management.ObjectNameクラスの説明を参照してください。

ハーベスタのポリシーでの複合属性の指定

ハーベスタのポリシー式では複合属性(集合、配列型、または組込みの属性型がネストされているオブジェクト)を指定できます。複合属性は複数の方法で指定できます。

次の例では、複合型のネストされた属性へのドリルダウンを示しており、それが0より大きいかどうかを確認しています。

${somedomain:name=MyMbean//complexAttribute.nestedAttribute} > 0 

また、ワイルドカード文字を使用して、複数のマップ・キーを指定することもできます。複合属性の指定には次のワイルドカード文字を使用できます。

  • アスタリスク文字(*)を使用して、マップ属性のすべてのキー値を指定できます。

  • パーセント文字(%)を使用すると、マップ・キー文字列の一部を置き換え、特定のパターンに一致するキーのグループを同一に扱うことができます。

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

例:

${[com.bea.foo.BarClass]//aList[*].(some%partialKey%).(aValue,bValue)} > 0

前述の例のルールでは、com.bea.foo.BarClassのすべてのインスタンスのaList属性の要素がすべて調査され、someで始まり、その後にpartialKeyの文字列が含まれる名前のキーを持つネストされたマップへのドリル・ダウンが行われます。これによってマップ・インスタンスが返され、この戻り値からキーaValueとキーbValueの値が比較され、これらが0より大きいかどうかが判断されます。

WLDFInstrumentationRuntimeタイプにMethodInvocationStatistics属性を使用するとき、システムは、変数からタイプを決定する必要があります。属性式の評価時にこの型を特定できない場合、その式は無効になります。たとえば、次の式は無効になります。

${ com.bea:Name=myScope, * //MethodInvocationStatistics.(...).(...) 

この場合、次の例に示すように、ネストされたマップ構造へのドリル・ダウンを示す型を明示的に宣言する必要があります。

$(com.bea:Name=hello,Type=WLDFInstrumentationRuntime,*//MethodInvocationStatistics(*)(*)(*)(count)) >= 1