如何使用Java Mission Control监控WebLogic?

时间:2014-03-25 18:51:49

标签: weblogic-10.x jmc

我想使用Java Mission Control监控我们在WebLogic 10.3.6上托管的Web应用程序的性能。我正在密切关注Java Mission Control上的Java One 2013 talk中讨论的过程。

当我尝试开始航班录制时,收到错误消息:

enter image description here

据我所知,我已经设置了正确的Java命令行参数等。我的Java是:

java version "1.7.0_40"
Java(TM) SE Runtime Environment (build 1.7.0_40-b43)
Java HotSpot(TM) 64-Bit Server VM (build 24.0-b56, mixed mode)

我按如下方式启动WebLogic:

C:\dev\dev-tools\Glassfish\jdk7\bin\java
-client
-Xms512m
-Xmx1024m
-XX:CompileThreshold=8000
-XX:PermSize=512m
-XX:MaxPermSize=512m
-Dweblogic.Name=AdminServer
-Djava.security.policy=C:\dev\servers\Oracle\WLS_10~1.6\WLSERV~1.3\server\lib\weblogic.policy
-Djava.net.preferIPv4Stack=true
-Xms2048m
-Xmx4096m
-XX:CompileThreshold=8000
-XX:PermSize=1024m
-XX:MaxPermSize=1536m
-verbose:gc
-XX:+PrintGCTimeStamps
-XX:+PrintGCDetails
-Xloggc:C:/Temp/gcsVBMS.txt
-XX:+PrintTenuringDistribution
-XX:-HeapDumpOnOutOfMemoryError
-XX:HeapDumpPath=c:\Temp\dump.hprof
    -XX:+UnlockCommercialFeatures
    -XX:+FlightRecorder
    -Dcom.sun.management.jmxremote.authenticate=false
    -Dcom.sun.management.jmxremote.ssl=false
-Xverify:none
-da
-Djavax.net.ssl.keyStore=XXX
-Djavax.net.ssl.keyStorePassword=jvmpassword
-Djavax.net.ssl.trustStore=XXX
-Djavax.net.ssl.keyStore=XXX
-Djavax.net.ssl.keyStorePassword=jvmpassword
-Djavax.net.ssl.trustStore=XXX
-Dplatform.home=C:\dev\servers\Oracle\WLS_10~1.6\WLSERV~1.3
-Dwls.home=C:\dev\servers\Oracle\WLS_10~1.6\WLSERV~1.3\server
-Dweblogic.home=C:\dev\servers\Oracle\WLS_10~1.6\WLSERV~1.3\server
-Dweblogic.management.discover=true
-Dwlw.iterativeDev=
-Dwlw.testConsole=
-Dwlw.logErrorsToConsole=
-Dweblogic.ext.dirs=C:\dev\servers\Oracle\WLS_10~1.6\patch_wls1036\profiles\default\sysext_manifest_classpath;C:\dev\servers\Oracle\WLS_10~1.6\patch_ocp371\profiles\default\sysext_manifest_classpath
weblogic.Server

我认为jmc应该能够自动连接到发现的JVM,因为我已经提供了推荐的Java参数(上面缩进)。我需要做些什么才能让它发挥作用?

3 个答案:

答案 0 :(得分:1)

希望你已经在其他地方得到了答案, 但如果没有:

如果我猜的话,这个问题与机器的网络配置有关, 你可以尝试添加 -Djava.rmi.server.hostname =本地主机 要么 -Djava.rmi.server.hostname =

您也可以添加 -Dcom.sun.management.jmxremote.port =

并创建与localhost的自定义连接:或:

// Klara,Java Mission Control Dev

答案 1 :(得分:1)

我需要所有这些参数来运行我的集成Weblogic,它将捆绑在Jdeveloper中:

-Dcom.sun.management.jmxremote 
-Dcom.sun.management.jmxremote.port=8999 
-Dcom.sun.management.jmxremote.ssl=false
-Dcom.sun.management.jmxremote.authenticate=false 
-XX:+UnlockCommercialFeatures 
-XX:+FlightRecorder

答案 2 :(得分:1)

