JConsole for monitoring Weblogic Application Server 12c

Performance and high availability of production systems are critical for any business. Hence there is a plethora of monitoring tools available in the market that helps you to monitor your production systems, generate alerts, and trigger emails in down time situations. Few commercially available monitoring tools in the market are wily introscope, Appdynamics etc.

For further details on wily introscope.

http://www.numeroreal.com.br/Manuais/uploads/CA%20Wily%20Introscope.pdf

For further details on Appdynamics.

https://www.appdynamics.com/solutions/appdynamics-java-monitoring/oracle-weblogic-monitoring

Apart from commercially available monitoring tools, there are few freely available monitoring tools like jconsole, jhat, jstack and weblogic’s very own JRMC, WLDF (For performance monitoring).

This post is a sample illustration of how we can configure Jconsole with WebLogic Application Server for monitoring.

What is JConsole?

The JConsole graphical user interface is a monitoring tool that complies to the Java Management Extensions (JMX) specification. JConsole uses the extensive instrumentation of the Java Virtual Machine (Java VM) to provide information about the performance and resource consumption of applications running on the Java platform.

References:

http://docs.oracle.com/javase/6/docs/technotes/guides/management/jconsole.html

 

How do I configure Jconsole with weblogic application server?

Local server monitoring:

  1. Set the classpath by running setDomainEmv.cmd from <WLS_DOMAIN_HOME>bin
  2. Start Jconsole.exe  ( Alternatively you can execute it from from the default java location :  C:Program FilesJavajdk1.6.0_45bin)
  3. Select the Weblogic Server instance from the local process list.

 

Jconsole Weblogic Application Server 1
Jconsole Weblogic Application Server 1

4: Monitor the server nitty-gritty details:

Jconsole Weblogic Application server 2
Jconsole Weblogic Application server 2

 

 

Remote Server Monitoring using JConsole:

  1. Update the setDomainEnv.cmd  with the below parameters in the JAVA_OPTIONS and restart the Weblogic Server

For non- authenticated user and non – ssl mechanism:

-Dcom.sun.management.jmxremote

-Dcom.sun.management.jmxremote.port=9001

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

-Dcom.sun.management.jmxremote.authenticate=false

 

For authenticated SSL mechanism:

-Dcom.sun.management.jmxremote.ssl=true

-Dcom.sun.management.jmxremote.password.file=jmxremote.password

-Djavax.net.ssl.keyStore=/home/user/.keystore

-Djavax.net.ssl.keyStorePassword=myKeyStorePassword

-Dcom.sun.management.jmxremote.ssl.need.client.auth=true

-Djavax.net.ssl.trustStore=/home/user/.truststore

-Djavax.net.ssl.trustStorePassword=myTrustStorePassword

-Dcom.sun.management.jmxremote.registry.ssl=true

2. Set the classpath and start JConsole

jconsole -Djava.class.path=$JAVA_HOME/lib/jconsole.jar:$JAVA_HOME/lib/tools.jar:</code> <code>$WLS_HOME/server/lib/wlfulclient.jar -Djmx.remote.protocol.provider.pkgs=weblogic.management.remote -debug

3. Connect using hostname and port

Jconsole-RemoteProcess1

You will have access to all the details of the remote JVM

For accessing only the MBeans:

If you want to connect only to the JMX MBeans follow the below steps:

1. Login into the Weblogic Admin Console and navigate to the server that needs to be monitored, set the username / password for the IIOP protocols.

Jconsole-RemoteProcess-Mbean1

Jconsole-RemoteProcess-Mbean2

Note: Restart the designated server

2.       Set the classpath and start JConsole.

jconsole -Djava.class.path=$JAVA_HOME/lib/jconsole.jar:$JAVA_HOME/lib/tools.jar: $WLS_HOME/server/lib/wlfulclient.jar -Djmx.remote.protocol.provider.pkgs=weblogic.management.remote -debug

3.       Connect to the server Mbeans using the service URL as below:

service:jmx:rmi:///jndi/iiop://<Hostname>:7001/weblogic.management.mbeanservers.domainruntime

Jconsole-RemoteProcess-Mbean4

 

Note: You would not see other JVM details but only the domain runtime MBeans

Further reading:

http://docs.oracle.com/javase/6/docs/technotes/guides/management/jconsole.html

http://db.apache.org/derby/docs/10.10/adminguide/radminjmxenablepwdssl.html

https://blogs.oracle.com/WebLogicServer/entry/managing_weblogic_servers_with


Common Exceptions:

1. java.io.IOException: Failed to retrieve RMIServer stub: javax.naming.NameNotFoundException [Root exception is org.omg.CosNaming.NamingContextPackage.NotFound: IDL:omg.org/CosNaming/NamingContext/NotFound:1.0]

Possible solutions:

Make sure the JMX Service url is correct and the JNDI value is properly mentioned.

2. org.omg.CORBA.NO_PERMISSION:   vmcid: 0x0  minor code: 0  completed: No

Possible solutions:

The server failed to authenticate the IIOP client or the server port is not defined properly.

Change the default IIOP username / password for the weblogic server.

 

Cheers,

Wonders Team.