在尝试监控JBoss 时,我收到一个错误消息“无法收集<主机名>的数据”,并且JVM和EJB详细信息缺失。

在尝试监控JBoss 时,我收到一个错误消息“无法收集<主机名>的数据”,并且JVM和EJB详细信息缺失。

原因一:jbossagent.sar没有部署到JBoss服务器中

  • Applications Manager通过直接连接到JBoss JNDI命名服务来收集JBoss MBean的详细信息。默认使用JBoss安装的应用程序http-invoker.sar用于访问JBoss JNDI服务。
  • 理想情况下,一旦发现jbossagent.sar,就应该由Applications Manager自动部署到JBoss服务器中。如果没有即时部署,您将收到“无法收集数据”消息。
  • Applications Manager应该能够访问JBoss服务器的主机,反过来也是相同的。为确保相同,请执行以下操作: 
    • 要检查是否可以从JBoss 机访问AppManager,请从安装JBoss服务器的计算机调用以下URL,  
                              http://<AppMan_Host>:<AppMan_Port>/classes/jbossagent.sar

    • 要测试Manageengine代理是否已正确部署在JBoss服务器中,请转到JBoss服务器中的JMX控制台并检查是否有名为“Manageengine”的域。 
    • 示例:访问URL “http://<JBoss Server Host>:8080/jmx-console/”,并检查“Manageengine”域。 
  • 如果主机不可访问,那么我们推断代理没有完成部署。
  • 解决方案:需要您手动部署代理,请从<AppMan_Home>/working/resources>目录中复制文件jbossagent.sar,并将其放在相应的JBoss服务器部署的文件夹中,然后重新启动JBoss服务器。

原因 2:正在使用JBoss的定制版本。

  • 解决方案:如果您使用的是自定义版本的JBoss,应将http-invoker.sar部署在JBoss服务器中,以便Applications Manager发现和管理它。

原因3: JBoss服务器的http端口被更改。

  • 解决方案:如果更改了JBoss服务器的http端口,那么属性InvokerURLSuffix中的端口号也应该在“JBoss_Home\server\<jboss_server_name>\deploy\http-invoker.sar\META-INF”下的"jboss-service.xml"文件中修。
  • 确保“JBoss_Home\server\<servername>\deploy\jbossweb-tomcat55.sar\server.xml”文件和“JBoss_Home\server\<servername>\deploy\http-invoker.sar\META-INF\jboss-service.xml”文件中的端口号相同。如果不同,请您更改“jboss-service.xml”文件中的端口号。
  • 注意:InvokerURLSuffix出现在XML文件中的许多地方,并且应该更改所有出现的端口号。请参阅示例文件 - Sample_http_invoker_sar.html,其中突出显示了需要更改的所有端口。

原因 4:当JBoss主机映射了多个IP时。 

  • 解决方案:要使用正确的绑定地址启动JBoss,请使用命令run.bat -b <ip address of the machine>启动JBoss服务器。要获取计算机的IP地址,请在运行Applications Manager的主机中执行命令ping <hostname>。

原因 5:JBoss安装在不同的网络中。

  • Applications Manager只能连接到JBoss服务器的IP地址,但无法解析其主机名。
  • 对于AppManager监控JBoss,Applications Manager应该可以同时访问AP地址和主机名。
  • 解决方案: 
    • 对于Windows,在安装Applications Manager的计算机的<WINDOWS SYSTEM DIR>\drivers\etc\hosts中添加 jbosshostname/jbossip条目,以便AppManager可以解析JBoss主机名。 
    • 对于Linux,在/etc/hosts文件中添加相同的条目。 

原因 6: JBoss和Applications Manager之间存在防火墙。