Using JConsole to monitor a remote WildFly server
This quick tutorial shows how to monitor a remote WildFly application server in Standalone and Domain mode using the JConsole tool.
Connecting to a remote WildFly Server in Standalone Mode
The first thing you need to do is setting up a management user on the remote WildFly server using the add-user.sh/add-user.cmd script:
What type of user do you wish to add? a) Management User (mgmt-users.properties) b) Application User (application-users.properties) (a): a Enter the details of the new user to add. Using realm 'ManagementRealm' as discovered from the existing property files. Username : admin1234 Password requirements are listed below. To modify these restrictions edit the add- user.properties configuration file. . . . . Password : Re-enter Password :
Once created the user, startup the remote WildFly server, specifying a management interface IP or host binding:
standalone.bat -Djboss.bind.address.management=172.17.0.2
Now, on the local machine, locate the jconsole.sh/jconsole.bat script which is in the JBOSS_HOME/bin folder and execute it. You need to specify the http-remoting.jmx protocol, the hostname and the management port which is 9990. For example in our case you need to specify as Remote Process: service:jmx:remote+http://172.17.0.2:9990
Next enter the management Username and Password that you have created. 
Click on Connect. Voilà! We are connected to the remote application server:

Connecting to a remote WildFly Server in Domain Mode
First of all, make sure $JAVA_HOME is set correctly.
When running in Domain mode the main difference is that individual servers do not have a management port. Only the Host Controller exposes a management port. Therefore we need to set the remoting-connector in the jmx subsystem to not use the management endpoint as follows:
/profile=full/subsystem=jmx/remoting-connector=jmx:add(use-management-endpoint=false)
Resulting in the following change in domain.xml:
<subsystem xmlns="urn:jboss:domain:jmx:1.3">
<expose-resolved-model/>
<expose-expression-model/>
<remoting-connector use-management-endpoint="false"/>
</subsystem>
Next, define an ApplicationRealm user with the add-user script that you will use to connect to the WildFly servers for remote monitoring:
./add-user -a -u user1234 -p Password1!
Finally, execute the following commands to add a remoting port to the socket binding group, and add remoting to the ApplicationRealm.
/socket-binding-group=full-sockets/socket-binding=remoting:add(port=4447) /profile=full/subsystem=remoting/connector=remoting-connector:add(socket-binding=remoting,security-realm=ApplicationRealm)
The configuration is complete. You will need to bind the Host Controller at boot to one IP Address which is reachable from your tools
$ JBOSS_HOME/bin/domain.sh -b=192.168.1.109
In order to connect to the single WildFly servers of your Domain, you will use the jmx over remoting protocol, which is exposed on port 4447, as we configured it earlier:
service:jmx:remote://192.168.1.109:4447
Recommended Articles
Monitor JBoss CPU Usage Like a Pro: Tips and Tricks
Learn how to monitor JBoss CPU usage with VisualVM and JConsole, including tips on profiling and thread management.
Connecting VisualVM to WildFly with Java 21: A Step-by-Step Guide
Learn how to monitor and profile your WildFly application server using VisualVM, a free tool for Java applications.
Monitor Your Java Application Server with Hawtio: A Step-by-Step Guide
Learn how to use Hawtio as an open-source monitoring solution for JVM middleware like JBoss Enterprise Application Server and WildFly, with a single point of management across multiple middleware.
Monitor WildFly with CLI and Bash: A Simple Approach to Application Server Monitoring
Learn how to monitor your WildFly application server using only Java Management Extensions (JMX) CLI, bash, and awk. Automate alerts for key attributes like available connections and free heap memory.