搜索

Red Hat build of Cryostat 2.4 发行注记

download PDF
Red Hat build of Cryostat 2

Red Hat Customer Content Services

摘要

Red Hat build of Cryostat 2.4 文档的发行注记 提供了 Cryostat 2.4 中的新功能概述,以及潜在的已知问题列表和可能的临时解决方案。

前言

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 集群上存储和分析记录,或者您可以将记录导出到外部监控应用程序,以对记录的数据进行更深入的分析。

重要

Red Hat build of Cryostat 只是一个技术预览功能。技术预览功能不受红帽产品服务等级协议(SLA)支持,且功能可能并不完整。红帽不推荐在生产环境中使用它们。这些技术预览功能可以使用户提早试用新的功能,并有机会在开发阶段提供反馈意见。

有关红帽技术预览功能支持范围的更多信息,请参阅技术预览功能支持范围

使开源包含更多

红帽致力于替换我们的代码、文档和 Web 属性中有问题的语言。我们从这四个术语开始:master、slave、黑名单和白名单。由于此项工作十分艰巨,这些更改将在即将推出的几个发行版本中逐步实施。有关更多详情,请参阅我们的首席技术官 Chris Wright 提供的消息

第 1 章 Cryostat 的支持策略

红帽对 Cryostat 的主版本提供至少 6 个月。红帽以红帽客户门户上发布产品的时间为基础。

您可以在 Red Hat OpenShift Container Platform 4.11 或 x86_64 或 ARM64 架构上运行的更新的版本上安装并部署 Cryostat。

其他资源

  • 有关 Cryostat 生命周期政策的更多信息,请参阅 Red Hat OpenShift Container Platform 生命周期政策网页上的 Red Hat build of Cryostat

第 2 章 新功能

Cryostat 2.4 引入了新的功能,它增强了对 Cryostat 产品的使用。

ARM64 架构支持

Cryostat 2.4 引进了对在 Red Hat OpenShift Container Platform 4.11 或 ARM64 (aarch64)架构上运行的版本中使用 Cryostat 的支持。

基于 MBean 自定义触发器的动态 JFR 记录

在 Cryostat 2.4 中,您可以启用 Cryostat 代理来根据 MBean 自定义触发器动态启动 JFR 记录。

自定义触发器条件基于 MBean 计数器,可覆盖一系列运行时、内存、线程和操作系统指标。您可以包含一个或多个 MBean 计数器类型,作为 JFR 记录的自定义触发器条件的一部分。您还可以指定一个持续时间或时间段作为触发器条件的一部分,这意味着满足条件前必须在指定持续时间内保留条件值。每个自定义触发器定义还必须包含 Cryostat 代理可用于记录的事件模板。

Cryostat 代理支持智能触发器,持续侦听指定 MBean 计数器的值。如果指定计数器的当前值与指定持续时间的自定义触发器中配置的值匹配,则会触发。如果发生触发,Cryostat 代理会在那个点上根据给定的事件模板动态启动 JFR 记录。

注意

如果没有满足与此记录关联的自定义触发器条件,则不会动态启动 JFR 记录。

对 JFR 写入操作的代理 HTTP API 支持

Cryostat 2.4 代理提供了一个 HTTP API,Cryostat 服务器可以使用它作为应用程序的 JMX 端口的替代选择。通过将正确配置的 Cryostat 2.4 代理附加到您部署的工作负载应用程序,您可以使用完整的 Cryostat 功能集,而无需目标应用程序公开 JMX 端口。

此功能增强可让 Cryostat 代理接受按需请求,以便为具有代理 HTTP 连接的任何目标 JVM 启动、停止和删除 JFR 记录。这会取代之前发行版本中的行为,其中 Cryostat 代理提供了只读 HTTP API,该 API 仅支持有限的 JFR 操作集合。

注意

默认情况下,Cryostat 代理不会启用根据服务器的按需请求来启动和停止 JFR 记录。如果您希望 Cryostat 代理为这些类型的请求提供服务,您必须在目标应用程序的配置中将 cryostat.agent.api.writes-enabled 属性设为 true

双 HTTP 和 JMX 发现注册

