While trying to monitor JBoss, I get the error 'Unable to collect Data for <host name>' while the JVM and EJB details are missing.

While trying to monitor JBoss, I get the error 'Unable to collect Data for <host name>' while the JVM and EJB details are missing.

Reason 1: jbossagent.sar hasn't been deployed in the JBoss server

  • Applications Manager collects JBoss MBean details by directly connecting to the JBoss JNDI Naming service. The application http-invoker.sar which comes by default with JBoss installation is used to access the JBoss JNDI service.
  • Ideally, jbossagent.sar should have automatically been deployed by the Applications Manager in the JBoss server as soon as it is discovered. If this does not happen, you will get the 'Unable to collect Data' message.
  • Applications Manager should be able to access the host machine of the JBoss server and vice versa. To ensure the same, do the following : 
    • To check whether AppManager is accessible from the JBoss host machine, invoke the following URL from the machine where the JBoss server is installed,  
                              http://<AppMan_Host>:<AppMan_Port>/classes/jbossagent.sar

    • To test whether the Manageengine Agent has been deployed properly in the JBoss server, go to the JMX Console in the JBoss server and check if there is a domain named 'Manageengine'. 
    • Example: Access the URL "http://<JBoss Server Host>:8080/jmx-console/" and check for 'Manageengine' domain. 
  • If the host is not accessible, then we infer that the agent is not deployed.
  • Solution:  To deploy the agent manually, copy the file jbossagent.sar from <AppMan_Home>/working/resources> directory and place it in the deploy folder of the respective JBoss server and restart the JBoss server.

Reason 2: A customized version of JBoss is being used.

  • Solution: If you are using a customized version of JBoss, the http-invoker.sar should be deployed in the JBoss Server for Applications Manager to discover and manage it.

Reason 3 : The http port of the JBoss server has been altered.

  • Solution: If the http port of the JBoss server is changed then the port number in the attribute InvokerURLSuffix should also be modified in "jboss-service.xml" file present under "JBoss_Home\server\<jboss_server_name>\deploy\http-invoker.sar\META-INF". 
  • Make sure that the port number in the "JBoss_Home\server\<servername>\deploy\jbossweb-tomcat55.sar\server.xml" file and "JBoss_Home\server\<servername>\deploy\http-invoker.sar\META-INF\jboss-service.xml" file are same. If not, change the port number in "jboss-service.xml" file.
  • Note: InvokerURLSuffix occurs in many places in the XML file and the port number should be changed for all the occurrences. See a sample file - Sample_http_invoker_sar.html which highlights all the ports that need to be changed.

Reason 4: When the JBoss host machine has multiple IPs mapped to it. 

  • Solution: To start JBoss with proper bindaddress, use the command run.bat -b <ip address of the machine> to start the JBoss server. To obtain the IP address of the machine, execute the command ping <hostname> in the host where Applications Manager is running.

Reason 5 : JBoss is installed in a different network.

  • Applications Manager could connect only to the JBoss server's IP address but it could not resolve its hostname.
  • For AppManager to monitor JBoss, both the AP Address and the hostname should be accessible to Applications Manager.
  • Solution: 
    • For Windows, add an entry for jbosshostname/jbossip in <WINDOWS SYSTEM DIR>\drivers\etc\hosts in the machine in which Applications Manager is installed so that AppManager can resolve the JBoss host name. 
    • For linux, add the same entry in /etc/hosts file. 

Reason 6 : There is a firewall between JBoss and Applications Manager.