[英]How to access JMX (Java Beans) from a process running in docker container
當使用Docker運行進程時,為什么很難連接到JMX端口(使用JConsole)。
當然,我已經向主機公開了JMX端口 ,甚至在運行Java進程時使用了Sun特定的選項 (按照http://ptmccarthy.github.io/2014/07/24/remote-jmx-with- docker / )。
我可以遠程登錄到主機ip和公開的JMX端口,這表明該端口可訪問。 但是我不知道一種使用JConsole並連接到容器中運行的JMX服務的方法。
-Djava.rmi.server.hostname=$JMX_HOSTNAME
-Dcom.sun.management.jmxremote.port=$JMX_PORT
-Dcom.sun.management.jmxremote.rmi.port=$JMX_PORT
過去,兩個端口必須不同。 請嘗試一下。
如果那不起作用:
Tomcat提供了一個額外的組件來設置提到的第二個端口,即JMX Remote Lifecycle Listener 。
請看一下:
http://tomcat.apache.org/tomcat-7.0-doc/extras.html
http://tomcat.apache.org/download-70.cgi
我將此設置與tomcat / lib目錄中的catalina-jmx-remote.jar一起使用來通過:
-Dcom.sun.management.jmxremote
-Dcom.sun.management.jmxremote.ssl=false
-Djava.rmi.server.hostname=localhost
-DrmiRegistryPortPlatform=10381
-DrmiServerPortPlatform=10380
加上這些,但您在開發環境中將不需要它們。
-Dcom.sun.management.jmxremote.password.file=/home/tomcat/jmxremote.password
-Dcom.sun.management.jmxremote.access.file=/home/tomcat/jmxremote.access
-Dcom.sun.management.jmxremote.authenticate=true
您目前所擁有的看起來正確。 為了至少嘗試使其工作,我將嘗試禁用auth&ssl。 然后,一旦它開始工作,請考慮重新啟用所需的任何安全性:
-Dcom.sun.management.jmxremote.authenticate=false
-Dcom.sun.management.jmxremote.ssl=false
確實,您需要這兩個端口不同。 一個端口用於RMI注冊表,另一個端口用於遠程協議。
指定從jconsole / visualvm連接到服務器的URL時,請使用服務器端“ -Dcom.sun.management.jmxremote.port”中設置的端口。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.