2009-06-27 85 views
15

リモートのTomcatプロセスを監視する際に問題があります。私はJavaのバージョンJConsole/JVisualVMを使用しようとしています。VisualVMを使用してTomcatに接続できない

適切なセキュリティポリシーを使用してリモートサーバー上でjstatdを実行しています。プロセスが開始され、TCP接続が使用可能になります。

JConsole経由で接続しようとすると、'Connection Failed:jmxrmi'と表示されます。

VisualVMを介して接続しようとすると、ホスト名が追加され、右クリックオプションが「Add JMX Connection」になります。それは私が見たいと思っているかどうかは、ドキュメントから私には不明です。私が接続しようとすると、私が手:

'Cannot connect using service:jmx:rmi:///jndi/rmi://<host>:<port>/jmxrmi'. 

ので、ドキュメントはUIがjmxrmiを求めている間に私は、VisualVMの中で監視するために、リモートで実行されているのjstatdている必要があります示唆...それらは同じですか?私はjmx rmiオプションを使用してtomcatを設定しようとしましたが、ファイアウォールの問題ではないことは分かっていますが、タイムアウトもしています。

誰かがこの方法でリモートTomcatプロセスを添付して成功を収め、どのように記述すれば、大きな助けになりますか。

答えて

13

Tomcat VMの管理拡張機能を有効にする必要があります。通常、それは、これらのような何かを渡す意味:

もちろん
-Dcom.sun.management.jmxremote.port=8086 
-Dcom.sun.management.jmxremote.ssl=false 
-Dcom.sun.management.jmxremote.authenticate=false 

、あなたがそれを上記の方法を行う場合は、あなたのTomcatは、インターネット上で表示されていないか、ポートがリモートアクセスからファイアウォールまたは同様のセキュリティ対策を講じていることを確認してくださいポートがスキャンされて危険にさらされるのを避けるためです。それ以外の場合は、認証オプションを使用します。

1

ファイアウォールの問題だと思います。私のサーバーにはすべてのポートが開いているわけではありませんので、私が持っている1つのオープンポートを使用するためのここの手順に従って、動作させることができました。

http://blogs.oracle.com/jmxetc/entry/connecting_through_firewall_using_jmx

15

通常あなたがJAVA_OPTSにサーバのIPアドレスを指定することを確認する必要があります。それ以外の場合は、JMXが別のポートのサーバに再接続するための指示をクライアントに返すようになり、クライアントに与えるIPアドレスがない場合、接続は失敗します。このため

引数は次のとおりです。

-Djava.rmi.server.hostname=1.2.3.4 

あなたはセットアッププロセスのこのwalk through、より詳細な情報を確認することができます。

+5

ちょっと@Tom、あなたのウォークスルーリンクが私を助けます。ビッグ+10、タンク!サーバが異なるアダプタ(vpnなど)を持っている場合、 '-Djava.rmi.server.hostname = 1.2.3.4'は必須です。 – azendh

+0

これは私にとってもうまくいきました!本当にありがとう! – FSP

+0

確かに大きな助け...グラシアス! –

2

通常、JMXポートは別のポートにデータを送信するため、lsof -p -n |を実行してそのポート番号を見つける必要があります。 grep TCPを開き、そのポートへのアクセス許可を有効にして、リモートのJMXエージェントに接続しようとします。

2

私は実際にこの問題に取り組んできました。

私は問題がRMI接続であることを賭けるでしょう - どのポートを使用するのか予測できないので、ファイアウォールで動作させることができません。アプリケーションが実行されているボックスに

  1. SSHしかし、このような-Dオプションを使用します:

    問題を回避するには、SSHプロキシを使用することです

    SSHユーザREMOTEHOST -D @ 9999

    これは、「ネットワーク」の下で私を設定し、ポート9999

  2. オープンJVisualVM上や好みにローカルマシン上でSOCKSプロキシを開始しますあなたが上記の操作を行う場合は、すべてのRMIトラフィックは今の上に起こっていることから、あなたはその後、通常としてリモートマシンに接続することができるはずのポート9999

に、ローカルホストでSOCKSプロキシを使用するには、トンSSHプロキシは、それはファイアウォールを介してパンチされ、うまく動作します。

幸運:-)

関連する問題