在 Cryostat 上使用自动化规则


Red Hat build of Cryostat 3

Red Hat Customer Content Services

摘要

Red Hat build of Cryostat 是 OpenShift Container Platform 上的红帽产品。在 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 章 自动化规则概述

您可以使用自动化规则启用 JFR 持续监控正在运行的目标应用程序。您不需要重启或重新部署应用程序。

Cryostat 中存在持续监控事件模板,您可以使用它来创建自动化规则和模板。通过使用持续监控事件模板,您可以减少任何停机时间,以指定 JFR 以持续监控应用程序。

无论您将目标应用程序配置为使用 Java 管理扩展(JMX)连接或代理 HTTP API 连接,都可以定义自动规则。有关配置目标应用程序的更多信息,请参阅配置 Java 应用程序

请考虑以下指南:

  • 如果您的目标 JVM 使用代理 HTTP API 连接,请确保在目标应用程序配置中将 cryostat.agent.api.writes-enabled 属性设置为 true。否则,Cryostat 代理无法接受按需请求,根据自动化规则启动、停止和删除 JFR 记录。
  • 如果您的目标 JVM 使用 JMX 连接,在创建一个适用于每个需要 JMX 凭证的多个目标 JVM 的自动规则之前,请考虑在 Cryostat Web 控制台中为每个 JVM 存储凭证。存储凭证可确保您的自动规则启动,因为 Cryostat 维护与每个目标 JVM 的连接。如需更多信息,请参阅 存储和管理 JMX 凭证(使用 Cryostat 管理 JFR 记录)。

    当您的目标 JVM 使用 JMX 连接时,Cryostat 会将 JMX 凭证存储在 密钥环 数据库中。在此数据库中,JMX 凭据通过用户提供的密码短语进行加密,其中 Cryostat 提供 PG_ENCRYPT_KEY 环境变量。

    注意

    从 Cryostat 3.0 开始,密语将通过 Cryostat DB 容器中的 PG_ENCRYPT_KEY 环境变量提供。在以前的版本中,密语是通过 Cryostat 容器中的 CRYOSTAT_JMX_CREDENTIALS_DB_PASSWORD 环境变量提供的。

    安装 Cryostat 实例时,您可以使用 Cryostat 自定义资源(CR)中的 spec.databaseOptions.secretName 属性手动指定加密密钥。否则,如果您将 spec.databaseOptions.secretName 属性留空,则 Cryostat Operator 会自动生成一个密钥。

第 2 章 创建定义

在创建自动化规则定义时,您可以配置许多选项。Cryostat 使用自动化规则将规则应用到与 matchExpression 字符串表达式中定义的正则表达式匹配的任何 JVM 目标。您可以将 Red Hat OpenShift 标签或注解作为 matchExpression 定义的条件应用。

为自动化规则指定规则定义后,您不需要重新添加或重启匹配目标。如果您定义了匹配的目标,您可以立即激活规则定义。

如果要重复使用现有的自动化规则定义,您可以将 JSON 格式的定义上传到 Cryostat。

注意

从 Cryostat 3.0 开始,您必须在自动化规则中定义匹配 表达式时使用通用 表达式(CEL)语法。在以前的版本中,您可以使用 JavaScript 语法来定义匹配表达式。

2.1. 启用或禁用现有的自动化规则

您可以通过在 Cryostat web 控制台中使用切换开关来启用或禁用现有的自动规则。

先决条件

  • 登录到 Cryostat web 控制台。
  • 创建自动化规则。

流程

  1. 从 Cryostat Web 控制台,单击 Automated RulesAutomated Rules 窗口将打开,并在表中显示您的自动化规则。

    图 2.1. 完成自动化规则的匹配表达式输出示例

  2. Enabled 列中,查看列出的自动化规则的 Enabled 状态。根据状态,选择以下操作之一:

    • 要启用自动化规则,请点击切换开关切换到 On。Cryostat 会立即根据其匹配表达式评估您在自动化规则中定义的每个应用程序。如果匹配表达式适用于某个应用程序,则 Cryostat 将启动一个监控应用程序性能的 JFR 记录。
    • 要禁用自动化规则,请单击切换开关切换到 Off。此时会打开 Disable your Automated Rule 窗口。要禁用所选的自动化规则,请单击 Disable。如果您还希望停止由所选规则创建的任何活动记录,请选择 Clean,然后单击 Disable

