使用 Cryostat 管理 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 配置安全设置,以便您可以更好地保护 Cryostat 实例。
应用程序可以将包含 JMX 验证标头的 API 请求发送到 Cryostat。然后 Cryostat 必须通过身份验证质询,以便 Cryostat 能够连接到应用程序。Red Hat build of Cryostat Operator 在内存中保存了凭证,以便在 Cryostat 和目标 JVM 应用程序之间建立连接期间。
Cryostat 可以加密并存储目标 JVM 应用程序的凭证,该数据库中存储在 Red Hat OpenShift 上的持久性卷声明(PVC)上。Cryostat 支持 HTTP 请求上的 SSL/TLS,它们向数据库以及使用这些凭证连接到目标应用程序的 JMX 连接中添加凭证。Cryostat 还使用用户提供的密码短语或者由 Red Hat build of Cryostat Operator 生成的密码短语加密数据库中的凭证。
1.1. 上传 SSL 证书
如果您从 Cryostat Web 控制台中的 Recordings 或 Events 选项卡收到 SSL 错误消息,则必须为目标 JVM 上传 SSL 证书。否则,您无法访问 Cryostat 工具,如创建 JFR 记录的工具。
前提条件
- 输入您的 Cryostat 实例的身份验证详情。
- 从 Dashboard 面板中创建目标 JVM。
- 下载用于目标 JVM 的 SSL 证书。
流程
导航到 Recordings 菜单或您的 Cryostat 实例上的 Events 菜单。
注意剩余的步骤使用 Recordings 菜单作为示例,但您可以按照 Events 菜单上的类似步骤操作。
在 Recordings 面板中,从下拉列表中选择您的目标 JVM。如果您的目标 JVM 没有包含可信 SSL 证书,您将会收到提示,如下例所示:
图 1.1. SSL 错误消息
点 Security 按钮。在 Cryostat web 控制台中打开一个窗口,其中显示 Security 对话框。
图 1.2. 安全对话框
单击上传按钮。在 Cryostat Web 控制台中打开 Upload SSL 证书 窗口。
图 1.3. 上传 SSL 证书窗口
点 Browse 按钮并在本地系统中找到 SSL 证书。
重要您的 SSL 证书必须以
二进制
或base64
格式编码。Cryostat 支持.der
和.cer
文件扩展。- 重启您的 Cryostat 实例。
- 导航到 Cryostat 实例上的 Recordings 菜单。
- 如果在 web 控制台中看到 Authentication Required 消息提示,请输入您的凭证。有些目标 JVM 要求您进行身份验证,然后才能访问数据以进行审计。
其他资源
1.2. 存储并管理凭证
如果您为目标 JVM 应用程序启用 Java 管理扩展(JMX)身份验证或 HTTP 身份验证,Cryostat 会在 Cryostat 访问任何应用程序的 JFR 记录前输入您的凭证。
当您点 Cryostat web 控制台中的 Recordings 或 Events 菜单项时,控制台上会打开一个 Authentication Required 窗口。您必须输入目标 JVM 应用的用户名和密码。然后,您可以查看记录或执行应用程序上的任何其他记录操作。
图 1.4. Cryostat 身份验证必需窗口示例
Cryostat 存储用于连接到 Cryostat 代理或目标 JVM 的凭证。
如果您需要重启目标 JVM 应用程序,请确保完成以下任务之一以避免丢失应用程序的 JFR 记录数据:
- 点 Cryostat web 控制台的 Recordings 菜单项,并归档您的 JFR 记录。
- 创建一个自动规则,调度 Cryostat 将快照记录复制到 Cryostat 归档的存储位置。
当您要通过创建自动规则来监控多个目标 JVM 时,您可以将 Cryostat 配置为存储,然后为每个目标 JVM 连接重复使用您的凭证。通过使用此配置,每当您想要在 Cryostat web 控制台中重新查看应用程序的 JFR 记录时,您不需要重新输入您的凭证。
前提条件
- 为目标 JVM 应用程序启用 JMX 或 HTTP 身份验证。
流程
- 点 Security 菜单项。
从 Store Credentials 窗口中,单击 Add 按钮。此时会打开 Store Credentials 窗口。
图 1.5. 存储凭证窗口示例
在 Match Expression 字段中,指定匹配表达式详情。
注意选择问号图标,在 Match Expression Hint 片段中查看推荐的语法。
点击 Save。Store Credentials 窗口中会显示一个表条目,其中显示了目标 JVM 的 Match Expression。
图 1.6. Store Credentials 窗格中的表条目示例
重要为了安全起见,表条目不会显示您的用户名或密码。
- 可选: 如果要删除目标 JVM 的存储凭证,您可以选中此目标 JVM 的表条目旁边的复选框,然后点 Delete。
第 2 章 归档 JFR 记录
您可以归档活动的 JFR 记录,以避免出现 JFR 记录的潜在数据丢失。您可以下载或上传存档的 JFR 记录,以便您可以分析记录以适应您的需要。
您可以从位于三个标题中的归档顺序中的归档 JFR 记录中找到存档的 JFR 记录:所有目标、All Archives 和 Uploads。根据您对 JFR 记录执行的操作,记录可能会显示在每个表中。
2.1. 存档 JDK Flight Recorder (JFR)记录
您可以归档活动的 JFR 记录,以避免出现 JFR 记录的潜在数据丢失。当 Cryostat 将传统的 JFR 记录数据替换为新数据以保存存储空间时,也可能发生数据丢失,或者当目标 JVM 突然停止或重启时时,可能会出现数据丢失。
当您创建存档的记录时,C Cryostat 会复制活跃的 JFR 记录数据,并将数据存储在 Cryostat 实例的持久性存储位置。Red Hat build of Cryostat Operator 会在 Red Hat OpenShift 集群上关联的持久性卷声明(PVC)上构建此持久性存储位置。
您可以归档任何 JFR 记录,无论其配置如何。另外,您还可以从 JFR 记录归档快照。
前提条件
- 输入您的 Cryostat 实例的身份验证详情。
- 创建目标 JVM 记录并输入您验证的详情来访问记录菜单。请参阅创建 JDK Flight Recorder (JFR)记录 (使用 Cryostat 创建 JFR 记录)。
流程
在 Active Recordings 选项卡中,选中您的 JFR 记录的复选框。归档 按钮在 Active Recordings 工具栏中激活。
图 2.1. 用于 JFR 记录的归档按钮
单击 归档 按钮。Cryostat 为您的 JFR 记录创建存档记录。
您可以从归档记录选项卡下查看存档记录以及与所选目标 JVM 相关的任何其他记录。
另外,您还可以从 All Targets 表中查看存档的记录。
图 2.2. 列在 All Targets 表中的目标 JVM 应用程序示例
提示要删除没有归档记录的目标 JVM 条目,请选择 具有零记录复选框的 Hide 目标。
在 JVM 目标条目旁边单击 twistie (v)后,您可以访问过滤器功能,您可以在其中编辑标签以增强过滤器或点击 Delete 按钮来删除过滤器。
- 从 All Targets 表中,选中您要查看的每个目标 JVM 应用程序旁边的复选框。该表列出了每个存档的记录及其源位置。
转至" 所有归档" 表。此表与 All Targets 表类似,但 All Archives 表从 Cryostat 中存档的文件中列出了目标 JVM 应用程序。
注意如果存档的文件没有可识别的 JVM 应用,它仍然会在 All Archives 表中列出,但在标题
丢失的
嵌套表中打开。可选: 要删除存档的记录,选择特定归档 JFR 记录项旁边的复选框,然后在提示时点 Delete。
图 2.3. 删除存档的 JFR 记录
注意Cryostat 根据目标 JVM 应用程序的地址、活动记录的名称以及所创建归档记录的时间戳为存档记录分配存档记录。
其他资源
2.2. 下载活跃记录或存档记录
您可以使用 Cryostat 下载活跃的记录或将归档记录下载到本地系统。
前提条件
- 输入您的 Cryostat 实例的身份验证详情。
- 制作了 JFR 记录。请参阅创建 JDK Flight Recorder (JFR)记录 (使用 Cryostat 创建 JFR 记录)。
- 可选: 上传 SSL 证书或将您的凭证提供给目标 JVM。
- 可选: 归档您的 JFR 记录。请参阅 Archiving JDK Flight Recorder (JFR)记录 (使用 Cryostat 来管理 JFR 记录)。
流程
导航到 Recordings 菜单或您的 Cryostat 实例的归档菜单。
注意剩余的步骤使用 Recordings 菜单作为示例,但您可以按照归档菜单中的类似步骤操作。
- 点 Active Recordings 选项卡或 归档 记录标签页来确定您想要的记录。
找到列出的 JFR 记录,然后选择其溢出菜单。
图 2.4. 查看 JFR 记录溢出菜单
选择以下选项之一:
- 在 overflow 菜单中点 Download Recording。根据您配置操作系统的方式,将打开一个文件保存对话框。将 JFR 二进制文件和 JSON 文件保存到您的首选位置。
- 在 All Targets 表中,选择您列出的 JFR 记录的溢出菜单。点 Download 将存档的文件及其 JSON 文件保存,该文件中包含 metadata 和标签信息,并放在本地系统中。
可选: 使用 Java Mission Control (JMC)桌面应用程序查看下载的文件。
注意如果您不想下载
.jfr
文件,而是想要从 Cryostat 应用程序上的记录查看数据,您可以在 Grafana 选项中点 View。
2.3. 上传 JFR 记录到 Cryostat 归档位置
您可以将本地系统的 JFR 记录上传到 Cryostat 的存档位置。
要保存 Cryostat 存储空间,您可能已缩减或删除 JFR 记录。如果您下载了 JFR 记录,可以在扩展或重新部署实例时将其上传到 Cryostat 实例。
另外,您可以将前面 Cryostat 实例的一个文件上传到一个新的 Cryostat 实例。Cryostat 分析工具适用于上传到新 Cryostat 实例的记录。
前提条件
- 输入您的 Cryostat 实例的身份验证详情。
- 制作了 JFR 记录。请参阅创建 JDK Flight Recorder (JFR)记录 (使用 Cryostat 创建 JFR 记录)。
- 请参阅 下载活动记录或存档记录 (使用 Cryostat 来管理 JFR 记录)。
流程
进入 Cryostat 实例上的归档菜单。
图 2.5. Cryostat web 控制台中的存档菜单
可选: 在 Uploads 表中,您可以查看所有上传的 JFR 记录。Uploads 表还包含与其他表类似的过滤机制,如 All Targets 表和其他输出。您还可以使用归档菜单上的过滤机制来查找可能没有可识别的目标 JVM 应用的存档文件。
图 2.6. 归档菜单中的 Uploads 表
点上传图标。在 Cryostat web 控制台中打开 Re-Upload Archived Recording 窗口:
图 2.7. Re-Upload Archived Recording 窗口
- 在 JFR File 字段中,单击 Upload。
找到 JFR 记录文件,这些文件是具有
.jfr
扩展名的文件,然后单击 Submit。注意或者,您可以将
.jfr
文件拖放到 JFR File 字段。
您的 JFR 记录文件在 Uploads 表中打开。
图 2.8. 位于 Uploads 表中的 JFR 记录示例
第 3 章 事件模板
Cryostat 包括默认事件模板,可用于快速创建 JFR 记录来监控目标 JVM 的性能。
3.1. 使用自定义事件模板
在创建 JDK Flight Recorder (JFR)记录时,您可以选择以下默认事件模板之一:
- 持续模板,它将在固定持续时间或明确停止之前收集基本目标 Java 虚拟机(JVM)数据。
- 分析模板,在固定持续时间或明确停止之前收集深入的目标 JVM 数据。
通过使用这些默认事件模板,您可以快速创建 JFR 记录来监控目标 JVM 的性能。您可以在稍后的阶段中编辑任一事件模板以满足您的需要。例如,默认事件模板不包含特定于应用程序的自定义事件,因此您必须将这些自定义事件添加到自定义模板中。
Cryostat 还支持 ALL
meta-template,它允许 JFR 监控目标 JVM 的所有事件类型。每种事件类型都存在默认值。ALL
meta-template 不包含 XML 定义,因此您无法下载 ALL
meta-template 的 XML 文件。
前提条件
- 使用 Installed Operators 选项在 Red Hat OpenShift 上安装 Cryostat 2.4。
- 在 Red Hat OpenShift 项目中创建一个 Cryostat 实例。
流程
- 在 Cryostat 实例的 Dashboard 面板中,从下拉列表中选择 Target JVM。
可选: 在 Topology 面板中,您可以通过选择 Add to view 图标来定义目标 JVM。选择图标后,会打开一个窗口来定义自定义目标连接 URL。
- 在 Connection URL 字段中输入 JVM 的 Java 管理扩展(JMX)端点的 URL。
- 可选: 在 Alias 字段中输入 JMX 服务 URL 的别名。
点 Create。
图 3.1. 创建目标对话框
在 Cryostat web 控制台的导航菜单中点 Events。Web 控制台中可能会打开一个身份验证所需的对话框。如有提示,在 Authentication Required 对话框中输入您的 Username 和 Password,然后点 Save 将您的凭证提供给目标 JVM。
注意如果所选的目标 JMX 具有启用了 JMX 连接的 SSL 认证,您必须在提示时添加其证书。
Cryostat 可以加密并存储目标 JVM 应用程序的凭证,该数据库中存储在 Red Hat OpenShift 上的持久性卷声明(PVC)上。
- 在 Event Templates 选项卡下,找到列出的事件模板,然后选择其更多选项菜单。
在更多选项菜单中点 Download。根据您配置操作系统的方式,将打开一个文件保存对话框。将文件保存到您的首选位置。
图 3.2. 事件模板更多选项菜单的示例
使用您的默认文件编辑器打开 文件,并编辑 文件以满足您的需要。您必须保存文件以保留配置更改。
注意您可以在
描述
和供应商属性中添加值,以帮助在稍后的阶段识别您的文件。在 Events 菜单中,前往 Event Templates 选项卡,然后单击 Upload 图标。在 Cryostat web 控制台中打开 Create Custom Event Template 窗口。
图 3.3. 创建自定义事件模板窗口
- 点 Upload,并使用您的默认文件编辑器将一个或多个配置的事件模板文件上传到 Cryostat web 控制台。您还可以将文件拖放到 Template XML 窗口中。
- 单击 Submit 按钮。Event Templates 标签页在您的 Cryostat web 控制台中打开,您现在可以查看自定义事件模板。
可选: 创建事件模板后,您可以选择以下选项之一来使用模板创建 JFR 记录:
- 从 Automated Rules 菜单,单击 Create,然后从 Template 列表中选择事件模板。
- 在 Events 菜单中,找到列出的事件模板,然后从更多选项菜单中选择 Create Recording。
- 在 Recordings 菜单的 Active Recordings 选项卡下,点 Create。
其他资源
- 请参阅创建 JDK Flight Recorder (JFR)记录 (使用 Cryostat 创建 JFR 记录)
- 请参阅 上传 SSL 证书 (使用 Cryostat 管理 JFR 记录)
- 请参阅 Archiving JDK Flight Recorder (JFR)记录 (使用 Cryostat 来管理 JFR 记录)
- 请参阅 启用或禁用自动规则(使用 Cryostat 自动规则)
第 4 章 集成的应用程序
Cryostat 与特定应用程序集成,可增强您如何分析 JFR 记录中的数据。
4.1. 在 Grafana 中查看 JFR 记录
Cryostat 2.4 与 Grafana 应用程序集成,以便您可以在 Grafana 中绘制 JFR 记录数据。您可以在时间间隔部分查看图表数据,以精确分析目标 JVM 应用的性能。
前提条件
- 输入您的 Cryostat 实例的身份验证详情。
- 制作了 JFR 记录。请参阅创建 JDK Flight Recorder (JFR)记录 (使用 Cryostat 创建 JFR 记录)。
流程
- 进入 Recordings 菜单或您的 Cryostat 实例的归档菜单。
- 根据您的需要,点击 Active Recordings 选项卡或 归档 记录选项卡。
找到您的 JFR 记录,然后选择 overflow 菜单。
图 4.1. 可用于 JFR 记录示例的溢出菜单项
- 在 overflow 菜单中点击 Grafana 选项中的 View。Grafana 应用程序将在新的 Web 浏览器窗口中打开。
- 点 Grafana 仪表板中的登录图标。
通过在终端中运行以下命令来确定您的凭据。
<cryostat_name>=$(kubectl get cryostat -o jsonpath='{$.items[0].metadata.name}') oc get secret $<cryostat_name>-grafana-basic -o jsonpath='{$.data.GF_SECURITY_ADMIN_USER}' | base64 -d oc get secret $<cryostat_name>-grafana-basic -o jsonpath='{$.data.GF_SECURITY_ADMIN_PASSWORD}' | base64 -d
您还可以在 Red Hat OpenShift 的 Cryostat 详情页面的 Grafana Secret 自定义资源(CR)中找到您的凭证。
图 4.2. OpenShift 的 Cryostat 详情页面上的 Grafana Secret CR
- 在 Grafana web 控制台登录页面中输入您的凭证。此时会打开仪表板窗口,并在各种时间序列图表中显示 JFR 记录的数据。
可选: 通过在图表中选择时间序列片段来与图表交互。Grafana 扩展屏幕数据,只显示该时间间隔的数据。
图 4.3. 带有绘制图形的 Grafana 仪表板示例
更新于 2024-01-02