Monitoring Carbon using a remote JMX client

Archived Content
This article is provided for historical perspective only, and may not reflect current conditions. Please refer to relevant product page for more up-to-date product information and resources.
  • By Rajika Kumarasiri
  • 4 Oct, 2010

WSO2 Carbon which is the underline frame work for WSO2 ESB(and other products) now can be monitored using a remote JMX client(such as JConsole) which is behind a firewall. To enable this feature following two properties should be uncommented from the carbon.xml

 

<Ports>
  <!-- The JMX Ports -->
     <JMX>
         <!--The port RMI registry is exposed-->
         <!--<RMIRegistryPort>9999</RMIRegistryPort>-->
         <!--The port RMI server should be exposed-->
         <!--<RMIServerPort>11111</RMIServerPort>-->
     </JMX>
  </Ports>

These parameters also can be passed at server start up time using the system propertis "com.wso2.rmiserver.port" and "com.sun.management.jmxremote.port" for RMIServer port and the RMIRegistry port respectively.When monitoring Carbon remotely specifying the RMIRegistry port is sufficient but if your client is behind a firewall you'll also need to specify the second port, RMIServer port. This second port need to be opened by the firewall admin.

Following code fragment is from CarbonServerManager.java which shows how the JMX url is constructed according to provided port.

// Create an RMI connector and start it
if (rmiServerPortString != null) {
      int rmiServerPort = Integer.parseInt(rmiServerPortString);
      jmxURL = "service:jmx:rmi://" + NetworkUtils.getLocalHostname() + ":" +
                rmiServerPort + "/jndi/rmi://" + NetworkUtils.getLocalHostname() + ":" +
                            rmiRegistryPort + "/jmxrmi";
} else {
      jmxURL = "service:jmx:rmi:///jndi/rmi://" +
                NetworkUtils.getLocalHostname() + ":" + rmiRegistryPort + "/jmxrmi";
}
JMXServiceURL url = new JMXServiceURL(jmxURL);

With this improvment you'll be able to monitor any carbon based product using a JMX client which is behind a firewall.

Author

Rajika Kumarasiri, Senior Sofware Engineer,WSO2 Inc