搜索

使用 Cryostat 创建 JFR 记录

download PDF
Red Hat build of Cryostat 3

Red Hat Customer Content Services

摘要

使用 Red Hat build of Cryostat 创建 JDK Flight Recorder (JFR)记录,该记录监控容器化应用程序中的 Java 虚拟机(JVM)性能。您还可以了解如何生成正在运行的 JFR 记录的快照,以便您可以查看特定时间线中的数据。

前言

Red Hat build of Cryostat 是 JDK Flight Recorder (JFR)的容器原生虚拟化,可用于安全监控在 OpenShift Container Platform 集群上运行的工作负载的 Java 虚拟机(JVM)性能。您可以使用 Cryostat 3.0 使用 Web 控制台或 HTTP API 启动、停止、检索、存档、导入和导出容器化应用中的 JVM 的 JFR 数据。

根据您的用例,您可以使用 Cryostat 提供的内置工具直接存储和分析 Red Hat OpenShift 集群上的记录,或者您可以将记录导出到外部监控应用程序,以对记录数据进行更深入分析。

重要

Red Hat build of Cryostat 只是一个技术预览功能。技术预览功能不受红帽产品服务等级协议(SLA)支持,且功能可能并不完整。红帽不推荐在生产环境中使用它们。这些技术预览功能可以使用户提早试用新的功能,并有机会在开发阶段提供反馈意见。

有关红帽技术预览功能支持范围的更多信息,请参阅技术预览功能支持范围

使开源包含更多

红帽致力于替换我们的代码、文档和 Web 属性中有问题的语言。我们从这四个术语开始:master、slave、黑名单和白名单。由于此项工作十分艰巨,这些更改将在即将推出的几个发行版本中逐步实施。详情请查看 CTO Chris Wright 的信息

第 1 章 Cryostat 的 JFR 创建选项

使用 Cryostat,您可以创建一个 JDK Flight Recorder (JFR)记录,该记录监控容器化应用程序中的 JVM 性能。另外,您可以为目标 JVM 应用程序生成活跃的 JFR 记录的快照,以捕获任何收集的数据(最多指向特定时间)。

Cryostat 支持以下不同方法创建 JFR 记录:

  • 您可以使用 Cryostat Web 控制台为使用 JMX 或代理 HTTP 连接的目标 JVM 手动创建 JFR 记录。
  • Cryostat 服务器可以通过 JMX 或代理 HTTP 连接发送按需请求,以根据自动化规则动态启动 JFR 记录。
  • Cryostat 代理可以根据给定事件模板在代理启动时自动启动 JFR 记录,作为代理利用ster 功能的一部分。
  • 从 Red Hat build of Cryostat 3.0 开始,Cryostat 代理可以根据 MBean 自定义触发器和给定的事件模板动态启动 JFR 记录。

本文档的其余部分论述了如何在 Cryostat web 控制台中手动创建 JFR 记录。

第 2 章 在 Cryostat web 控制台中创建 JFR 记录

您可以创建一个 JFR 记录,以监控容器化应用程序中的 JVM 性能。创建 JFR 记录后,您可以启动 JFR 来捕获 JVM 的实时数据,如堆和非堆内存使用量。

先决条件

  • 使用 OperatorHub 选项,在 Red Hat OpenShift 上安装 Cryostat 3.0。
  • 在 Red Hat OpenShift 项目中创建一个 Cryostat 实例。
  • 登录到您的 Cryostat web 控制台。

    • 您可以使用 Red Hat OpenShift Web 控制台检索 Cryostat 应用程序的 URL。

