使用 Cryostat 创建 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。
流程
在 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 的示例
可选: 在 Dashboard 面板中,您可以创建一个目标 JVM。从 Target 列表中,单击 Create Target。此时会打开 Create Custom Target 窗口。
- 在 Connection URL 字段中,输入 JVM 的 Java 管理扩展(JMX)端点的 URL。
- 可选: 要测试您指定的 连接 URL 是否有效,请点击 Click to test sample node image。如果 Connection URL 存在问题,则会显示一条错误消息,其中提供了问题的描述以及要排除故障的指导。
- 可选: 在 Alias 字段中,为您的 JMX Service URL 输入别名。
点 Create。
图 2.2. 创建自定义目标窗口
- 在 Cryostat web 控制台的导航菜单中点 Recordings。
可选: 根据您如何配置目标 JVM,在 web 控制台中可能会打开 Authentication Required 对话框。在 Authentication Required 对话框中,输入您的 Username 和 Password。若要向目标 JVM 提供您的凭据,请单击 Save。
图 2.3. Cryostat 身份验证所需的窗口示例
注意如果所选目标 JMX 为 JMX 连接启用了安全套接字层(SSL)认证,则必须在提示时添加其证书。
Cryostat 在 Red Hat OpenShift 上的持久性卷声明(PVC)上加密并存储目标 JVM 应用程序的凭证。请参阅 Storing 和管理凭证 (使用 Cryostat 管理 JFR 记录)。
在 Active Recordings 选项卡中,点 Create。
图 2.4. 创建活跃记录的示例
在 Custom Flight Recording 选项卡中:
- 在 Name 字段中输入您要创建的记录的名称。如果您以无效格式输入名称,Web 控制台会显示错误消息。
如果您希望 Cryostat 自动重启现有记录,如果记录已存在,请选择 Restart。
注意如果您输入已存在名称,但没有选择 Restart (如果记录已存在), Cryostat 会在点 Create 按钮时拒绝创建自定义记录。
- 在 Duration 字段中,选择是否希望此记录在指定的持续时间后停止,或者在没有停止的情况下持续运行。如果您希望 Cryostat 在记录停止后自动归档您的新 JFR 记录,请点击 Archive on Stop。
- 在 Template 字段中,选择要用于记录的模板。
以下示例显示了持续 JVM 监控,您可以通过从 Duration 字段上方选择 continuous 来启用这些监控。此设置意味着记录将继续,直到您手动停止记录。示例还显示 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 Deployment 已缩减
归档您的 JFR 记录,以确保您不会丢失 JFR 记录的数据。
其他资源
- 请参阅 上传 SSL 证书 (使用 Cryostat 管理 JFR 记录)。
- 请参阅 Archiving JDK Flight Recorder (JFR)记录 (使用 Cryostat 管理 JFR 记录)。
第 3 章 从活跃记录创建快照
您可以对一个活跃的 JFR 记录进行快照,以便为您的目标 JVM 应用捕获任何收集的数据(最多特定的时间点)。快照类似于检查点标记,它在正在运行的 JFR 记录中具有给定时间段的起点和端点。
快照存储在目标 JVM 应用的内存中。这与一个存档不同,其中 Cryostat 将存档存储在云存储磁盘上,这是用于存储 JFR 记录数据的更持久解决方案。
如果要在活跃的 JFR 记录中试验不同的配置更改,您可以对记录进行快照。
当您为您的 JFR 记录创建快照时,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 快照记录,请参阅 Archiving JDK Flight Recorder (JFR)记录。
第 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。
流程
- 在 Cryostat web 控制台中点 Recordings。
- 在 Active Recordings 选项卡下,点 Create。
在 Custom Flight Recording 选项卡中,展开 Show metadata options。
注意在 Custom Flight Recording 选项卡中,您必须完成所有标记为星号的强制字段。
点 Add label。
图 4.1. Custom Flight Recording 选项卡下显示的 Add Label 按钮
- 在提供的 Key 和 Value 字段中输入值。例如,如果要在 Key 字段中输入问题,可以在 Key 字段中输入问题,然后在 Value 字段中输入问题类型。
点 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 记录并将标签附加到此记录。
流程
- 在 Cryostat web 控制台中,点 Recording 菜单。
- 在 Active Recordings 选项卡中,找到您的 JFR 记录,然后选中它旁边的复选框。
点击 Edit Labels。在 Cryostat web 控制台中打开 Edit Recording Label 窗格,可用于为 JFR 记录添加、编辑或删除标签。
提示您可以选择每个记录旁边的复选框来选择多个 JFR 记录。如果要批量编辑包含相同标签的记录,或向多个记录添加新的相同的标签,点 Edit Labels 按钮。
可选 : 您可以从 Edit Recording Labels 窗格中执行以下操作:
- 单击 Add 以创建标签。
-
点标签旁边的
X
来删除标签。 - 通过修改字段中的任何内容来编辑标签。编辑内容后,字段中会显示一个绿色勾号来指示编辑。
- 点击 Save。
可选 :您可以通过完成以下步骤来归档您的 JFR 记录及其标签:
- 选中记录名称旁边的复选框。
点 归档 按钮。您可以在 Archived Recordings 选项卡下找到您的记录。
使用标签归档记录,当您想要在以后的阶段找到记录时,您可以增强您的搜索功能。您还可以将额外标签添加到上传到 Cryostat 归档的任何记录中。
注意Cryostat 使用记录保留任何标签,以便进行存档记录的生命周期。
验证
- 在 Active Recordings 选项卡中,检查您的更改是否显示在 Labels 部分以了解您的记录。
更新于 2024-07-02