2.2. 创建自动规则定义

在 Cryostat web 控制台中创建自动规则时,您可以指定 Cryostat 用来选择所有应用程序的匹配表达式。然后,Cryostat 使用规则定义的 JFR 事件模板启动新的记录。

如果您之前创建了自动规则,并且 Cryostat 会标识新的目标应用程序,Cryostat 会测试新应用程序实例是否与表达式匹配,并使用关联的事件模板启动新的记录。

先决条件

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

流程

  1. 在 Cryostat Web 控制台的导航菜单中,单击 Automated Rules。此时会打开 Automated Rules 窗口。
  2. Create。此时会打开 Create 窗口。

    图 2.2. Create 窗口(Graph View)用于自动化规则

  3. Name 字段中输入规则名称。
  4. Match Expression 字段中,指定匹配表达式详细信息。

    注意

    选择问号图标,以在 Match Expression Hint 片段中查看建议的语法。

    Match Expression Visualizer 面板中,Graph View 选项突出显示匹配的目标 JVM。不匹配的目标 JVM 会被问候。

  5. 可选:Match Expression Visualizer 面板中,您还可以单击 List View,它将匹配的目标 JVM 显示为可扩展行。

    图 2.3. Create 窗口(List View)用于自动化规则

  6. Template 列表中,选择一个事件模板。
  7. 要创建自动化规则,请点击 CreateAutomated Rules 窗口将打开,并在表中显示您的自动化规则。

    图 2.4. 完成自动化规则的匹配表达式输出示例

    如果匹配表达式适用于某个应用程序,则 Cryostat 将启动一个监控应用程序性能的 JFR 记录。

  8. 可选: 您可以通过从自动化规则的 overflow 菜单中点击 Download 来下载自动规则。然后,您可以在首选文本编辑器中配置规则定义,或者在本地文件系统上生成文件的额外副本。

2.3. Cryostat Match Expression Visualizer 面板

您可以使用 web 控制台中的 Match Expression Visualizer 面板来查看所选目标 JVM 应用程序的 JSON 结构中的信息。您可以选择在 Graph ViewList View 模式中显示信息。Graph View 突出显示匹配的目标 JVM。不匹配的目标 JVM 会被问候。List View 将匹配目标 JVM 显示为可扩展行。

要查看匹配目标 JVM 的详细信息,请选择突出显示的目标 JVM。在显示的窗口中,Details 选项卡中会显示特定于应用程序元数据的信息。您可以使用这些信息作为匹配表达式中的语法。匹配表达式是一个规则定义参数,您可以为自动化规则指定。

指定 match 表达式并创建了自动化规则后,Cryostat 会立即根据其匹配表达式评估您在自动规则中定义的每个应用程序。如果匹配表达式适用于某个应用程序,则 Cryostat 将启动一个监控应用程序性能的 JFR 记录。

2.4. 在 JSON 中上传自动化规则

您可以通过将现有自动规则上传到 Cryostat Web 控制台来重复使用现有的自动化规则,以便您可以快速启动监控正在运行的 Java 应用程序。

先决条件

  • 在项目中创建一个 Cryostat 实例。请参阅使用 操作器在 OpenShift 上安装 Cryostat (安装 Cryostat)。
  • 创建了 Java 应用程序。
  • 以 JSON 格式创建自动规则文件。
  • 登录到您的 Cryostat web 控制台。

流程

  1. 在 Cryostat Web 控制台的导航菜单中,单击 Automated Rules。此时会打开 Automated Rules 窗口。
  2. 点文件上传图标,该图标位于 Create 按钮。

    图 2.5. 自动规则上传按钮

    此时会打开 Upload Automated Rules 窗口。

  3. Upload 并在您的本地系统中找到您的自动规则文件。您可以将一个或多个文件上传到 Cryostat。或者,您可以将文件从文件管理器工具拖放到 web 控制台的 JSON File 字段中。

    重要

    Upload Automated Rules 功能仅接受 JSON 格式的文件。

    图 2.6. 一个窗口提示,您可以在其中上传包含自动规则配置的 JSON 文件

  4. 可选: 如果您需要从 Upload Automated Rules 功能中删除文件,请单击所选文件中的 X 图标。

    图 2.7. 上传的 JSON 文件示例

  5. Submit

