在启动应用程序后启动 Health Center 代理(仅限 Java 应用程序)

如果未在启动要监控的 Java™ 应用程序的同时启动该代理,那么可以在以后启动该代理,并将其连接到正在运行该应用程序的 JVM。要完成该任务,需要使用与该代理包含在一起的一个程序。 该程序基于 Java Attach API。

开始之前

您必须在运行该应用程序的运行时环境中安装了 Health Center 代理,请参阅安装 Health Center以了解更多信息。假设您尚未在 JVM 中启动代理,那么可以在已在运行的 JVM 中安装或更新该代理。

更新开始如果您的应用程序运行在 IBM Bluemix 中,那么该选项将不可用。更新结束

关于此任务

如果与 Java 应用程序同时启动了 Health Center 代理,那么该代理和该应用程序将运行于同一 JVM 中。 要将该代理连接到已在运行的 JVM,需要使用代理 Attach 程序,该程序将在其他 JVM 中运行。 正在运行要监控的应用程序的 JVM 称为目标 JVM
注:
  • Java Attach API 只能用于运行在本地机器上的目标 JVM。 因此,要完成该任务,您必须使用正在运行要监控的应用程序的机器。 在启动代理后,您可以使用通过网络连接的另一台机器上的 Health Center 客户机远程监控该应用程序。
  • Attach API 实现的安全限制和其他限制都适用。 请参阅适用于您的 JVM 和平台的相关文档。例如,阅读 IBM Knowledge Center 中的 IBM SDK Java Technology Edition 产品文档内有关 Java Attach API 的支持信息,或阅读以下支持文章:Security considerations for the Java Attach API function。请特别注意,在 z/OS® 操作系统上,使用缺省 z/OS OMVS 分段的进程由于安全性原因而无法启用 Attach API。