流程

  1. 在 Cryostat web 控制台的 Dashboard 面板中,从 Target 列表中选择目标 JVM。

    注意

    根据您配置目标应用程序的方式,您的目标 JVM 可能会使用 JMX 连接或代理 HTTP 连接。有关配置目标应用程序的更多信息,请参阅配置 Java 应用程序

    重要

    如果您的目标 JVM 使用代理 HTTP 连接,请确保将目标应用程序配置为加载 Cryostat 代理时将 cryostat.agent.api.writes-enabled 属性设置为 true。否则,Cryostat 代理无法接受启动和停止 JFR 记录的请求。

    图 2.1. 为 Cryostat 实例选择 Target JVM 的示例

    为您的 Cryostat 实例选择 *Target JVM* 示例
  2. 可选:Dashboard 面板中,您可以创建一个目标 JVM。从 Target 列表中,单击 Create Target。此时会打开 Create Custom Target 窗口。

    1. Connection URL 字段中,输入 JVM 的 Java 管理扩展(JMX)端点的 URL。
    2. 可选: 要测试您指定的 连接 URL 是否有效,请点击 Click to test sample node image。如果 Connection URL 存在问题,则会显示一条错误消息,其中提供了问题的描述以及要排除故障的指导。
    3. 可选:Alias 字段中,为您的 JMX Service URL 输入别名。
    4. Create

      图 2.2. 创建自定义目标窗口

      *创建自定义 Target* 窗口
  3. 在 Cryostat web 控制台的导航菜单中点 Recordings
  4. 可选: 根据您如何配置目标 JVM,在 web 控制台中可能会打开 Authentication Required 对话框。在 Authentication Required 对话框中,输入您的 UsernamePassword。若要向目标 JVM 提供您的凭据,请单击 Save

    图 2.3. Cryostat 身份验证所需的窗口示例

    Cryostat 身份验证所需的窗口示例
    注意

    如果所选目标 JMX 为 JMX 连接启用了安全套接字层(SSL)认证,则必须在提示时添加其证书。

    Cryostat 在 Red Hat OpenShift 上的持久性卷声明(PVC)上加密并存储目标 JVM 应用程序的凭证。请参阅 Storing 和管理凭证 (使用 Cryostat 管理 JFR 记录)。

  5. Active Recordings 选项卡中,点 Create

    图 2.4. 创建活跃记录的示例

    创建活跃记录的示例
  6. Custom Flight Recording 选项卡中:

    1. Name 字段中输入您要创建的记录的名称。如果您以无效格式输入名称,Web 控制台会显示错误消息。
    2. 如果您希望 Cryostat 自动重启现有记录,如果记录已存在,请选择 Restart

      注意

      如果您输入已存在名称,但没有选择 Restart (如果记录已存在), Cryostat 会在点 Create 按钮时拒绝创建自定义记录。

    3. Duration 字段中,选择是否希望此记录在指定的持续时间后停止,或者在没有停止的情况下持续运行。如果您希望 Cryostat 在记录停止后自动归档您的新 JFR 记录,请点击 Archive on Stop
    4. Template 字段中,选择要用于记录的模板。

    以下示例显示了持续 JVM 监控,您可以通过从 Duration 字段上方选择 continuous 来启用这些监控。此设置意味着记录将继续,直到您手动停止记录。示例还显示 Template 字段中的 Profiling 模板选择。这为 JFR 记录提供了额外的 JVM 信息,以进行故障排除。

    图 2.5. 创建自定义动态记录示例

    创建自定义动态记录示例
  7. 要访问更多选项,请点以下可扩展超链接:

    • 显示高级选项,您可以在其中选择额外选项来自定义 JFR 记录。
    • 显示元数据选项,您可以在其中在 JFR 记录中添加自定义标签和元数据。
  8. 要创建您的 JFR 记录,请点击 CreateActive Recordings 选项卡会打开并列出您的 JFR 记录。

    您的活跃 JFR 记录开始收集容器化应用内目标 JVM 位置的数据。如果您为 JFR 记录指定了固定持续时间,则目标 JVM 会在达到固定持续时间设置时停止记录。否则,您必须手动停止记录。

  9. 可选:Active Recording 选项卡中,您还可以停止记录。

    1. 选中 JFR 记录名称旁边的复选框。在 Active Recordings 选项卡中的工具栏中,Cryostat web 控制台会激活 Stop 按钮。
    2. Stop。JFR 采用 STOPPED 状态,因此它停止监控目标 JVM。JFR 仍然显示在 Active Recording 选项卡下。

      图 2.6. 停止活跃记录的示例

      停止活跃记录的示例
      重要

      在以下情况下可能会丢失 JFR 记录数据:

      • 目标 JVM 失败
      • 目标 JVM 重启
      • 目标 JVM Red Hat OpenShift Deployment 已缩减

      归档您的 JFR 记录,以确保您不会丢失 JFR 记录的数据。

其他资源

第 3 章 从活跃记录创建快照

您可以对一个活跃的 JFR 记录进行快照,以便为您的目标 JVM 应用捕获任何收集的数据(最多特定的时间点)。快照类似于检查点标记,它在正在运行的 JFR 记录中具有给定时间段的起点和端点。

