搜索

在 Cryostat 中使用自动化规则

download PDF
Red Hat build of Cryostat 2

Red Hat Customer Content Services

摘要

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

您可以使用自动规则使 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 记录)。

    Cryostat 也可以将 JMX 凭证存储在 密钥环 数据库中。在这个数据库中,JMX 凭证由用户提供的密码短语加密,Cryostat 提供 CRYOSTAT_JMX_CREDENTIALS_DB_PASSWORD 环境变量。

第 2 章 创建定义

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

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

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

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

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

前提条件

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

流程

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

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

    完成自动化规则的匹配表达式输出示例
  2. Enabled 列中,查看列出的自动规则的 Enabled 状态。根据状态,选择以下操作之一:

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

2.2. 创建自动规则定义

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

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

前提条件

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

流程

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

    图 2.2. 自动规则的 Create 窗口(Graph View)

    *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)

    *Create* 窗口(List View)用于自动规则
  6. Template 列表中,选择一个事件模板。
  7. 要创建您的自动规则,请点 CreateAutomated Rules 窗口会打开,并在表中显示您的自动规则。

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

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

    如果匹配表达式适用于一个应用程序,C 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。在出现的窗口中,详情选项卡 中会显示特定于应用程序元数据的信息。您可以使用任何此信息作为您的匹配表达式中的语法。match 表达式是一个规则定义参数,您可以为您的自动化规则指定。

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

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

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

前提条件

流程

  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 文件

    一个窗口提示,您可以在其中上传包含自动规则配置的 JSON 文件
  4. 可选: 如果您需要从 Upload Automated Rules 函数中删除文件,请单击所选文件的 X 图标。

    图 2.7. 上传 JSON 文件示例

    上传 JSON 文件示例
  5. Submit

2.5. 元数据标签

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

Cryostat 在归档记录生命周期内为自动规则保留元数据标签。

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

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

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

3.1. 自动规则迁移

Cryostat 2.4 会自动扫描 Automated Rules 表中显示的任何自动规则。如果您使用 Cryostat 2.3 创建了自动规则,然后升级到 Cryostat 2.4,Cryostat 2.4 会将这个规则应用到任何所选的适用的 JVM 应用程序。

Cryostat 如何针对旧自动规则测试 JVM 应用没有区别。如果 Cryostat 检测到规则定义和所选 JVM 应用程序之间的匹配,C Cryostat 会自动启动应用程序的 JFR 记录。Cryostat 2.4 仅根据您在自动规则中定义的内容构建 JFR 记录的设置。这意味着,您不需要重新配置自动规则,以便于将其迁移到 Cryostat 2.4。

3.2. 复制 JFR 数据

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

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

另外,您可以使用值填充 Preserved Archives 字段。此字段设置对 JFR 记录副本的限值,使 Cryostat 可从应用程序的内存移至 Cryostat 的存档存储位置。例如,如果您在 Preserved Archives 字段中设置了 10 的值,则 Cryostat 不会在存档存储位置存储超过 10 个副本。当 Cryostat 生成超过限制的文件新副本时,C 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.3. 删除自动规则

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

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

前提条件

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

流程

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

    注意

    如果您还没有创建自动规则,则 Automated Rules 窗口中仅显示 Create 按钮。

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

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

    *Automated Rules* 表中删除*选项

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

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

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

更新于 2024-01-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.