質問

JMXを使用して、リモートのコヒーレンスを監視するためのカスタムツールを構築しています。作業中のクラスター。うまく接続してMBeanに直接クエリを実行することができ、必要なほぼすべての情報を取得しました。ただし、クラスター内の特定のキャッシュについてMBeanにクエリを実行しようとすると、問題が発生しました。ここで、取得/プットの総数、それぞれの平均時間などに関する統計を見つけることができます。

プログラムでアクセスしようとしているMBeanは、JConsoleを使用してリモートプロセスに接続すると表示され、次のような名前になります。 ジェネラコディセタグプレ

すべてのキャッシュを指定せずに、特定のノードIDのすべてのtype=Cache MBeanを動的に取得できれば、より柔軟になります。私は次のようにクエリを実行しようとしています: ジェネラコディセタグプレ

ただし、queryMBeans()queryNames()のどちらを使用するかに関係なく、クエリは...を含むセットを返します...

  • ... 0個のオブジェクト上記の引数を渡すと
  • ... 0個のオブジェクト最初の引数にnullを渡した場合
  • ... 2番目の引数にCoherence:*を渡した場合、nullドメイン(112)内のすべてのMBean
  • ...両方の引数にnullを渡すと、すべての単一のMBean(128)

    最初の2つの結果は予期しない結果です。渡したQueryExpに問題があることを示唆していますが、問題が何であるかわかりません。 2番目のパラメーターにtypeIsCacheまたはspecifiedNodeIdを渡すだけでも(最初のパラメーターとしてcoherenceまたはnullを使用)、常に0の結果が得られます。

    私はJMXにかなり満足しています—問題が何であるかについての洞察はありますか? (参考までに、監視ツールはJava 5で実行されるため、現時点ではJMX 2.0のようなものは役に立ちません。)

役に立ちましたか?

解決

後世のために私の解決策を投稿したかっただけです...

より単純な(しかし見知らぬ)アプローチを通じて、指定された特性に一致するMBeanのセットを正常に取得することができました。なぜQueryExpアプローチが機能しないのかはまだわかりませんが、機能するものは次のとおりです(質問の最後のコード行を置き換えます): ジェネラコディセタグプレ

ObjectNameコンストラクター文字列にフラグメントservice=SequenceQueueを追加して、Coherenceサービス(キャッシュ)名でフィルター処理する場合にも機能します。

それが何らかの形で機能する限り、私は仕事を終わらせるのに十分ですが、これはJMX実装の明白な欠陥のようです。そして、JMXとRMIを使用して機能するJMXServiceURLを作成するプロセスを開始しないでください...

他のヒント

私はあなたと同じ道をたどりました、そして私はJDKドキュメントがより明確であるかもしれないと思います。

Query。*は、基盤となるMBean(つまり、実際のPOJOゲッター)の属性にのみ一致するように見えますが、ObjectNameパターンは、ObjectName自体のキー/値に一致することができます。

ObjectNameドメイン内でより複雑なクエリを実行できる柔軟性があると便利です。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top