How to connect to JBoss EAP using JConsole

Solution Verified - Updated

Environment

  • Red Hat JBoss Enterprise Application Platform (EAP)
    • 8.x
    • 7.x
    • 6.x

Issue

  • How to configure JMX monitoring with JBoss EAP 6/7?
  • How to monitor JBoss health ?
  • How does one enable the JMX port on EAP 6?
  • Unable to use JConsole when JBoss is running as windows service.
  • After adding following JAVA_OPTIONS options to the configuration file
JAVA_OPTS="$JAVA_OPTS -Djboss.platform.mbeanserver"
JAVA_OPTS="$JAVA_OPTS -Djavax.management.builder.initial=org.jboss.mx.server.MBeanServerBuilderImpl"
JAVA_OPTS="$JAVA_OPTS  -Dcom.sun.management.jmxremote.port=9002"
JAVA_OPTS="$JAVA_OPTS  -Dcom.sun.management.jmxremote.authenticate=false"
JAVA_OPTS="$JAVA_OPTS  -Dcom.sun.management.jmxremote.ssl=false"

and getting the following errors:

WARNING: Failed to load the specified log manager class org.jboss.logmanager.LogManager
java.lang.IllegalStateException: The LogManager was not properly installed (you must set the "java.util.logging.manager" system property to "org.jboss.logmanager.LogManager")
	at org.jboss.logmanager.Logger.getLogger(Logger.java:61)
	at org.jboss.as.server.Main.main(Main.java:84)
	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
	at java.lang.reflect.Method.invoke(Method.java:601)
	at org.jboss.modules.Module.run(Module.java:270)
	at org.jboss.modules.Main.main(Main.java:294)

java.lang.ClassNotFoundException: org.jboss.logmanager.LogManagererror while trying to connect to JBoss EAP6 using JConsole.

Commons Daemon procrun stderr initialized Could not load Logmanager "org.jboss.logmanager.LogManager"
java.lang.ClassNotFoundException: org.jboss.logmanager.LogManager
 at java.net.URLClassLoader$1.run(URLClassLoader.java:366)
 at java.net.URLClassLoader$1.run(URLClassLoader.java:355)
 at java.security.AccessController.doPrivileged(Native Method)
 at java.net.URLClassLoader.findClass(URLClassLoader.java:354)
 at java.lang.ClassLoader.loadClass(ClassLoader.java:423)
 at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:308)
 at java.lang.ClassLoader.loadClass(ClassLoader.java:356)
 at java.util.logging.LogManager$1.run(LogManager.java:185)
 at java.security.AccessController.doPrivileged(Native Method)
 at java.util.logging.LogManager.<clinit>(LogManager.java:175)
 at java.util.logging.Logger.getLogger(Logger.java:327)
 at com.sun.jmx.remote.util.ClassLogger.<init>(ClassLogger.java:55)
 at sun.management.jmxremote.ConnectorBootstrap.<clinit>(ConnectorBootstrap.java:823)
 at sun.management.Agent.startAgent(Agent.java:244)
 at sun.management.Agent.startAgent(Agent.java:369)

javax.management.JMRuntimeException: Failed to load MBeanServerBuilder class org.jboss.system.server.jmx.MBeanServerBuilderImpl: java.lang.ClassNotFoundException: org.jboss.system.server.jmx.MBeanServerBuilderImpl
 at javax.management.MBeanServerFactory.checkMBeanServerBuilder(MBeanServerFactory.java:502)
 at javax.management.MBeanServerFactory.getNewMBeanServerBuilder(MBeanServerFactory.java:538)
 at javax.management.MBeanServerFactory.newMBeanServer(MBeanServerFactory.java:315)
 at javax.management.MBeanServerFactory.createMBeanServer(MBeanServerFactory.java:230)
 at javax.management.MBeanServerFactory.createMBeanServer(MBeanServerFactory.java:191)
 at java.lang.management.ManagementFactory.getPlatformMBeanServer(ManagementFactory.java:466)
 at sun.management.jmxremote.ConnectorBootstrap.startRemoteConnectorServer(ConnectorBootstrap.java:453)
 at sun.management.Agent.startAgent(Agent.java:244)
 at sun.management.Agent.startAgent(Agent.java:369)
Caused by: java.lang.ClassNotFoundException: org.jboss.system.server.jmx.MBeanServerBuilderImpl
 at java.net.URLClassLoader$1.run(URLClassLoader.java:366)
 at java.net.URLClassLoader$1.run(URLClassLoader.java:355)
 at java.security.AccessController.doPrivileged(Native Method)
 at java.net.URLClassLoader.findClass(URLClassLoader.java:354)
 at java.lang.ClassLoader.loadClass(ClassLoader.java:423)
 at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:308)
 at java.lang.ClassLoader.loadClass(ClassLoader.java:356)
 at javax.management.MBeanServerFactory.loadBuilderClass(MBeanServerFactory.java:445)
 at javax.management.MBeanServerFactory.checkMBeanServerBuilder(MBeanServerFactory.java:487)
 ... 8 more
