无法连接到应用程序

如果您要监控的应用程序未显示在连接对话列表中,请查看这些可能的解决方案。

运行任何应用程序的运行时环境必须已安装 Health Center 代理,之后才能监控该应用程序。请参阅代理安装指示信息

Health Center 代理安装是否正确?

检查 Health Center 代理的安装。请参阅安装 Health Center,以了解更多信息。

是否已对应用程序启用监控?

检查是否已对应用程序启用监控。请参阅启动 Health Center 代理,以了解更多信息。

如果无法连接到 Java 应用程序,请检查是否使用针对您的 Java 版本的正确参数启动了应用程序。请参阅平台需求,以了解有关将 Health Center 用于各种版本的 Java SDK 的进一步信息。

检查代理和应用程序是否正在运行。

检查应用程序是否已启动。检查正在该应用程序上运行的代理。如果代理已成功启动,您通常会在应用程序控制台中看到类似如下的消息:
  • 对于 Java 应用程序:INFO: Health Center agent started on port 1972
  • 对于 Node.js 应用程序:[Thu Oct 30 10:52:29 2014] com.ibm.diagnostics.healthcenter.node INFO: Health Center 3.0.0.20141030
端口号还会写入用户临时目录中的 healthcenter.<pid>.log 文件。<pid> 是正在侦听该端口的代理的进程标识。

检查应用程序是否仍在运行。有时应用程序会意外地提前结束。

如果受监控的运行时环境正在运行,但是已没有活动的应用程序线程,也可能会出现连接问题。

检查 MQTT 代理程序是否正在运行,以及 Health Center 是否配置为连接到该代理程序

如果您在使用 MQTT 连接,请检查 MQTT 代理程序是否正在运行。 如果该代理程序未在运行或检测不到,那么“连接”向导中会显示消息 No broker was detected on host_name on port port_number。如果已连接该代理程序但未检测到代理,那么“连接”向导的“搜索代理”页面中通常显示代理列表的区域为空。

如果该代理程序正在运行但检测不到,请检查“连接”向导中指定的 MQTT 主机名和端口是否与 MQTT 代理程序的主机名和端口相匹配。请参阅代理程序文档,以了解有关在何处设置这些值的信息。

如果检测到该代理程序但未列出代理,请检查以下项:
  • 检查是否装入了正确的 Health Center 代理配置属性文件。不同位置中会有该文件的多个版本,如配置 Health Center 代理中所述。 您可以使用 IBM_HC_NODE_EARLY_LOGGING 环境变量(设置为任意值)将消息输出到 stderr 流,用于描述属性文件的装入尝试情况。同时,请确保该文件具有正确的访问许可权。
  • 检查属性文件的内容。例如,检查 com.ibm.diagnostics.healthcenter.mqtt.broker.hostcom.ibm.diagnostics.healthcenter.mqtt.broker.port 属性是否与 MQTT 代理程序的主机名和端口相匹配,以及检查 com.ibm.diagnostics.healthcenter.mqtt 属性是否已设置为 on。有关属性的更多信息,请参阅 Health Center 配置属性
如果代理程序正在运行且代理成功连接到该代理程序,那么应该看到该代理输出的以下消息:
com.ibm.diagnostics.healthcenter.mqtt INFO: Connected to broker localhost:1883
如果未看到任何消息,请检查配置属性文件中的 com.ibm.diagnostics.healthcenter.logging.level 属性的值。要了解更多信息,请参阅Health Center 配置属性

检查暂挂的应用程序

如果受监控的运行时环境已暂挂,那么连接对话无法连接到受监控的 VM,可能会出现超时。

检查防火墙

如果受监控的应用程序和客户机不在同一工作站上,客户机就必须能够远程访问受监控的应用程序。如果远程工作站受防火墙保护,那么必须在防火墙上打开一个端口,以允许 Health Center 代理侦听连接。

仅对于 Java 应用程序,如果 Health Center 设置为使用 iiop 作为传输协议(缺省值),那么还必须在防火墙中打开第二个端口,以供对象请求代理程序 (ORB) 使用。使用 IIOP 端口系统属性指定该端口。 要了解更多信息,请参阅Health Center 配置属性

选择 JMX 连接选项且 Health Center 在扫描远程机器上的代理时,防火墙还可能导致超时。在这些情况下,请指定确切的 Health Center 端口,并清除扫描接下来的端口以查找可用端口选项。

检查网络接口

如果正运行受监控应用程序的系统具有多个网络接口,该代理可能会侦听客户机使用的其他某个端口。请使用系统属性来设置代理侦听的接口。要使用特定的网络接口,请使用以下属性运行服务器。
-Djava.rmi.server.hostname=<preferred_ip_address>
<preferred_ip_address> 确定代理使用的接口。

检查认证

如果在受监控的应用程序上启用了认证,请确保在连接向导的首页已输入安全凭证。如果没有这些凭证,受监控的应用程序就不会出现在连接向导第二页的应用程序列表中。

如果您在使用 MQTT 代理程序,请检查 Health Center 中该代理程序用户名和密码属性是否设置为与该代理程序凭证相匹配。要了解更多信息,请参阅保护 Health Center

检查应用程序线程是否正在运行

检测到所有应用程序线程都已终止后,Health Center 代理会关闭。某些情况下,您可能不希望 Health Center 关闭。例如,将对象导出到外部 RMI 注册程序的 Java 应用程序保持活动状态以允许 RMI 连接,但是并不存在活动的应用程序线程。Health Center 代理找不到应用程序线程,因此它已终止。

仅对于 Java 应用程序:要确保 Health Center 代理持续运行,请将 keepAlive 选项添加至 Health Center 启动参数:
-agentlib:healthcenter=keepAlive
注: keepAlive 选项的副作用是受监控的 JVM 不会终止。


© Copyright IBM Corporation 2007, 2015.
© Copyright 1997, 2015, Oracle and/or its affiliates.
US Government Users Restricted Rights - Use, duplication or disclosure restricted by GSA ADP Schedule Contract with IBM Corp.