添加链接
link管理
链接快照平台
  • 输入网页链接,自动生成快照
  • 标签化管理网页链接

使用 Cryostat 创建 JFR 记录


Red Hat build of Cryostat 2

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 2.4 使用 web 控制台或 HTTP API 启动、停止、检索、存档、导入和导出容器化应用程序中 JVM 的 JFR 数据。 根据您的用例,您可以使用 Cryostat 提供的内置工具直接在 Red Hat OpenShift 集群上存储和分析记录,或者您可以将记录导出到外部监控应用程序,以对记录的数据进行更深入的分析。 红帽构建的 Cryostat 只是一个技术预览功能。技术预览功能不受红帽产品服务等级协议(SLA)支持,且功能可能并不完整。红帽不推荐在生产环境中使用它们。这些技术预览功能可以使用户提早试用新的功能,并有机会在开发阶段提供反馈意见。 有关红帽技术预览功能支持范围的更多信息,请参阅 技术预览功能支持范围

使开源包含更多

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

第 1 章 Cryostat 的 JFR 创建选项

使用 Cryostat,您可以创建一个在容器化应用程序中监控 JVM 性能的 JDK Flight Recorder (JFR)记录。此外,您还可为目标 JVM 应用生成活动 JFR 记录的快照,以捕获任何收集的数据(最多是特定时间点)。 Cryostat 支持以下所有不同的方法来创建 JFR 记录: 您可以使用 Cryostat web 控制台为使用 JMX 或代理 HTTP 连接的目标 JVM 手动创建 JFR 记录。 Cryostat 服务器可以通过 JMX 或代理 HTTP 连接发送按需请求,以便根据自动规则动态启动 JFR 记录。 Cryostat 代理可以根据给定事件模板在代理启动时自动启动 JFR 记录,作为代理 harvester 功能的一部分。 从 Red Hat build of Cryostat 2.4 开始,Cryostat 代理可以根据 MBean 自定义触发器和给定事件模板动态启动 JFR 记录。 本文档的其余部分论述了如何在 Cryostat web 控制台中手动创建 JFR 记录。 在 Cryostat 上使用自动规则 启用基于 MBean 自定义触发器的动态 JFR 记录

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