Exception thrown by the agent : javax.management.JMRuntimeException: Failed to load MBeanServerBuilder class org.jboss.system.server.jmx.MBeanServerBuilderImpl: java.lang.ClassNotFoundException: org.jboss.system.server.jmx.MBeanServerBuilderImpl
  • How to integrate JConsole with JBoss EAP 6?
  • How do enable JMX monitoring?
  • Is JMX supported on JBoss EAP 6?
  • Found an issue that EAP 6.1 does not support sun jmx as mentioned Content from issues.jboss.org is not included.here then how to monitor EAP process from remote machine ?
  • How to connect to JBoss EAP6 server running on Linux via Jconsole which is running on windows OS ?
  • I start EAP6 on using standalone.bat then then I start jconsole using jconsole.bat. MBeans are supposed to appear in jboss.as module in MBeans Tab. But it doesn't happen.
  • Unable to run JMX on JBoss EAP 6.
  • Not able to launch jconsole.
  • It is possible to access arbitrary JMX attributes on arbitrary MBeans.
  • We are trying to enable JMX monitoring through Data Dog(DD). For this I have installed DD-Agent on the server locally per DD instructions but I can't get JMX working or unable to see through Jconsole. Error I am seeing is :
| ERROR| App | Cannot connect to instance localhost:9999 java.io.IOException: Failed to retrieve RMIServer stub: javax.naming.ServiceUnavailableException [Root exception is java.rmi.ConnectException: Connection refused to host: localhost; nested exception is:
        java.net.ConnectException: Connection refused]
  • JBOSS 6.2 configuration management. We are not able to connect the Jboss 6.2 EAP to any of the tools like Jconsole, Visual VM for monitoring JVM.

Resolution

The MBean remote access behaviour changed in JBoss EAP 6.

To connect to JBoss EAP6 using JConsole, use the script provided in $JBOSS_HOME/bin/jconsole.sh

Do the following:

  1. Set JAVA_HOME in $JBOSS_HOME/bin/jconsole.sh and set JAVA_HOME in $JBOSS_HOME/bin/standalone.conf

  2. Create a Management User using the script $JBOSS_HOME/bin/add-user.sh . (for example username : admin , password : admin123)

  3. Start the JBoss server with the management bind address e.g ./standalone.sh -c standalone-full.xml -bmanagement 10.10.10.10

  4. Run script $JBOSS_HOME/bin/jconsole.sh (on your local machine, if connecting to a remote JBoss instance)

  5. Set the remote connection URL as

    service:jmx:remoting-jmx://10.10.10.10:9999

    with the username : admin and password : admin123

use-management-endpoint property

  • Check to see if the property use-management-endpoint=false is set on the "jmx" subsystem in standalone.xml (default value is true if the property does not exist). If this is set to false then you will need to connect on Remoting port 4447 instead of the native management port on 9999.

RBAC

If you have configured Role Based Access Control (RBAC) then you need to make sure that the user you want to use with jconsole is added to a role that has appropriate permissions to access the mbeans such as Monitor, SuperUser, or Administrator.

Domain Mode

Important: to connect to the domain controller itself in domain mode, you use the identical steps for standalone mode.
To connect JConsole in domain mode, refer to Connecting To JBoss Via JConsole In Domain Mode.

EAP 5/ EAP 4

See solution Monitoring JBoss EAP 5 / 4 using JConsole / JMX for details.

Root Cause

Diagnostic Steps

REQUIRED CLASSPATH
For EAP 6.1.1

${JAVA_HOME}/lib/jconsole.jar:${JAVA_HOME}/lib/tools.jar:
${JBOSS_HOME}/modules/org/jboss/remoting3/remoting-jmx/main/remoting-jmx-1.0.4.Final-redhat-1.jar:
${JBOSS_HOME}/modules/org/jboss/remoting3/main/boss-remoting-3.2.14.GA-redhat-1.jar:
${JBOSS_HOME}/modules/org/jboss/logging/main/jboss-logging-3.1.2.GA-redhat-1.jar:
${JBOSS_HOME}/modules/org/jboss/xnio/main/xnio-api-3.0.7.GA-redhat-1.jar:
${JBOSS_HOME}/modules/org/jboss/xnio/nio/main/xnio-nio-3.0.7.GA-redhat-1.jar:
${JBOSS_HOME}/modules/org/jboss/sasl/main/jboss-sasl-1.0.3.Final-redhat-1.jar:
${JBOSS_HOME}/modules/org/jboss/marshalling/main/jboss-marshalling-1.3.15.GA-redhat-1.jar:
${JBOSS_HOME}/modules/org/jboss/marshalling/river/main/jboss-marshalling-river-1.3.15.GA-redhat-1.jar:
${JBOSS_HOME}/modules/org/jboss/as/cli/main/jboss-as-cli-7.1.2.Final-redhat-1.jar:
${JBOSS_HOME}/modules/org/jboss/staxmapper/main/staxmapper-1.1.0.Final-redhat-2.jar:
${JBOSS_HOME}/modules/org/jboss/as/protocol/main/jboss-as-protocol-7.1.3.Final-redhat-4.jar:
${JBOSS_HOME}/modules/org/jboss/as/controller-client/main/jboss-as-controller-client-7.1.3.Final-redhat-4.jar:
${JBOSS_HOME}/modules/org/jboss/as/controller/main/jboss-as-controller-7.1.3.Final-redhat-4.jar:
${JBOSS_HOME}/modules/org/jboss/dmr/main/jboss-dmr-1.1.1.Final-redhat-2.jar:
${JBOSS_HOME}/modules/org/jboss/threads/main/jboss-threads-2.0.0.GA-redhat-2.jar:
Category

This solution is part of Red Hat’s fast-track publication program, providing a huge library of solutions that Red Hat engineers have created while supporting our customers. To give you the knowledge you need the instant it becomes available, these articles may be presented in a raw and unedited form.