请注意生产系统上的这些选项

-Dcom.sun.management.jmxremote.port=8999 
-Dcom.sun.management.jmxremote.ssl=false

请记住,根据Java文档,这可以启用任意源代码的执行,如下所示:

  

禁用安全性

     

禁用密码验证和SSL(即禁用所有密码验证)   安全性),你应该设置以下系统属性   启动Java VM。

     

com.sun.management.jmxremote.authenticate=false

     

com.sun.management.jmxremote.ssl=false

     

注意 - 此配置不安全:任何知道(或猜测)的远程用户   您的端口号和主机名将能够监视和控制   您的Java应用程序和平台。此外,可能的伤害不是   仅限于您在MBean中定义的操作。远程客户端   可以创建ajavax.management.loading.MLet MBean并使用它来创建   来自任意URL的新MBean,至少在没有安全性的情况下   经理。换句话说,一个流氓远程客户端可以创建您的Java   应用程序执行任意代码。因此,在禁用时   安全性可能是可以接受的,但它是强有力的   建议您不要禁用生产系统的安全性。

来源:https://docs.oracle.com/javase/7/docs/technotes/guides/management/agent.html

我认为以安全的方式使用它的最佳方式是使用双向SSL,如本文档所示:

https://www.ibm.com/support/knowledgecenter/en/SSJJ9R_5.0.1/com.ibm.jazz.repository.web.admin.doc/topics/t_server_mon_tomcat_option3.html

设置客户端SSL身份验证

从这一点来说,完整的SSL安全解决方案要求您还激活客户端级别的SSL身份验证。 关于这个任务 您可以将JMX的客户端身份验证配置为基于SSL证书。以下示例显示如何将JConsole配置为基于SSL证书。您可以使用类似的步骤配置任何其他客户端。作为指导原则,此配置的一般步骤如下: 为客户端和服务器创建SSL密钥库和信任库。 每边出口证书。 在服务器级别和客户端级别交换和导入证书。 与CLM捆绑在一起的Apache Tomcat服务器具有密钥库,之前的说明显示了如何导出证书并将其导入客户端。以下步骤显示了为JConsole实现客户端身份验证的其余配置。为清楚起见,在示例中使用了样本值和自签名证书;你应该根据你的环境政策调整它们。

<强>程序

要为JConsole创建密钥库,请打开命令提示符,然后转到JazzInstallDir / server / jre / bin并输入以下命令:

keytool -genkey -alias jconsole -keyalg RSA -validity 365 -keystore jconsole.keystore -storepass password -keypass password

输入以下命令以从JConsole导出证书: keytool -export -alias jconsole -keystore jconsole.keystore -file client.cer -storepass password

输入以下命令以导入Apache Tomcat信任库。该命令生成一个新的信任库: keytool -import -alias jconsole-ibm-team -file client.cer -keystore ibm-team-ssl.truststore -storepass ibm-team -noprompt

要使用信任库配置服务器,除了以前的SSL配置的属性外,还要将相关属性添加到server.startupfile: Linux操作系统:

JAVA_OPTS =“$ JAVA_OPTS -Djavax.net.ssl.trustStore = path_to_the_trust_store / ibm-team-ssl.truststore” JAVA_OPTS =“$ JAVA_OPTS -Djavax.net.ssl.trustStorePassword = ibm-team”

Microsoft Windows:

JAVA_OPTS =%JAVA_OPTS%-Djavax.net.ssl.trustStore = path_to_the_trust_store / ibm-team-ssl.truststore JAVA_OPTS =%JAVA_OPTS%-Djavax.net.ssl.trustStorePassword = ibm-team 复制

要连接到JConsole,以下示例调用将使用这些新资产。身份验证基于证书交换。

jconsole -J-Djavax.net.ssl.trustStore = jconsole.truststore -J-Djavax.net.ssl.trustStorePassword = ibm-team -J-Djavax.net.ssl.keyStore = jconsole.keystore -J-Djavax .net.ssl.keyStorePassword =密码服务:jmx:rmi:/// jndi / rmi:// host:1099 / jmxrmi