如果 Cryostat 2.4 代理检测到目标应用程序上也配置了 JMX,代理会使用代理 HTTP API 定义和 JMX URL 定义将其发布到 Cryostat 服务器。在这种情况下,您可以使用您喜欢的任何配置选项。

没有依赖项的标准代理 JAR 文件

在 Cryostat 2.4 中,您可以选择使用包含代理代码的标准 JAR 文件部署 Cryostat 代理。如需更多信息,请参阅 选择代理 JAR 文件分发

选择代理 JAR 文件分发

Cryostat 2.4 分发 Cryostat 代理的 JAR 文件的两个不同变体。根据您的设置要求,您可以使用以下类型的代理 JAR 文件:

  • 一个自包含的 all-in-one "shaded" JAR 文件,其中包含代理代码及其所有依赖项

    这为现有应用程序中包含的 Cryostat 代理提供了最方便的形式,因为您只需要包含一个额外的代理 JAR 文件。

  • 包含没有依赖项的代理代码的标准 JAR 文件

    如果您知道代理和工作负载应用程序之间存在依赖项冲突,并且您要应用自己的策略来解决所有依赖项冲突,则这非常有用。

这会取代之前版本中的行为,它仅以全体"shaded" JAR 文件形式提供代理的一个分发。

代理可以注册到的服务器主机或 IP 地址范围的默认限制

Cryostat 2.4 引入了一个新的 cryostat.agent.baseuri-range 系统属性,可让您针对 Cryostat 代理向其公告自己的资源位置(URL)设置限制。Cryostat 代理可以使用 cryostat.agent.baseuri-range 属性来检查您在 cryostat.agent.baseuri 属性中指定的 URL 是否在可接受的主机名或 IP 地址范围内。

此功能有助于保护用户意外配置服务器的基本 URI,否则这可能会导致代理广告其自身到不正确的服务或您控制外的服务。服务器 URL 的错误配置可能会导致 Cryostat 代理实例的数据泄漏到集群外的服务,或者数据通过开放互联网路由。

根据您要应用的安全限制级别,您可以将 cryostat.agent.baseuri-range 属性设置为以下值:

  • loopback

    这提供了最高级别的限制。只有在服务器 URL 有地址(如 localhost127.0.0.1)时,代理才会连接到服务器

  • link_local

    这提供了第二个最高级别的限制。只有在服务器 URL 在本地链路范围内有地址或已在最高限制级别的地址时,代理才会连接到服务器。

  • site_local

    这提供了第三个最高级别的限制。只有在服务器 URL 具有 IPv6 "site-local" 或 IPv4 "private" 地址或已在更高限制级别的地址时,代理才会连接到服务器。

  • dns_local

    这提供了第四大的限制级别。只有服务器 URL 有带有 .local.localhost 后缀的地址或已在更高限制级别的地址时,代理才会连接到服务器。

    注意

    这是默认设置。这个限制级别适用于 Red Hat OpenShift Container Platform 中的 Cryostat 服务器和代理部署,因为 Cryostat 服务器通常被内部 OpenShift Service 地址引用,如 https://cryostat.my-namespace.svc.cluster.local

  • public

    这会删除任何限制。此设置与之前版本中的行为匹配代理可以连接到任何配置的主机或 IP 地址。

第 3 章 功能增强

Cryostat 2.4 包括基于 Cryostat 2.3 产品构建的功能增强。

显示 Cryostat 代理的拓扑视图增强

在 Cryostat web 控制台的 Topology 视图中,Cryostat 代理现在以 Cryostat 图标显示。这有助于将 Cryostat 代理与 JMX 目标区分开,它们仍然使用 OpenJDK Duke 图标显示。

拓扑和仪表板视图显示其他目标详情

Cryostat web 控制台的 Topology 和 Dashboard 视图现在显示目标 JVM 的以下额外信息类型:

  • 操作系统名称
  • 物理内存总量
  • swap 空间总量
  • 类路径
  • 库路径
  • 输入参数
  • 系统属性
注意

