2015-05-06 16 views
10

Tôi muốn theo dõi một ứng dụng java (khởi động mùa xuân) chạy từ xa với jvisualvm (hoặc jconsole). Khi chạy cục bộ, tôi có thể thấy các bean được quản lý trong cả jvisualvm và jconsole. Khi chạy từ xa tôi không thể kết nối. Tôi đã thử nó với một số quy trình java khác nhau (ví dụ: với spring xd). Tìm kiếm câu trả lời ở đây trên SO và trên Google không giúp được gì.Giám sát từ xa bằng visualvm và JMX

Đây là những JAVA_OPTS của tôi (trên máy chủ từ xa):

$ echo $JAVA_OPTS 
-Dcom.sun.management.jmxremote -Dcom.sun.management.jmxremote.port=9010 -Dcom.sun.management.jmxremote.local.only=false -Dcom.sun.management.jmxremote.authenticate=false -Djava.rmi.server.hostname=192.168.59.99 

Sau đó, tôi chỉ cần khởi động chương trình như sau (đây là cho xd mùa xuân, nhưng tôi trải nghiệm cùng một vấn đề với các chương trình java khác).

$ bin/xd/xd-singlenode 

Quá trình máy chủ dường như nhặt các tùy chọn:

$ ps -ef | grep single 
vagrant 22938 19917 99 06:38 pts/2 00:00:03 /usr/lib/jvm/java-8- oracle/jre/bin/java -Dcom.sun.management.jmxremote -Dcom.sun.management.jmxremote.port=9010 -Dcom.sun.management.jmxremote.local.only=false -Dcom.sun.management.jmxremote.authenticate=false -Djava.rmi.server.hostname=192.168.59.99 -Dspring.application.name=admin -Dlogging.config=file:/home/vagrant/spring-xd-1.1.0.RELEASE/xd/config///xd-singlenode-logger.properties -Dxd.home=/home/vagrant/spring-xd-1.1.0.RELEASE/xd -Dspring.config.location=file:/home/vagrant/spring-xd-1.1.0.RELEASE/xd/config// -Dxd.config.home=file:/home/vagrant/spring-xd-1.1.0.RELEASE/xd/config// -Dspring.config.name=servers,application -Dxd.module.config.location=file:/home/vagrant/spring-xd-1.1.0.RELEASE/xd/config//modules/ -Dxd.module.config.name=modules -classpath (...) 

Phiên bản java trên máy chủ từ xa (linux vm ubuntu) là:

$ java -version 
java version "1.8.0_45" 
Java(TM) SE Runtime Environment (build 1.8.0_45-b14) 
Java HotSpot(TM) 64-Bit Server VM (build 25.45-b02, mixed mode) 

Phiên bản java trên máy cục bộ (Mac OS) hơi khác:

$ java -version  
java version "1.8.0_40" 
Java(TM) SE Runtime Environment (build 1.8.0_40-b25) 
Java HotSpot(TM) 64-Bit Server VM (build 25.40-b25, mixed mode) 

Trong jvisualvm tôi thêm các kết nối từ xa như sau (thử cả với kết nối ssl và không có):

enter image description here

Đây là jvisualvm thông báo lỗi mang lại cho tôi:

Error Message given by jvisualvm

Tôi có thể kết nối từ máy chủ lưu trữ cục bộ đến máy chủ từ xa với lệnh telnet 192.168.59.99:9010, khi quá trình từ xa đang chạy - do đó, điều này dường như không phải là vấn đề về tường lửa.

Mọi trợ giúp đều được đánh giá cao.

+1

Ông có thể thử với các tùy chọn Java sau: - "Dcom.sun.management .jmxremote -Dcom.sun.management.jmxremote.port = 9010 -Dcom.sun.management.jmxremote.authenticate = false -Dcom.sun.management.jmxremote.ssl = false -Djava.rmi.server.hostname = 192.168.59.99 "và cũng trong dịch vụ sử dụng Jconsole: jmx: rmi: /// jndi/rmi: //192.168.59.99: 9010/jmxrmi –

+0

Bạn đã lưu ngày của tôi. Những công việc này. Bạn có thể đăng bài này như là một câu trả lời, sau đó tôi sẽ sẵn sàng chấp nhận. – user152468

+0

Vui mừng khi biết rằng nó hoạt động! Được đăng dưới dạng câu trả lời. –

Trả lời

13

Vui lòng sử dụng các tùy chọn JVM sau:

-Dcom.sun.management.jmxremote -Dcom.sun.management.jmxremote.port=9010 -Dcom.sun.management.jmxremote.authenticate=false -Dcom.sun.management.jmxremote.ssl=false -Djava.rmi.server.hostname=192.168.59.99 

Trong jconsole sử dụng sau đây để kết nối:

service:jmx:rmi:///jndi/rmi://192.168.59.99:9010/jmxrmi 
+0

Có vẻ như một ý tưởng tồi để làm cho điều này có thể truy cập được mà không cần xác thực? Tuy nhiên, –

+4

@JackZachTibbles khá phổ biến trong tường lửa của công ty – Kyrstellaine

Các vấn đề liên quan