2017-08-14 6 views
2

私はvisualvmを使用してドッカーコンテナにあるkarafで実行されているスレッドをチェックしたいと思います。ドッカーコンテナのkarafにjmxポートを設定するにはどうすればいいですか?

私がやったこと

  1. ドッキングウィンドウ コンテナの異なる組み合わせでrmiRegistryHostと rmiServerHostを数回設定しようとした、org.apache.karaf.management.cfgでドッキングウィンドウ
  2. のために44444と1099を公開ipとdocker inner ipは動作しません。
  3. =変更EXTRA_JAVA_OPTSを試してみました - 助けが必要
  4. "偽Djava.rmi.server.hostname = $ {ドッキングウィンドウコンテナ-IP} -Dcom.sun.management.jmxremote.local.only ="

を。

答えて

1

問題は、RMIエンドポイントを提供するホスト(Dockerホスト)がRMIサーバーのホスト(Dockerコンテナ内のVM)ではないシナリオをうまく処理しないRMIプロトコルです。

私は仕事にそれを得た方法が

export EXTRA_JAVA_OPTS=="-Dcom.sun.management.jmxremote.ssl=false -Dcom.sun.management.jmxremote.authenticate=false -Dcom.sun.management.jmxremote.rmi.port=$JMX_RMI_PORT -Dcom.sun.management.jmxremote.port=$JMX_REMOTE_PORT -Djava.rmi.server.hostname=$HOST_HOSTNAME" 

にいた私は、ドッキングウィンドウ-コンで環境を設定していますが、限り、あなたはイメージで一つだけのコンテナを実行するように固定値を持つ環境変数を置き換えることができますあなたのホストに。私はRMIポートとREMOTEポートにそれぞれ1097と1098を使用しています。

  • RMIポートとREMOTEポートの両方を、同じポート番号のドッカーホストにマップする必要があります。例えば。コンテナ内のRMIポートとして1097を使用する場合は、そのポートをホスト上の1097に公開する必要があります。
  • java.rmi.server.hostnameは、動作するはず

    service:jmx:rmi:///jndi/rmi://<your_docker_host>:1098/jmxrmi 
    

    に接続し、お使いのドッキングウィンドウのホスト、コンテナ

あなたは上記のポートを使用していると仮定するのではないIPのホスト名またはIPです。

私はKarafのJMX accecssコントロールが動作することはありませんでした。

JMXのRMIの代わりにJMXMPを使用すると、作業が簡単になることがありますが、そのままの状態ではKarafではサポートされていません。

関連する問題