2.5. 元数据标签

当您创建自动规则使 JFR 持续监控正在运行的目标应用程序时,自动规则会自动生成元数据标签。此元数据标签表示生成 JFR 记录的自动化规则的名称。归档记录后,您可以在 metadata 标签上运行查询,以查找生成记录的自动规则。

Cryostat 在存档记录生命周期中,为自动化规则保留元数据标签。

第 3 章 其他自动化规则功能

在 Cryostat web 控制台中,您可以访问额外的自动化规则功能,如删除自动规则或复制 JFR。

如果您创建了 Cryostat 2.4,然后从 Cryostat 2.4 升级到 Cryostat 3.0,则 Cryostat 3.0 会自动检测到这些自动化规则。

3.1. 复制 JFR 数据

您可以将 JVM 应用程序内存中的信息复制到 OpenShift Container Platform (OCP)上的 Cryostat 归档存储位置。

在通过 Cryostat Web 控制台创建自动规则的过程中,您可以在 Archival Period 字段中设置值。您可以以秒为单位、分钟或小时指定数字值。使用指定 archival 周期创建自动规则后,Cryostat 会重新连接任何与该规则匹配的目标 JVM 应用程序。然后 Cryostat 将任何生成的 JFR 记录数据从应用程序的内存复制到 Cryostat 归档存储位置。

另外,您可以使用值填充 Preserved 归档 字段。此字段对 JFR 记录的副本数量设定了一个限制,其中 Cryostat 可以从应用程序的内存移到 Cryostat 的归档存储位置。例如,如果您在 Preserved Archives 字段中设置了 10 值,则 Cryostat 不会将文件的 10 个副本存储在存档存储位置中。当 Cryostat 生成超过限制的新文件副本时,Cryostat 会将最旧的版本替换为最新版本的文件。

您还可以为 JFR 记录文件设置大小限制,并通过为 Maximum SizeMaximum Age 参数指定文件存储在目标 JVM 应用程序内存中的时间限制。

先决条件

  • 在 Red Hat OpenShift 项目中创建一个 Cryostat 实例。
  • 创建了 Java 应用程序。
  • 登录到您的 Cryostat web 控制台。

流程

  1. 在 Cryostat Web 控制台的导航菜单中,单击 Automated Rules。此时会打开 Automated Rules 窗口。
  2. CreateCreate 窗口将打开。
  3. 在任何必填字段中输入值,如 Match Expression 字段。
  4. Archival Period 字段中,以秒、分钟或小时为单位指定一个值。
  5. Preserved Archives 字段中,输入要保留的存档记录副本的数量。
  6. 要创建自动化规则,请点击 CreateAutomated Rules 窗口将打开,并在表中显示您的自动化规则。

3.2. 删除自动规则

在 OpenShift Container Platform (OCP)上运行的 Cryostat Web 控制台为删除规则定义提供了简化的方法。

您还可以使用 curl 工具删除自动规则。curl 工具使用 DELETE 端点与您的 Cryostat 实例通信。在请求中,您可以指定 clean=true 参数,这将停止由所选规则启动的所有活动的 Java Flight Recordings (JFRs)。

先决条件

  • 登录到 Cryostat web 控制台。
  • 创建自动化规则。

流程

  1. 在 Cryostat Web 控制台的导航菜单中,单击 Automated RulesAutomated Rules 窗口会打开,并显示表中的所有现有自动化规则。

    注意

    如果您还没有创建自动规则,则只有 Create 按钮会出现在 自动化规则 窗口中。

  2. 在表中,选择您要删除的自动化规则。
  3. 点更多选项图标 (swig),然后点 Delete

    图 3.1. 从 Automated Rules 表中删除选项

此时会打开 Permanently 删除您的 Automated Rule 窗口。

  1. 要删除所选自动化规则,请单击 Delete。如果您还希望停止由所选规则创建的任何活动记录,请选择 Clean,然后点 Delete

Cryostat 永久删除您的自动规则。

更新于 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 属性中存在问题的语言。欲了解更多详情,请参阅红帽博客.

關於紅帽

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

Theme

© 2025 Red Hat