jConsole – JMX remote access on Tomcat

jconsole-example

In this tutorial, we will show you how to use jConsole to remote access a Tomcat instance, for JVM monitoring stuff.

Tools and environment used :

  1. Ubuntu 13 + Tomcat 7 + 192.168.1.142
  2. Windows 8 + jConsole + 192.168.1.200

1. Tomcat + JMX

To connect with jConsole, Tomcat need to enable the JMX options. To solve it, create a {tomcat-folder}\bin\setenv.sh (if not exists), and put the following values :


-Dcom.sun.management.jmxremote 
-Dcom.sun.management.jmxremote.port={port to access} 
-Dcom.sun.management.jmxremote.authenticate=false 
-Dcom.sun.management.jmxremote.ssl=false
-Djava.rmi.server.hostname={optional, allow what ip to access this Tomcat}

for example,

{tomcat-folder}\bin\setenv.sh

export JAVA_OPTS="-Dcom.sun.management.jmxremote -Dcom.sun.management.jmxremote.port=9999 -Dcom.sun.management.jmxremote.authenticate=false -Dcom.sun.management.jmxremote.ssl=false"

Restart Tomcat, now you can connect to this Tomcat via jConsole in port 9999.

2. jConsole Example

2.1 Start jConsole.


c:\>jconsole

2.2 Select “Remote Process”, type the Tomcat ip and port to connect : 192.169.1.142:9999.

jconsole-tomcat-jmx-example

2.3 Clicks on the button “Insecure connection”. Tomcat detail is shown if connection is successful.

jconsole-tomcat-jmx-memory

References

  1. Monitoring and Managing Tomcat
  2. Oracle : jConsole
  3. Wikipedia : jConsole

About the Author

author image
mkyong
Founder of Mkyong.com, love Java and open source stuff. Follow him on Twitter, or befriend him on Facebook or Google Plus. If you like my tutorials, consider make a donation to these charities.

Comments

avatar
7 Comment threads
1 Thread replies
0 Followers
 
Most reacted comment
Hottest comment thread
8 Comment authors
SamEmil Sier??gaGurkan ErdogduVictormalli Recent comment authors
newest oldest most voted
malli
Guest
malli

hi i tried host name and port number i get the conncetion failed:connection timed out what is the solution?

Emil Sier??ga
Guest
Emil Sier??ga

It’s better to set CATALINA_OPTS not export JAVA_OPTS. Like in Tomcat documentation https://tomcat.apache.org/tomcat-7.0-doc/monitoring.html

Sam
Guest
Sam

Hi All, I’m unable to take Jconsole to Tomcat version 7 from a remote server. I get an error connection failed:Retry?

Victor
Guest
Victor

also check that the property sometimes you must declares a property named com.sun.management.jmxremote.rmi.port with the same value as the property com.sun.management.jmxremote.port. Check this for more info at this place : http://serverfault.com/questions/308662/how-do-i-fix-a-failed-to-retrieve-rmiserver-stub-jmx-error

Safiur
Guest
Safiur

Did the below changes
export JAVA_OPTS=”-Dcom.sun.management.jmxremote -Dcom.sun.management.jmxremote.port=9999 -Dcom.sun.management.jmxremote.authenticate=true -Dcom.sun.management.jmxremote.ssl=false -Dcom.sun.management.jmxremote.password.file=/ngs/Users/edam/NewInst/aem02/jmx.password” its throughing error connection failed.

Wim
Guest
Wim

Works fine. But.. stopping tomcat gives the following error:

Error: Exception thrown by the agent : java.rmi.server.ExportException: Port already in use: 2345; nested exception is:
java.net.BindException: Address already in use

Result: I can’t stop tomcat.

Reny
Guest
Reny

Try to change from JAVA_OPTS to CATALINA_OPTS.

Gurkan Erdogdu
Guest
Gurkan Erdogdu

ManageCat provides free monitoring license to manage and monitor the Apache Tomcat and TomEE instances. Checkout the http://managecat.com to get further information. With ManageCat, there is no need to configure and install anything to monitor your instances.