E 式でのワイルドカードの使用
WLDFでは、ハーベスタのポリシーではインスタンス名に同じワイルドカード機能を使用できるだけでなく、複合属性も指定できます。
この付録の内容は次のとおりです。
- ハーベスタ・インスタンス名でのワイルドカードの使用
<harvested-instance>要素内でインスタンス名を指定する際、プロパティ・リストの順序については柔軟に指定できます。 - ハーベスタの複合属性およびネストされた属性の指定
ハーベスタは、MBeanの複合属性内にネストされたメトリック値にアクセスできます。 - 収集された複合属性またはネストされた属性に関するアクセサの使用
ハーベスタやポリシーおよびアクションの構成では、単一の式で多数の複合属性やネストされた属性を指定できますが、実際のメトリックは各メトリックが個別に収集されるように保持されます。 - ポリシー・インスタンス名でのワイルドカードの使用
ハーベスタのポリシー式では、アスタリスク・ワイルドカード文字(*
)を使用してObjectNameの一部を指定できます。これにより、1つの型の複数のインスタンスを監視できます。 - ハーベスタのポリシーでの複合属性の指定
ハーベスタのポリシー式では複合属性(集合、配列型、または組込みの属性型がネストされているオブジェクト)を指定できます。
ハーベスタ・インスタンス名でのワイルドカードの使用
-
インスタンス名を非標準形式で表します。これによって、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>
親トピック: ハーベスタ・インスタンス名でのワイルドカードの使用
ハーベスタの複合属性およびネストされた属性の指定
-
anObject.anAttribute
-
arrayAttribute[1]
-
mapAttribute(akey)
-
aList[1](aKey)
さらに、ワイルドカード文字をリストの索引やマップ・キーに使用して、これらの一群のタイプ内の複数の要素を指定できます。次のワイルドカード文字を使用できます。
-
アスタリスク・ワイルドカード文字(
*
)を使用して、マップ属性のすべてのキー値を指定できます。 -
パーセント・ワイルドカード文字(
%
)を使用すると、マップ・キー文字列の一部を置き換え、特定のパターンに一致するキーのグループを同一に扱うことができます。
また、カンマ区切りのリストを使用して個々のキー値のセットを指定することもできます。
たとえば:
-
aList[1](partial%Key%)
-
aList[*](key1,key3,key
N
)
-
aList[*](*)
最後の例では、リストの索引として、またネストされたマップ・オブジェクトに対するキー値としてアスタリスク・ワイルドカード文字(*
)が使用されており、ネストされた値の配列が返されます。
カンマ区切りのマップ・キー・リストにアスタリスク・ワイルドカード文字(*
)を埋め込むと、すべてのマップ・キーを指定するのと同じになります。たとえば、次の2つの指定は同じです。
-
aList[*](key1,*,key
N
)
-
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> |
キー |
<harvested-attribute>MyMap(Foo,Bar)</harvested-attribute> |
キー |
<harvested-attribute>MyMap(Foo%Bar)</harvested-attribute> |
パーセント・ワイルドカード文字( |
<harvested-attribute>MyMap(*)</harvested-attribute> |
アスタリスク・ワイルドカード文字( |
<harvested-attribute>MyBeanMyMap(Foo)</harvested-attribute> |
MBeanにJavaBean属性 |
親トピック: ハーベスタの複合属性およびネストされた属性の指定
収集された複合属性またはネストされた属性に関するアクセサの使用
ハーベスタやポリシーおよびアクションの構成では、単一の式で多数の複合属性やネストされた属性を指定できますが、実際のメトリックは各メトリックが個別に収集されるように保持されます。
たとえば、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
親トピック: 式でのワイルドカードの使用