パッケージjavax.management.monitor
モニター・クラスを定義します。 Monitorは、1つ以上のその他のMBeanに含まれる属性の値を定期的に観測するMBeanです。 属性が特定の条件を満たす場合、MonitorはMonitorNotificationを発行します。 モニターMBeanが監視中の属性の値を取得するためにgetAttributeを周期的に呼び出す場合、呼出し側Monitor.start()のアクセス制御コンテキスト内でこれを実行します。
監視する値は、複合型の内部に含まれた単純な値にすることができます。 たとえば、java.lang.managementで定義されたMemoryMXBeanには、MemoryUsage型のHeapMemoryUsage属性があります。 MemoryUsageのusedプロパティで説明するusedメモリーの量を監視するには、"HeapMemoryUsage.used"を監視できます。 この文字列が、setObservedAttributeの引数になります。
"HeapMemoryUsage.used"のようなObservedAttributeを解釈するために使用されるルールは次のとおりです。 文字列がA.e (この例では、Aが"HeapMemoryUsage"になり、eが"used"になるようにします)であるとします。
最初に、属性Aの値が取得されます。 これをvとします。 次のようにして、vから値xが抽出されます。
- vが
CompositeDataで、かつv.get(e)が値を返す場合、xはその値です。 - vが配列で、eが文字列
"length"の場合、xは配列の長さです。 - 前述のルールで値が生成されず、イントロスペクションの場合、
Introspector.getBeanInfoをコールした場合のように、v (v.getClass())のクラスでeという名前のプロパティが識別されると、xはプロパティ値の読取り結果になります。
3番目のルールは、たとえば、属性HeapMemoryUsageがMemoryUsageの場合、"HeapMemoryUsage.used"をモニタリングすると、MemoryUsage.getUsed()をコールして観察された値が取得されることを意味します。
ObservedAttributeに複数のピリオド("ConnectionPool.connectionStats.length"など)が含まれている場合、前述のルールは反復的に適用されます。 ここで、vは最初は属性ConnectionPoolの値であり、xは、eが"connectionStats"である前述のルールを適用することによって導出されます。 次に、vがこのxに設定され、eが"length"と等しいルールを再度適用することによって導出された新しいxが設定されます。
属性名は有効なJava識別子であることが推奨されますが、属性をHeapMemoryUsage.usedと呼びます。 つまり、HeapMemoryUsage.usedのObservedAttributeは、監視する値がその名前の属性か、HeapMemoryUsageという属性内のプロパティusedのいずれかであることを意味します。 そのため、互換性の理由から、ObservedAttributeにピリオド(.)が含まれている場合、モニターは、名前が完全なObservedAttribute文字列(例のHeapMemoryUsage.used)である属性が存在するかどうかを確認します。 具体的には、監視対象のMBeanに対してgetMBeanInfoを呼び出し、中に含まれる指定した名前のMBeanAttributeInfoを検索します。 検索しているものが見つかった場合、それが監視対象です。 複数のMBeanが観察されている場合、それらの一部にHeapMemoryUsage.used属性があり、その他のものにHeapMemoryUsage.used属性がない場合、動作は指定されません。 したがって、実装では、この場合は、MBeansの1つのみでgetMBeanInfoをコールできます。 モニターがアクティブである間に検査結果が変更される場合にも、動作は未定義になります。
モニターの厳密な動作の詳細は、『JMX仕様』に記載されています。 次に、概要を示します。
次の3種類のMonitorがあります。
-
CounterMonitorは、整数型の属性を監視します。 属性は、負の数ではないと想定され、指定されたモジュラスでロールオーバーが起こらなければ、その値は単調に増加します。 監視対象の各属性には、しきい値が関連付けられています。 属性がしきい値を超過すると、通知が送信されます。オフセット値を指定できます。 監視対象の値がしきい値を超過すると、しきい値はオフセット分、またはしきい値が新しい監視値より大きい値になるために必要なオフセットの倍数分大きくなります。
CounterMonitorは差分モードで動作できます。 このモードでは、しきい値に対して比較される値は、2回の連続する属性の観測値の差分になります。 -
GaugeMonitorは、数値型の属性を監視します。 監視対象の各属性には、上限値と下限値が関連付けられています。監視対象の属性の値が上限値を超過したとき、上限通知フラグの値がtrueであれば、通知が送信されます。 その後は、上限値を超過しても、ゲージ値が下限値以下になるまで通知は送信されません。
監視対象の属性の値が下限値を超過したとき、下限通知フラグの値がtrueであれば、通知が送信されます。 その後は、下限値を超過しても、ゲージ値が上限値以上になるまで通知は送信されません。
通常、設定されるのは上限通知または下限通知のいずれかです。 その他のしきい値は、属性値がしきい値の近辺で細かく増減しても、通知が繰返しトリガーされるのを防ぐヒステリシス・メカニズムを提供するために使用されます。
GaugeMonitorは差分モードで動作できます。 このモードでは、上限値および下限値に対して比較される値は、2回の連続する属性の観測値の差分になります。 -
StringMonitorは、String型の属性を監視します。 監視対象の属性が指定された文字列と等しくなったり、等しくなくなったりすると、通知が送信されます。
- 導入されたバージョン:
- 1.5
- 関連項目:
-
クラス説明カウンタ属性の値を監視するように設計されたモニターMBeanを定義します。カウンタ・モニターMBeanのリモート管理インタフェースを公開します。ゲージ属性の値を監視するように設計されたモニターMBeanを定義します。ゲージ・モニターMBeanのリモート管理インタフェースを公開します。すべてのモニターMBeanに共通な部分を定義します。モニターMBeanのリモート管理インタフェースを公開します。モニターMBeanによって送信される通知を定義します。モニターの実行中にモニター設定が無効になった場合に、モニターからスローされる例外です。文字列属性の値を監視するように設計されたモニターMBeanを定義します。文字列モニターMBeanのリモート管理インタフェースを公開します。