您可以创建一个 JFR 记录,以监控容器化应用程序中 JVM 的性能。创建 JFR 记录后,您可以启动 JFR,以捕获 JVM 的实时数据,如堆和非堆内存用量。 使用 OperatorHub 选项在 Red Hat OpenShift 上安装 Cryostat 2.4。 在 Red Hat OpenShift 项目中创建一个 Cryostat 实例。 登录到您的 Cryostat web 控制台。 您可以使用 Red Hat OpenShift Web 控制台检索 Cryostat 应用程序的 URL。 在 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* 示例
  • 可选: 仪表板 面板中,您可以创建一个目标 JVM。在 Target 列表中,单击 Create Target 。此时会打开 Create Custom Target 窗口。 在 Connection URL 字段中输入 JVM 的 Java 管理扩展(JMX)端点的 URL。 可选: 要测试您指定的 连接 URL 是否有效,请点击 点击来测试 示例节点镜像。如果 Connection URL 存在问题,则会显示一条错误消息,其中提供了问题的描述以及要排除故障的指导。 可选: Alias 字段中输入 JMX 服务 URL 的别名。 点 Create

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

    * 创建自定义目标* 窗口
  • 在 Cryostat web 控制台的导航菜单中点 Recordings 可选: 根据您配置目标 JVM,在 web 控制台中可能会打开身份验证所需的对话框。 Authentication Required 对话框中,输入您的 Username Password 。要为目标 JVM 提供您的凭据,请单击 Save

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

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

    如果所选的目标 JMX 启用了安全套接字层(SSL)认证,您必须在提示时添加其证书。 Cryostat 在 Red Hat OpenShift 上的持久性卷声明(PVC)上加密并存储目标 JVM 应用程序的凭证。请参阅 清理和管理凭证 (使用 Cryostat 管理 JFR 记录)。 在 Active Recordings 选项卡中,点 Create

    图 2.4. 创建活跃记录示例

    创建活跃记录示例
  • Custom Flight Recording 选项卡中: 在 Name 字段中输入您要创建的记录的名称。如果您以无效的格式输入名称,Web 控制台会显示错误消息。 如果您希望 Cryostat 自动重启现有的记录,请选择 Restart if record already exists 复选框。 如果您输入了一个已存在的名称,但没有选择 Restart (如果记录已存在), 则 Cryostat 会在点 Create 按钮时拒绝创建自定义记录。 在 Duration 字段中,选择是否要在指定持续时间后停止此记录,或者在不停止的情况下持续运行。如果您希望 Cryostat 在记录停止后自动归档新的 JFR 记录,请点击 Stop 的 Archive 。 在 Template 字段中,选择您要用于记录的模板。 以下示例显示了连续 JVM 监控,您可以通过从 Duration 字段的上方选择 持续 来启用。此设置表示记录将继续,直到您手动停止记录。该示例还显示从 Template 字段选择 Profiling 模板。这为 JFR 记录提供了额外的 JVM 信息,用于故障排除。

    图 2.5. 创建自定义航班记录示例

    创建自定义航班记录示例
  • 要访问更多选项,请点击以下可扩展超链接: 显示高级选项 ,您可以在其中选择自定义 JFR 记录的其他选项。 显示元数据选项 ,您可以在 JFR 记录中添加自定义标签和元数据。 要创建 JFR 记录,请点击 Create Active Recordings 选项卡会打开并列出您的 JFR 记录。 您的活跃 JFR 记录开始收集容器化应用内目标 JVM 位置的数据。如果您在 JFR 记录中指定了固定持续时间,目标 JVM 会在达到固定持续时间设置时停止记录。否则,您必须手动停止记录。 可选: Active Recording 选项卡中,您还可以停止记录。 选中 JFR 记录名称旁边的复选框。在 Active Recordings 选项卡中的工具栏上,Cryostat web 控制台会激活 Stop 按钮。 点 Stop 。JFR 采用 STOPPED 状态,因此它会停止监控目标 JVM。JFR 仍然显示在 Active Recording 选项卡下。

    图 2.6. 停止活跃记录示例

    停止活跃记录示例
    重要

    在以下情况下可能会丢失 JFR 记录数据: 目标 JVM 失败 目标 JVM 重启 目标 JVM Red Hat OpenShift 部署已缩减 归档您的 JFR 记录,以确保您不会丢失您的 JFR 记录数据。 请参阅 上传 SSL 证书 (使用 Cryostat 管理 JFR 记录)。 请参阅 Archiving JDK Flight Recorder (JFR)记录 (使用 Cryostat 来管理 JFR 记录)。

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

    您可以为目标 JVM 应用程序生成活动 JFR 记录的快照,以捕获任何收集的数据(最多为特定时间点)。快照类似于一个检查点标记,它有一个起始点,以及运行中 JFR 记录中给定时间片段的端点。 快照会存储在目标 JVM 应用的内存中。这与 Cryostat 在云存储磁盘上存储归档的归档不同,这是用于存储 JFR 记录数据的更永久解决方案。 如果要试验活跃 JFR 记录中不同配置更改,可以进行记录快照。 当您为 JFR 记录创建快照时,C Cryostat 会创建一个名为 snapshot - < snapshot_number > 的新目标 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 记录)。 在 Active Recordings 选项卡中,点 Create 按钮。在 web 控制台中打开一个新窗口。

    图 3.1. 创建活跃记录示例

    创建活跃记录示例
  • Snapshot Recording 选项卡。

    图 3.2. 创建快照记录示例

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

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

    已完成的快照记录示例
    注意

    您可以从活跃记录列表中通过 快照 前缀来识别快照。 要归档您的 JFR 快照记录,请参阅 存档 JDK Flight Recorder (JFR)记录

  • 第 4 章 JFR 记录的标签

    当您在 Cryostat 2.4 上创建 JDK Flight Recorder (JFR)记录时,您可以通过指定一系列键值对将元数据添加到记录中。 另外,您可以将自定义标签附加到目标 JVM 内的 JFR 记录中,以便您可以轻松识别和更好地管理您的 JFR 记录。 以下列表详细介绍了一些常见记录标签用例: 将元数据附加到您的 JFR 记录。 在包含相同标签的记录上执行批处理操作。 在记录中运行查询时,请使用标签。 您可以使用 Cryostat 创建 JFR 记录,以监控容器化应用程序中 JVM 的性能。此外,您还可为目标 JVM 应用生成活动 JFR 记录的快照,以捕获任何收集的数据(最多是特定时间点)。

    4.1. 为 JFR 记录添加标签

    当您在 Cryostat 2.4 上创建 JFR 记录时,您可以使用标签为记录添加包含键值对的元数据。 Cryostat 将默认记录标签应用到创建的 JFR 记录中。这些默认标签捕获了 Cryostat 用于创建 JFR 记录的事件模板的信息。 您可以在 JFR 记录中添加自定义标签,以便运行满足您需求的特定查询,例如识别特定 JFR 记录或使用同一应用标签在记录上执行批处理操作。 登录到您的 Cryostat web 控制台。 为您的 Cryostat 实例创建或选择目标 JVM。 在 Cryostat web 控制台中点 Recordings 。 在 Active Recordings 标签页中,点 Create 。 在 Custom Flight Recording 标签页中,展开 Show metadata 选项 。 在 Custom Flight Recording 标签页中,您必须完成使用星号标记的所有必填字段。 点 Add label

    图 4.1. 在 Custom Flight Recording 标签页中显示的 Add Label 按钮

    *Add Label* 按钮,它显示在 *Custom Flight Recording* 标签页中
  • 在提供的 Key Value 字段中输入值。例如,如果要对记录出现问题,可以在 Key 字段中输入原因,然后在 Value 字段中输入问题类型。 点击 Create 创建您的 JFR 记录。然后,您的记录会显示在 Active Recordings 标签页中,以及任何指定的记录标签和自定义标签。 您可以从存档菜单访问存档的 JFR 记录。 请参阅 上传 JFR 记录到 Cryostat 归档位置 (使用 Cryostat 管理 JFR 记录)。

  • Example

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

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

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

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

    在 Cryostat web 控制台中,您可以导航到 Recordings 菜单,然后编辑 JFR 记录的标签及其元数据。您还可以编辑上传到存档的 JFR 记录的标签和元数据。 登录到您的 Cryostat web 控制台。 创建 JFR 记录并将标签附加到此记录。 在 Cryostat web 控制台中点 Recording 菜单。 在 Active Recordings 选项卡中找到您的 JFR 记录,然后选中它旁边的复选框。 点击 Edit Labels 。在 Cryostat web 控制台中打开 Edit Recording Label 窗格,您可以使用它为您的 JFR 记录添加、编辑或删除标签。 您可以通过选中每个记录旁的复选框来选择多个 JFR 记录。如果要批量编辑包含相同标签的记录,或向多个记录添加新的相同标签,请点击 Edit Labels 按钮。 可选 :您可以从 Edit Recording Labels 窗格中执行以下操作: 点 Add 创建标签。 点标签旁边的 X 来删除标签。 通过修改字段中的所有内容来编辑标签。编辑内容后,字段中会显示绿色勾号表示编辑。 点击 Save 可选 : 您可以通过完成以下步骤,将 JFR 记录与标签一起归档: 选择记录名称旁边的复选框。 单击 归档 按钮。您可以在归档记录标签页中找到 您的 记录。 使用标签归档记录,您可以在稍后的阶段定位记录时增强您的搜索功能。您还可以在上传到 Cryostat 归档的任何记录中添加额外标签。 Cryostat 在归档记录生命周期内保留任何带有记录的标签。 在 Active Recordings 选项卡中,检查是否在您的记录的 Labels 部分中显示您的更改。 存档 JDK Flight Recorder (JFR)记录(Using Cryostat 用于管理 JFR 记录) 更新于 2024-01-02 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.