您可以使用以下方法之一查看此信息:

  • 在 Topology 面板中,点 twistie (>)图标展开到目标端点,然后点此端点的 Details 选项卡。
  • 在仪表板面板中,将 Target JVM Details 卡添加到仪表板中。

JFR 记录的 Auomated Analysis 增强

在 Cryostat 2.4 web 控制台中,JFR 记录的 Automated Analysis 信息可从自动分析仪表板卡中重复使用组件。这会取代之前版本中的行为,其中自动分析数据提供了一组有限的信息。

注意

要查看 JFR 记录的自动分析信息,请打开包含记录列表的任何面板,然后点击您感兴趣的记录旁边的 twistie (>)图标。

重启 JFR 记录的参数增强

在创建 JFR flight 记录时,如果同一目标上已存在具有相同名称的另一个记录,Cryostat 服务器通常拒绝创建记录的请求。客户端可以通过指定 request 参数来重新启动记录来修改此行为。

在以前的版本中,客户端可以在请求中包含 restart 参数来创建记录。restart 参数接受 truefalse 值,默认设置为 false。如果客户端请求包含 restart=false 设置,如果具有相同名称的另一个记录已存在,则 Cryostat 服务器会拒绝请求。如果客户端请求包含 restart=true 设置,则 Cryostat 服务器将停止、删除和重新创建具有相同名称的现有记录。

Cryostat 2.4 引入了一个新的 replace 参数,它取代之前版本中可用的 restart 参数。replace 参数接受 neverstopped 值。在这种情况下,一个 replace=always 与旧的 restart=true 行为匹配,而 replace=never 的设置与旧的 restart=false 行为匹配。replace=stopped 设置提供第三个类型的行为,方法是指示服务器仅在现有记录处于 STOPPED 状态时使用相同的名称重新创建记录。否则,如果客户端请求包含 replace=stopped 设置,但具有相同名称的现有记录处于另一个状态,服务器会拒绝请求。

此功能增强有助于避免启用自动规则重新创建 JFR 记录时,可能会导致丢失非存档数据,用于没有处于 STOPPED 状态的记录。

增强的错误和警告信息

Cryostat 2.4 包括对各种错误和警告信息的改进。

第 4 章 修复的问题

Cryostat 发行版本可能包括对在早期版本的 Cryostat 中发现的问题的修复。查看每个修复的问题备注,以了解此问题的说明和后续修复。

Cryostat 2.4 发行版本中解决了以下问题:

在较晚连接目标时规则激活失败

在 Cryostat 2.4 之前,Cryostat 可能无法在发现的 JVM 目标上触发自动规则。当发现机制(例如,OpenShift 端点查询)在容器中的 JVM 准备好接受传入的 JMX 请求之前,会出现这个问题。

Cryostat 2.4 通过对之前没有连接的目标 JVM 进行重新检查来解决这个问题,并在一个集合期间定期尝试触发规则。在这个版本中,有助于在更快时间内解决 Cryostat 和 JVM 之间的任何连接问题。在这个版本中,在启用或禁用规则之间切换时,避免意外的规则触发行为。

发现插件注册失败

在 Cryostat 2.4 之前,Cryostat 代理的实例可能无法与 Cryostat 服务器注册。尽管注册协议定义了有助于识别此类故障和重置注册的行为,但这些定义的行为也会在其他情况下失败。如果发生这两个失败,Cryostat 服务器会具有服务器被视为有效的无效代理注册记录。在这种情况下,代理可能会根据上一个注册失败的假设进一步尝试注册。但是,服务器会根据代理已经注册的假设拒绝代理再次注册。这让代理和服务器无法相互识别或重置注册状态。

Cryostat 2.4 解决了这个问题,并提供更可靠的代理发现注册。

由于代理实例不可用,服务器启动失败

在 Cryostat 2.4 之前,如果您关闭并重启 Cryostat 服务器,服务器可能无法成功重启。如果您关闭了具有有效代理注册记录的服务器,然后在不重启代理的情况下关闭这些代理实例,则会出现此问题。在这种情况下,在服务器启动时,服务器可能会看到预先存在的代理注册记录,并期望这些代理实例仍然存在。但是,由于代理不再可用,服务器启动随后会失败。

