2010-12-16 7 views
1

JMXローカルアクセスが有効になっている特権(ルートとして実行中)アプリケーションを監視する非特権(非ルートアクセス)JMXクライアントプログラムを作成したいとします。-Dcom.sun.management.jmxremote。JMXローカル監視へのアクセス制御

少なくともMacOSXでは、jconsole(およびjps)は自分自身として実行するとルートプロセスを表示しません。

これは実際のところここにあるのでしょうか、これを設定する方法はありますか?

答えて

1

クライアントがルートプロセスの表示を許可されていない場合は、PIDで接続することはできません。必要なのは、ルートアプリケーションが[> 1024]ポートで待機するJMXServerをロードしてから、PIDでなくポート経由で接続できるようにすることです。これを行う最も簡単な方法は、JVMがJMXサーバーを自動的にロードするようにトリガーする複数のシステムプロパティを指定することです。例えば(これらはすべて、最も安全ではありません):

  • -Dcom.sun.management.jmxremote.authenticate -Dcom
  • 偽=偽
  • -Dcom.sun.management.jmxremote.ssl =。 sun.management.jmxremote.port = 7777

JMX Management and Monitoring Propertiesを参照してください。

プログラムでJMXServerを作成するには、JavaDocのjavax.management.remoteを参照してください。このトピックに関する実際的なガイド/チュートリアルは、hereです。

+0

ああ、お願いします.Dの代わりに手動でJMXサーバーを起動する方法を教えてください。そして、そのようなサーバーはVM Beansのビルドを公開するでしょうか? – bmargulies

+0

回答を更新しています。そして、これで、組み込みのVM MXBeanへのアクセスが可能になります。 – Nicholas

1

JMXは、いくつかのコマンドラインオプションで定義できる単純なTCPポートを使用します。ポートが開いている場合は、誰でも(権限を持たないユーザも含めて)誰でもそのポートを見ることができます。

プロセス自体については、jpsは他のユーザーのプロセスを見ることはできませんが、「ps aux」と表示されます。

関連する問題