快照存储在目标 JVM 应用的内存中。这与一个存档不同,其中 Cryostat 将存档存储在云存储磁盘上,这是用于存储 JFR 记录数据的更持久解决方案。

如果要在活跃的 JFR 记录中试验不同的配置更改,您可以对记录进行快照。

当您为您的 JFR 记录创建快照时,Cryostat 会创建一个名为 snapshot - <snapshot_number&gt; 的新目标 JVM,其中 <snapshot_number > 是 Cryostat 自动分配给您的快照的数字。

目标 JVM 将快照识别为活跃的记录。Cryostat 在 STOPPED 状态中设置任何 JFR 快照,这意味着 JFR 快照不会将新数据记录到目标 JVM。根据 JFR 配置,无论拍摄快照数量如何,活跃的 JFR 记录都可以继续监控目标 JVM。

注意

对于您为目标 JVM 应用程序持续监控而设置的 JFR 记录,请确保创建归档的记录以避免丢失 JFR 记录数据。

如果您选择进行常规快照来存储 JFR 记录数据,则目标 JVM 应用程序可能会释放一些数据存储空间,方法是将旧的记录数据替换为较新的记录数据。

先决条件

  • 为 Cryostat 实例输入您的身份验证详情。
  • 创建目标 JVM 记录,并输入您验证的详细信息以访问 记录 菜单。请参阅 创建 JDK Flight Recorder (JFR)记录 (使用 Cryostat 创建 JFR 记录)。

流程

  1. Active Recordings 选项卡中,点 Create 按钮。在 web 控制台中打开一个新窗口。

    图 3.1. 创建活跃记录的示例

    创建活跃记录的示例
  2. Snapshot Recording 选项卡。

    图 3.2. 创建快照记录示例

    创建快照记录示例
  3. CreateActive Recordings 表会打开,并列出您的 JFR 快照记录。以下示例显示了名为 snapshot-3 的 JFR 快照记录。

    图 3.3. 完成的快照记录示例

    完成的快照记录示例
    注意

    您可以通过 快照 前缀从活跃记录列表中识别快照。

后续步骤

第 4 章 JFR 记录的标签

当您在 Cryostat 3.0 上创建 JDK Flight Recorder (JFR)记录时,您可以通过指定一系列键值对在记录中添加元数据。

另外,您可以将自定义标签附加到目标 JVM 内部的 JFR 记录,以便您可以轻松识别和更好地管理 JFR 记录。

以下列表详细介绍了一些常见记录标签用例:

  • 将元数据附加到您的 JFR 记录。
  • 在包含相同标签的记录上执行批处理操作。
  • 在记录上运行查询时使用标签。

您可以使用 Cryostat 创建监控容器化应用程序中 JVM 性能的 JFR 记录。另外,您可以为目标 JVM 应用程序生成活跃的 JFR 记录的快照,以捕获任何收集的数据(最多指向特定时间)。

4.1. 在 JFR 记录中添加标签

在 Cryostat 3.0 上创建 JFR 记录时,您可以使用标签将包含键值对的元数据添加到记录中。

Cryostat 将默认记录标签应用到创建的 JFR 记录。这些默认标签捕获 Cryostat 用于创建 JFR 记录的事件模板的信息。

您可以在 JFR 记录中添加自定义标签,以便您可以运行满足您的需要的特定查询,如识别特定的 JFR 记录或在具有相同应用标签的记录上执行批处理操作。

先决条件

  • 登录到您的 Cryostat web 控制台。
  • 为您的 Cryostat 实例创建或选择目标 JVM。

流程

  1. 在 Cryostat web 控制台中点 Recordings
  2. Active Recordings 选项卡下,点 Create
  3. Custom Flight Recording 选项卡中,展开 Show metadata options

    注意

    Custom Flight Recording 选项卡中,您必须完成所有标记为星号的强制字段。

  4. Add label

    图 4.1. Custom Flight Recording 选项卡下显示的 Add Label 按钮

    在 *Custom Flight Recording* 标签页中显示的 *Add Label* 按钮
  5. 在提供的 KeyValue 字段中输入值。例如,如果要在 Key 字段中输入问题,可以在 Key 字段中输入问题,然后在 Value 字段中输入问题类型。
  6. Create 创建您的 JFR 记录。然后,您的记录会在 Active Recordings 选项卡中显示,以及任何指定的记录标签和自定义标签。

    提示

    您可以从 Archives 菜单访问归档的 JFR 记录。请参阅 将 JFR 记录上传到 Cryostat 归档位置 (使用 Cryostat 管理 JFR 记录)。