过程

  1. 确保针对 Java Attach API 启用了目标 JVM,并且您具有相应的权限。 请参阅您的平台和 JVM 文档以获取详细信息。
  2. 在目标 JVM 所在机器上的命令行中,输入以下命令:
    java -jar path/healthcenter.jar [ID(:|=)target_JVM_ID] [data_provider_properties] [configuration_properties]
    • path 是到 healthcenter.jar 归档文件的路径。 healthcenter.jar 文件通常位于将运行 Health Center 代理的 JRE 的 jre/lib/ext 目录中。要了解更多信息,请参阅安装 Health Center
    • 缺省情况下,JVM_ID 是正在运行的 JVM 的进程标识。 您可以在启动 JVM 时通过使用 com.ibm.tools.attach.id 系统属性来覆盖该缺省值。 请参阅针对该 JVM 的 Java Attach API 文档以了解更多详细信息。 如果您提供了 ID 自变量并且该命令成功,那么该代理将在指定的 JVM 中启动并且该任务将完成。 如果不使用 ID 自变量,那么程序将生成一个正在运行的 JVM 的列表;然后您可以从该列表中选择 JVM。
    • data_provider_properties 指定要禁用的数据提供程序。缺省情况下,将启用所有数据提供程序,并且 Health Center 会收集所有可用数据。 如果您不需要所有数据,那么可以通过仅收集您感兴趣的数据来减小存储的数据文件的大小。 您可以指定多个属性。每个属性的格式为 -Dproperty_name=(on|off)。 支持以下属性:
      • com.ibm.diagnostics.healthcenter.data.classes
      • com.ibm.diagnostics.healthcenter.data.cpu
      • com.ibm.diagnostics.healthcenter.data.gc
      • com.ibm.diagnostics.healthcenter.data.io
      • com.ibm.diagnostics.healthcenter.data.jit
      • com.ibm.diagnostics.healthcenter.data.memory
      • com.ibm.diagnostics.healthcenter.data.profiling
      • com.ibm.diagnostics.healthcenter.data.threads
      例如:-Dcom.ibm.diagnostics.healthcenter.data.threads=off 将禁用收集线程数据。
    • configuration_properties 指定您可能要使用的 Health Center 配置选项。要了解更多信息,请参阅配置 Health Center 代理。您可以通过使用参数和/或系统属性格式来指定属性。 您可以指定任意数目的属性。 例如:
      java -jar healthcenter.jar -Dcom.ibm.java.diagnostics.healthcenter.agent.port=1999
      java -jar healthcenter.jar ID:46375 port=1999
      java -jar healthcenter.jar level=headless,port=1999 -Dcom.ibm.java.diagnostics.healthcenter.headless.run.pause.duration=5 -Dcom.ibm.java.diagnostics.healthcenter.headless.run.number.of.runs=10 -Dcom.ibm.java.diagnostics.healthcenter.headless.run.duration=2
      注:
      • -D 选项用作 Attach 程序的一个参数,因此必须在 healthcenter.jar 参数之后指定。
      • 如果 Health Center 客户机和代理之间存在防火墙,并且 Health Center 的传输协议设置为 iiop(缺省值),请指定 IIOP 端口号属性。该属性用于设置运行 Health Center 代理的机器上对象请求代理程序 (ORB) 所使用的端口。该端口不同于主 Health Center 端口。然后,您必须在防火墙中打开这两个端口,这样 Health Center 代理才能与客户机通信。
  3. 如果该命令生成了一个 JVM 列表,请输入要在其中启动该代理的 JVM 的编号。 以下文本显示了所生成列表的示例:
    Running Virtual Machines:
    
    1:
    org.eclipse.hyades.execution.remote.NodeImpl 1423070418: ID=10696
    
    2:
    HCTest.jar: ID=11940
    
    3:
    C:\Program Files\Eclipse\v37\eclipse\\plugins/org.eclipse.equinox.launcher_1.2.0
    .v20110502.jar -os win32 -ws win32 -arch x86_64 -showsplash -launcher C:\Program
     Files\Eclipse\v37\eclipse\eclipse.exe -name Eclipse --launcher.library C:\Progr
    am Files\Eclipse\v37\eclipse\\plugins/org.eclipse.equinox.launcher.win32.win32.x
    86_64_1.1.100.v20110502\eclipse_1406.dll -startup C:\Program Files\Eclipse\v37\e
    clipse\\plugins/org.eclipse.equinox.launcher_1.2.0.v20110502.jar --launcher.over
    rideVmargs -exitdata 218c_98 -vm C:\Windows\system32\javaw.exe -vmargs -Xms40m -
    Xmx384m -jar C:\Program Files\Eclipse\v37\eclipse\\plugins/org.eclipse.equinox.l
    auncher_1.2.0.v20110502.jar: ID=12184
    
    4:
    healthcenter.jar: ID=292
    
    Please select the VM (enter number between 1 and 4) in which to enable the Health Center agent, or blank line to exit.
    注: 运行代理 Attach 程序的 JVM 也出现在正在运行的 JVM 列表中。 例如,上述样本输出中的 VM 4。 您可以将 Health Center 代理连接到该 JVM,但该代理会在成功连接后不久完成。

结果

如果代理成功启动并连接到 JVM,那么将显示一条完成消息。该消息显示目标 JVM 中的 Health Center 端口号和客户机收集级别系统属性。例如:
Successfully enabled Health Center agent in VM: HCTest.jar
Health Center properties used by agent in target VM:
com.ibm.java.diagnostics.healthcenter.agent.port=1972
com.ibm.java.diagnostics.healthcenter.data.collection.level=full

如果该代理未能连接到 JVM,请使用以下信息来诊断该问题:命令控制台中显示的错误消息;无法连接到应用程序主题;针对您的平台和 JVM 版本的 Java Attach API 文档(针对与 Attach API 相关的问题)。

下一步做什么

代理使用的端口号将作为 com.ibm.java.diagnostics.healthcenter.agent.port 系统属性的值显示在完成消息中。 您现在可以使用 Health Center 客户机或 API 通过该端口号连接到应用程序并对其进行监控,请参阅使用 Health Center 客户机连接到应用程序使用 Health Center API,以了解更多信息。如果指定了无外设方式,那么将不使用该端口号,代理会将收集到的数据保存到一个文件。 请参阅监控正在运行的应用程序配置 Health Center 代理,以了解更多信息。



© 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.