Cryostat 2.4 解决了这个问题。在这个发行版本中,在服务器启动时,如果不再可用的代理注册记录仍存在,服务器会删除这些注册记录,服务器会正常启动。

cryostat-reportsjfr-datasource对容器调整属性不需要覆盖

cryostat-reportsjfr-datasource 容器都使用 OpenJDK UBI 运行时镜像。在 Cryostat 2.4 之前,这些容器被错误地配置为覆盖基础镜像的入口点脚本执行的各种容器调整属性。

在 Cryostat 2.4 中,cry ostat-reportsjfr-datasource 容器不再覆盖 container-tuning 属性,这些参数现在处于活跃状态。

使用自动规则重启 flight 记录时,Truncation JFR 数据

在 Cryostat 2.4 之前,当客户端请求使用自动规则创建 JFR 记录时,这可能会导致为现有记录意外截断 JFR 数据。如果客户端请求包含 restart=true 设置,但具有相同名称的现有记录没有处于 STOPPED 状态,会出现这种情况。在这种情况下,服务器会自动停止、删除和重新创建记录,这会导致非存档记录数据丢失。

Cryostat 2.4 通过引入 replace 参数解决了这个问题,该参数会取代之前版本中提供的 restart 参数。当您定义自动规则来创建 JFR 记录时,您现在可以在客户端请求中包含 replace=stopped 设置。此设置指示服务器仅在现有记录处于 STOPPED 状态时才会重新启动 JFR 记录。如果现有记录处于另一个状态,如 RUNNING,服务器将拒绝请求。

由于小 CPU 限制,容器启动失败

在 Cryostat 2.4 之前,如果使用小 CPU 限制部署 Cryostat,容器可能无法启动。

Cryostat 2.4 通过确保即使使用小 CPU 限制部署 Cryostat,容器也可以启动来解决这个问题。

第 5 章 已知问题

有时,Cryostat 发行版本可能会包含一个红帽确认的问题或问题,并可能会在产品开发过程中在以后的阶段修复。查看每个已知问题的信息及其解决方案。

Cryostat 代理无法接受记录启动请求中的 ALL 事件模板

描述
在为使用 Cryostat 代理的目标 JVM 创建 JFR 记录时,如果您选择 ALL 事件模板,Cryostat 代理会返回 HTTP 400 错误。
临时解决方案

根据您的要求,您可以执行以下操作之一:

  • 如果要使用 ALL 事件模板,请使用目标 JVM 的 JMX 连接。
  • 如果要将 Cryostat 代理与目标 JVM 连接,请使用不同的事件模板,如 Profiling。

Red Hat Insights 集成在 ARM64 构架中失败

描述
在 Cryostat Operator 命名空间中,名称以 insights-proxy 开头的 pod 处于 ImagePullBackOff 错误状态。这是因为没有为 ARM64 架构构建用于此 pod 的 APICast 容器。但是,使用 Cryostat 代理的所有应用程序都应正常运行。
临时解决方案

禁用 Red Hat Insights 集成:

  1. 进入 Operators > Installed Operators
  2. 选择 Red Hat build of Cryostat operator。
  3. 选择 Subscription 选项卡。
  4. Actions 下拉菜单中选择 Edit Subscription
  5. INSIGHTS_ENABLED 环境变量添加到 Subscription 对象:

    apiVersion: operators.coreos.com/v1alpha1
    kind: Subscription
    metadata:
      name: cryostat-operator
      namespace: openshift-operators
    spec:
      config:
        env:
        - name: INSIGHTS_ENABLED
          value: “false”
      channel: stable
      installPlanApproval: Automatic
      name: cryostat-operator
      source: my-operator-catalog
      sourceNamespace: openshift-marketplace
      startingCSV: cryostat-operator.v2.4.0
  6. 点击 Save

这个临时解决方案在 Cryostat Operator 中禁用 Red Hat Insights 集成,它会删除 insights-proxy 部署。

第 6 章 与本发行版本相关的公告

以下公告已发布,以记录 Cryostat 2.4 发行版本中包含的程序错误修正和 CVE 修复:

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