Example

以下示例显示了两个默认记录标签 template.name: Profiling and template.type: TARGET,以及一个自定义标签 reason:service-outage

图 4.2. 带有定义的记录标签和自定义标签的活跃记录示例

带有定义的记录标签和自定义标签的活跃记录示例

4.2. 为您的 JFR 记录编辑标签

在 Cryostat web 控制台中,您可以进入 Recordings 菜单,然后编辑 JFR 记录的标签及其元数据。您还可以编辑上传到存档的 JFR 记录的标签和元数据。

先决条件

  • 登录到您的 Cryostat web 控制台。
  • 创建 JFR 记录并将标签附加到此记录。

流程

  1. 在 Cryostat web 控制台中,点 Recording 菜单。
  2. Active Recordings 选项卡中,找到您的 JFR 记录,然后选中它旁边的复选框。
  3. 点击 Edit Labels。在 Cryostat web 控制台中打开 Edit Recording Label 窗格,可用于为 JFR 记录添加、编辑或删除标签。

    提示

    您可以选择每个记录旁边的复选框来选择多个 JFR 记录。如果要批量编辑包含相同标签的记录,或向多个记录添加新的相同的标签,点 Edit Labels 按钮。

  4. 可选 : 您可以从 Edit Recording Labels 窗格中执行以下操作:

    1. 单击 Add 以创建标签。
    2. 点标签旁边的 X 来删除标签。
    3. 通过修改字段中的任何内容来编辑标签。编辑内容后,字段中会显示一个绿色勾号来指示编辑。
  5. 点击 Save
  6. 可选 :您可以通过完成以下步骤来归档您的 JFR 记录及其标签:

    1. 选中记录名称旁边的复选框。
    2. 归档 按钮。您可以在 Archived Recordings 选项卡下找到您的记录。

      使用标签归档记录,当您想要在以后的阶段找到记录时,您可以增强您的搜索功能。您还可以将额外标签添加到上传到 Cryostat 归档的任何记录中。

      注意

      Cryostat 使用记录保留任何标签,以便进行存档记录的生命周期。

验证

  • Active Recordings 选项卡中,检查您的更改是否显示在 Labels 部分以了解您的记录。

更新于 2024-07-02

法律通告

Copyright © 2024 Red Hat, Inc.
The text of and illustrations in this document are licensed by Red Hat under a Creative Commons Attribution–Share Alike 3.0 Unported license ("CC-BY-SA"). An explanation of CC-BY-SA is available at http://creativecommons.org/licenses/by-sa/3.0/. In accordance with CC-BY-SA, if you distribute this document or an adaptation of it, you must provide the URL for the original version.
Red Hat, as the licensor of this document, waives the right to enforce, and agrees not to assert, Section 4d of CC-BY-SA to the fullest extent permitted by applicable law.
Red Hat, Red Hat Enterprise Linux, the Shadowman logo, the Red Hat logo, JBoss, OpenShift, Fedora, the Infinity logo, and RHCE are trademarks of Red Hat, Inc., registered in the United States and other countries.
Linux® is the registered trademark of Linus Torvalds in the United States and other countries.
Java® is a registered trademark of Oracle and/or its affiliates.
XFS® is a trademark of Silicon Graphics International Corp. or its subsidiaries in the United States and/or other countries.
MySQL® is a registered trademark of MySQL AB in the United States, the European Union and other countries.
Node.js® is an official trademark of Joyent. Red Hat is not formally related to or endorsed by the official Joyent Node.js open source or commercial project.
The OpenStack® Word Mark and OpenStack logo are either registered trademarks/service marks or trademarks/service marks of the OpenStack Foundation, in the United States and other countries and are used with the OpenStack Foundation's permission. We are not affiliated with, endorsed or sponsored by the OpenStack Foundation, or the OpenStack community.
All other trademarks are the property of their respective owners.
Red Hat logoGithubRedditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

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

让开源更具包容性

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

關於紅帽

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

© 2024 Red Hat, Inc.