搜索

第 3 章 JMC 代理插件

download PDF

您可以使用 JMC 代理插件将 JMC 代理实现添加到 Cryostat。然后,您可以使用 JMC 代理将自定义 JFR 事件添加到正在运行的目标 JVM 应用中。此操作不要求您重新启动 JVM 应用。

3.1. 使用 JMC 代理插件添加自定义事件

Cryostat 与 JMC Agent 相结合,您可以在需要诊断正在运行的 JVM 应用问题时为您提供更多信息。

JMC Agent JAR 文件必须与目标 JVM 应用程序位于同一个 Red Hat OpenShift 容器中。否则,Cryostat 无法在应用程序中使用 JMC Agent 功能。

从 Cryostat Web 控制台,您可以上传探测模板,然后将这些模板插入到 JVM 应用中。如果需要,您可以在稍后阶段删除这些模板探测。探测模板描述了 Cryostat 可以处理的一组对象,以便 Cryostat 可以完成 JVM 应用中的 JMC Agent 操作序列。

当使用 JMC Agent 启动目标 JVM 应用程序时,Cryostat 会自动检测应用程序是否使用 JMC Agent 运行。

重要

对于 RHEL,JMC 软件包由 CodeReady Linux Builder (CRB)提供,也称为 Builder,存储库。您必须在 RHEL 上启用 CRB 存储库,以便在 RHEL 上安装 JMC。CRB 软件包使用 Source Red Hat Package Manager (SRPM)作为产品化的 RHEL 软件包构建,因此 CRB 软件包会定期接收更新。请参阅 使用 Red Hat build of Cryostat 下载并安装 JDK Mission Control (JMC) (使用 JDK Flight Recorder with Red Hat build of Cryostat)

前提条件

  • 下载并安装 jmc 软件包。
  • 下载 Adoptium Agent JAR 文件。请参阅 adoptium/jmc-build (GitHub)。
  • 使用 --add-opens=java.base/jdk.internal.misc=ALL-UNNAMED 标志启动您的 Java 应用程序。例如,. /<your_application> --add-opens=java.base/jdk.internal.misc=ALL-UNNAMED
  • 为您的 Java 应用程序启动 JMC 代理。请参阅 启动 JDK Mission Control (JMC)代理 (使用带有红帽构建的 Cryostat 的 JDK Flight Recorder)。

流程

  1. 从 Cryostat Web 控制台,进入 Events 菜单。如果 JMC Agent 成功添加到 Cryostat 实例中,则在 Event Templates 窗格下打开一个 Probe Templates 窗格。

    图 3.1. Cryostat web 控制台中的探测模板标签页

    Cryostat web 控制台中的 *Probe Templates* 标签页
    注意

    在 web 控制台中可能会打开一个身份验证所需的 对话框。若有提示,在 Authentication Required 对话框中输入您的 UsernamePassword,然后单击 Save 将您的 JMX 凭证提供给目标 JVM。

  2. 使用您的首选文本编辑器创建 XML 配置文件。使用 JFR 事件信息填充该文件,如在应用上必须执行哪些事件 Cryostat。

    以下示例显示了包含 JFR 事件信息的自定义探测模板 XML 文件。将文件上传到 Cryostat 时,Cryostat 可以向应用程序添加名为 Cryostat Agent Plugin Demo Event 的自定义 JFR 事件。当调用 JMC Agent 的 retrieveEventProbes 方法时,Cryostat 会启动 JFR 事件。

    <jfragent>
        <!-- Global configuration options -->
        <config>
       	 <classprefix>__JFREvent</classprefix>
       	 <allowtostring>true</allowtostring>\
       	 <allowconverter>true</allowconverter>
        </config>
       	 <events>
       		 <event id="cryostat.demo.jfr.event9">
           		 <label>Cryostat Agent Plugin Demo Event</label>
           		 <description>Event for the agent plugin demo</description>
           		 <path>io/cryostat/demo/events</path>
           		 <stacktrace>true</stacktrace>
           		 <class>io.cryostat.core.agent.AgentJMXHelper</class>
           		 <method>
               		 <name>retrieveEventProbes</name>
       		 <descriptor>()Ljava/lang/String;</descriptor>
           		 </method>
            	<location>WRAP</location>
        	</event>
    	</events>
    </jfragent>
  3. 单击 Upload 按钮,将自定义事件模板添加到 Cryostat。Create Custom Probe Template 在 Cryostat web 控制台中打开。

    图 3.2. Cryostat Web 控制台中的 Create Custom Probe Template 窗口

    在 Cryostat web 控制台中创建 Custom Probe Template* 窗口
    提示

    如果要从此模板 XML 字段删除上传的文件,请单击 Clear 按钮。

  4. Browse 按钮找到您的 XML 文件。
  5. 上传文件后,单击 Submit。自定义探测模板文件会在 Probe Templates 表中打开。
  6. 点探测模板旁的 overflow 菜单。
  7. Insert Probes。探测器显示在探测 模板 选项卡下的表中,以及 Live Configuration 选项卡下的表。
  8. 可选: 使用 Live Configuration 选项卡,您可以在其中查看每个活跃探测的名称、 等信息。
  9. 可选:Live Configuration 选项卡中,您可以点击 Remove All Probes 删除表中列出的探测。

验证

  1. Events 菜单中点 Event Types 选项卡。
  2. 检查您的 XML 配置中的命名 JFR 事件是否在表中列出。对于此流程中使用的示例,表格中会显示 Cryostat Agent Plugin Demo Event

更新于 2024-01-02

Red Hat logoGithubRedditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

通过我们的产品和服务,以及可以信赖的内容,帮助红帽用户创新并实现他们的目标。

让开源更具包容性

红帽致力于替换我们的代码、文档和 Web 属性中存在问题的语言。欲了解更多详情,请参阅红帽博客.

關於紅帽

我们提供强化的解决方案,使企业能够更轻松地跨平台和环境(从核心数据中心到网络边缘)工作。

© 2024 Red Hat, Inc.